In this post, I present a simple rule of thumb that covers most cases of the 
common decision: should a feature go in the compiler, or in the standard 
library?

Note: this only applies to features that aren't in C.

1) If it's a word, put it in the standard library.
2) Otherwise, put it in the compiler.

For example:

assert() -> library.
complex -> library.
void -> C-derived, compiler.
real -> C-derived via long float, compiler.
cfloat -> library.
for -> compiler.
foreach -> library.
T[] -> compiler.
T.dup, T.sort, T.reverse -> library.

I would consider this change more important than all the multithreading 
improvements made in D2 to date, _maybe_ more important than the const features.

The justification for this change is that words can be trivially looked up in 
the documentation, thus they aren't deserving of a place in the minimal working 
set of language features.

As it stands, the claim on the homepage that it's easier to implement a D 
compiler than a C++ one is highly dubious. This rule, consistently applied, 
would help bring back some of the simplicity that was lost during the D2.0 
feature frenzy.

Your thoughts?

Reply via email to