| Thread overview | ||||||||
|---|---|---|---|---|---|---|---|---|
|
August 17, 2008 Is the module system in D fundamentally flawed? | ||||
|---|---|---|---|---|
| ||||
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. | ||||
August 17, 2008 Re: Is the module system in D fundamentally flawed? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to z | 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.)
| |||
August 17, 2008 Re: Is the module system in D fundamentally flawed? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to z | 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 | |||
August 17, 2008 Re: Is the module system in D fundamentally flawed? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to z | 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.
| |||
August 18, 2008 Re: Is the module system in D fundamentally flawed? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to torhu | "torhu" <no@spam.invalid> wrote in message news:g8a6iu$kg$1@digitalmars.com... >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. 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. | |||
August 18, 2008 Re: Is the module system in D fundamentally flawed? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Jarrett Billingsley | Jarrett Billingsley wrote:
> "torhu" <no@spam.invalid> wrote in message news:g8a6iu$kg$1@digitalmars.com...
>> 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.
>
> 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.
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.
Sean
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply