Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
June 08, 2013 can we detect at compile time module ctor/dtor cycles ? | ||||
---|---|---|---|---|
| ||||
Attachments:
| Why can't we detect at compile time module ctor/dtor cycles (instead of runtime) ? See example below. It should be easy to detect the chain at CT: algo: build graph from import dependencies a=>b if module a imports module b. mark as red the modules that have a ctor collapse each non-red node into its parent (and update parent's edges) detect cycles (eg BFS) (same with dtor) ---- a1: import a2; void main(){} static this(){} a2: import a3; static this(){} a3: import a1; ---- rdmd --force --build-only -oftest a1 #works ./test #error: object.Exception@src/rt/minfo.d(243): Aborting: Cycle detected between modules with ctors/dtors: a1 -> a2 -> a3 -> a1 |
June 18, 2013 Re: can we detect at compile time module ctor/dtor cycles ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timothee Cour | On Saturday, 8 June 2013 at 06:31:14 UTC, Timothee Cour wrote:
> Why can't we detect at compile time module ctor/dtor cycles (instead of
> runtime) ?
No idea, but I've wondered this myself too. After all "imports" are a static feature and all are known at compile-time.
|
June 18, 2013 Re: can we detect at compile time module ctor/dtor cycles ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrej Mitrovic | Andrej Mitrovic:
> No idea, but I've wondered this myself too. After all "imports" are a static feature and all are known at compile-time.
rdmd is used often in a situation where it knows all the modules of a program. So it must be able to detect those cycles. It seems an enhancement request for rdmd. Maybe a similar enhancement is possible for dmd, because there are plans to make the D compiler able to find all the modules it needs to compile a program.
Bye,
bearophile
|
June 18, 2013 Re: can we detect at compile time module ctor/dtor cycles ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile Attachments:
| On Mon, Jun 17, 2013 at 5:11 PM, bearophile <bearophileHUGS@lycos.com>wrote: > Andrej Mitrovic: > > > No idea, but I've wondered this myself too. After all "imports" are a >> static feature and all are known at compile-time. >> > > rdmd is used often in a situation where it knows all the modules of a program. So it must be able to detect those cycles. It seems an enhancement request for rdmd. Maybe a similar enhancement is possible for dmd, because there are plans to make the D compiler able to find all the modules it needs to compile a program. > > Bye, > bearophile > why do the email threads keep splitting up again? Anyways, on the original thread 'can we detect at compile time module ctor/dtor cycles ?', Steven Schveighoffer raised the concern that di files may have certain private imports not written in the di file, to which I answered we can at least attempt cycle detection at compile time (which won't catch all cases) followed by cycle detection at runtime. |
June 18, 2013 Re: can we detect at compile time module ctor/dtor cycles ? | ||||
---|---|---|---|---|
| ||||
On 6/18/13, Timothee Cour <thelastmammoth@gmail.com> wrote: > why do the email threads keep splitting up again? I answered through DForum, but the email thread was already split-up (it had 0 replies). See here: http://forum.dlang.org/thread/mailman.961.1370673073.13711.digitalmars-d-learn@puremagic.com Interestingly now the other thread showed up: http://forum.dlang.org/thread/CANri+Ex8ZwYxtp5h+1FT-cve3SNbUze6CdUF10zHoC2=Rc4mPw@mail.gmail.com Oh well. |
Copyright © 1999-2021 by the D Language Foundation