> so I couldn't have different namespaces (on different levels) in > single directory, and this also forces me to match file > name with module name.
No, it doesn't. You're right that it splits when it searches, but it doesn't *have* to search. If you use the module declaration at the top of the file and manually list the files on the command line, the file and directory names don't matter. a.d ==== import cool.wtf; void main() {} ==== b.d ==== module cool.wtf; ==== dmd a.d b.d # works!