digitalmars.D - Is the module system in D fundamentally flawed?
- z (16/16) Aug 17 2008 In Java I don't remember seeing "forward reference to XXX" compiler erro...
- BCS (8/15) Aug 17 2008 I think this is a bug. At some point the docs say that order doesn't mat...
- bearophile (6/6) Aug 17 2008 Yes, the D module system has some bugs/problems, here some more, now I t...
- torhu (12/14) Aug 17 2008 There are several bug reports relating to this problem, so it's a well
- Jarrett Billingsley (5/12) Aug 17 2008 I'm sorry, but after dealing with this for 4 years, I've come to disrega...
- Sean Kelly (5/18) Aug 18 2008 Forward references are illegal in D :-) This was the first thing I
In Java I don't remember seeing "forward reference to XXX" compiler error just because I 'import' some package, but why in D there are so many such stupid message? And a google search also find so many bugs associated with "forward reference" http://www.google.com/search?hl=en&q=forward+reference+to++site%3Apuremagic.com&btnG=Google+Search So I just wondering what's the fundamental difference between D module and Java's package system? Is the module system in D fundamentally flawed? I think in modern languages such as Python, Java, all the imports should JUST WORK. But obviously it's not the case in D. A compiler error like this is just ridiculous: if the compiler can detect such "forward reference", why can't it just "import" it? and why it need to report to the programmer, and have to ask the programmer to manually fix it? Anyone can give a summary, or guilelines on how to live with D's module system to avoid some common mistakes. Thanks.
Aug 17 2008
Reply to z,In Java I don't remember seeing "forward reference to XXX" compiler error just because I 'import' some package, but why in D there are so many such stupid message? And a google search also find so many bugs associated with "forward reference"I think this is a bug. At some point the docs say that order doesn't matter, but based on this issue, it does. I've complained about this and even suggested ways to build a compiler that basically can't have forward reference errors but nothing has happened. IIRC the comment I got back was to the effect of "to hard" or "can't be done" (hint: it can be done, I'm currently working on a compiler [that is working] that needs to resolve forward reference before it can fully lex some things.)
Aug 17 2008
Yes, the D module system has some bugs/problems, here some more, now I think it's essentially an unfinished work: http://www.digitalmars.com/d/archives/digitalmars/D/Modules_65730.html That post if from some time ago, in the meantime I have found two more problems in the current module system. The first step to solve a problem is to recognize that a problem exists. I know that then solving them may be difficult (and sometimes almost impossible) but recognizing that they exist is necessary. Bye, bearophile
Aug 17 2008
z wrote:Anyone can give a summary, or guilelines on how to live with D's module system to avoid some common mistakes.There are several bug reports relating to this problem, so it's a well known issue. I suppose Walter doesn't see it as a high priority right now, since you can always work around it. And getting D 2.0 out done is more pressing. But yes, it does suck. It's one of those things you can hardly believe the first time you see it. Or the second or third. You just need to learn to live with it. Sooner or later it will have to get fixed. You can try to be diciplined about how your import tree looks like, that's my best suggestion. Try to avoid circular imports. Sometimes you need to some move code into a module of its own, etc. Just document it as a workaround, and change it back when time comes.
Aug 17 2008
"torhu" <no spam.invalid> wrote in message news:g8a6iu$kg$1 digitalmars.com...z wrote:I'm sorry, but after dealing with this for 4 years, I've come to disregard "putting everything into one module" as a valid workaround. Forward references should not exist, I don't care how hard they are to get rid of.Anyone can give a summary, or guilelines on how to live with D's module system to avoid some common mistakes.There are several bug reports relating to this problem, so it's a well known issue. I suppose Walter doesn't see it as a high priority right now, since you can always work around it.
Aug 17 2008
Jarrett Billingsley wrote:"torhu" <no spam.invalid> wrote in message news:g8a6iu$kg$1 digitalmars.com...Forward references are illegal in D :-) This was the first thing I tried as a workaround for this compiler issue. It can make designing interdependent code a bit dicey at times. Seanz wrote:I'm sorry, but after dealing with this for 4 years, I've come to disregard "putting everything into one module" as a valid workaround. Forward references should not exist, I don't care how hard they are to get rid of.Anyone can give a summary, or guilelines on how to live with D's module system to avoid some common mistakes.There are several bug reports relating to this problem, so it's a well known issue. I suppose Walter doesn't see it as a high priority right now, since you can always work around it.
Aug 18 2008