Nick Sabalausky wrote: > Ultimately, I think going with a rake/scons-like build-system approach just > allows for a little bit more boilerplate to be removed, which is good for > something like a buildscript. For example, if done as a library, once you've > defined all your targets, you'd have to call some function to actually do > the build. As a build system, defining the targets is all you need to do, > and the build gets invoked automatically. It's kinda like how dmain() calls > the user's main() instead of the work inside dmain() being a library > functions that the main() author needs to call. Plus, as a build-system, the > "void main(string[] args) {" part can eventually be removed (once sticking > normally-module-level things inside a function is mature enough, if it isn't > already).
It is not mature at all. Module-level things inside functions do not currently work well: Eg: - No forward references. - No forward references, reloaded: void main(){ int foo(); int bar(){return foo();} // ok int foo(){return 100;} // nope, *!* this is called a "redefinition" *!* } - No (template) overloading: void main(){ int foo(int x){return x;} double foo(double x){return x;} // nope int bar(int x)(){return x;} double bar(double x)(){return x;} // nope } Those limitations are very itchy (at least for the kind of stuff I'd like to be doing), and should be removed. Cheers, -Timon