Walter Bright wrote:
The extra complexity is in the container supporting very different ways to do the same thing.


A I understand from the current discussion, interfaces meet a strong debate. And yes, I also understand that the interfaces are considered unnecessary bloat that makes execution speed slower which is critical for performance.
Personally, I think they should be accessible.

But, can there be a compromise to satisfy both sides?

To illustrate the idea:
C# has a feature called "Partial types".
A little excerpt from C# 4.0 specs(page 285):
The partial modifier indicates that additional parts of the type declaration 
may exist elsewhere, but the existence of such additional parts is not a 
requirement;

I see as a potential benefit for the D to have some sort of it.

For those who need templates for speed, or any other motive:

1. Import .di header with needed partial declaration of the required type.
2. The compiler injects exactly the code generated from the implementation of the header and nothing more.

For those who need interfaces for the reasons of maintainability, compatibility and interoperability:

1. Import .di header with needed partial declaration of the required type interfaces. 2. The compiler injects exactly the code generated from the implementation of the header or links with the provided library with the exact implementation.

The user source includes required .di header, which declares partial type declarations. The specified partial types from the header may have the implementation, but this should not be a requirement. In case of partially not implemented type the user gets 'not implemented' error, linkage fault, or something similar.

Is there a possibility for such solution?


--
Alex Makhotin,
the founder of BITPROX,
http://bitprox.com

Reply via email to