On Thu, 04 Nov 2010 09:32:35 -0400, simen <[email protected]> wrote:
I tried D some years ago and liked it's ideas but thought it too soon to
jump in then.
Call this try once.
Then I came back about a year ago to try D version 2 and again found it
also too early to jump in, but, admittedly, still liking the D concept.
IIRC the reason I dropped out the second time was then to do with
cyclic dependency problems that emerged when I tried converting a Java
project to D just for fun.
Call this try twice.
A year later I try D version 2 to see if it has improved. Porting some
rather simple Java code to D and compiling it without error, I am
initially impressed that the SLOC metric is much smaller than the
original Java code. So far, so good until running the simple app, the
same runtime error message surfaces as per my second attempt a year ago:
object.Exception: Cyclic dependency in module test
Call this try twice again and now thrice shy.
From what can glean this does not need a new bug report being a known
and still uncorrected problem.
It is likely the cyclic dependency problem will not be solved. The
granularity is too coarse -- if two modules contain static constructors,
and they depend on eachother, then there is a cycle. It doesn't matter if
the static constructors don't access data from other modules.
There are two options I can think of for solutions. First is to add
syntax to indicate the lack of dependency. This is unlikely to happen,
but probably the only true solution. If someone can come up with some
reasonable syntax, it might be considered.
Second is to have the compiler create a true dependency tree based on what
variables are accessed. This would most likely involve creating a custom
object format (and linker), and is akin to full escape analysis. This is
*very* unlikely to happen unless someone wants to do all the work on their
own.
For now, there are probably workarounds you can use to alleviate the
problem. I can't really say how you can apply them without some example of
your code.
There is also the issue of a cryptic error message. "Cyclic dependency in
module test" gives you almost no information. This is an issue I hope to
solve, when I have some spare time. I have already tried to solve it but
ran into some severe bugs, but I can work around those bugs for now.
-Steve