Fixing cyclic import static construction problems
Jonathan M Davis
jmdavisProg at gmx.com
Thu Nov 29 04:17:12 PST 2012
On Thursday, November 29, 2012 12:39:19 Paulo Pinto wrote:
> On Thursday, 29 November 2012 at 03:19:55 UTC, Andrei
>
> Alexandrescu wrote:
> > On 11/28/12 9:34 PM, Walter Bright wrote:
> >> For discussion:
> > [snip]
> >
> > I'd say we better finish const, immutable, and shared first.
> >
> > Andrei
>
> +1
>
> Fully agree.
>
> Cyclic imports are a minor nuisance that can be easily solvable
> with better code architecture.
>
> Turbo Pascal/Delphi is the only language that I know fully allows
> cyclic dependencies between modules. So this is not that
> important for most people.
Basic features in the language require static constructors (e.g. static
variables frequently do), and some things just can't be done without them.
Andrei's std.benchmark proposal actually doesn't work, because in order to do
what it does, in needs to mixin in a static constructor and static destructor
(to set up the benchmarking and record it at the end, I believe). That
completely falls apart due to cyclical imports. It doesn't actually cause any
true circular dependencies, but it's treated as such anyway. A _lot_ of us
have run into this problem and a number of us consider it to be a huge design
problem in the language. Personally, I'd put it towards the top of design
mistakes at this point, and I'm very glad to see Walter actually finally being
willing to do something about this. In the past when I've brought up similar
solutions, he's been completely opposed to them.
Yes, we have other major issues that need to be resolved, and those may very
well be of a higher priority, but this is still a very import issue, and it's
the sort of issue that can probably be implemented with minimal effort. The
main thing is getting Walter to agree to it and how it will be done. Once a
decision is made, it wouldn't surprise me if someone like Kenji were able to
get it done very quickly.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list