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

Reply via email to