Circular dependencies in Phobos
Jakob Ovrum via Digitalmars-d
digitalmars-d at puremagic.com
Sun Jan 3 08:52:28 PST 2016
On Sunday, 3 January 2016 at 15:46:55 UTC, tsbockman wrote:
> How important is it to avoid circular dependencies in Phobos?
>
> I'm wondering because I have divided my work-in-progress
> std.checkedint module into various submodules to make it easier
> for people to import only the part they actually want to use.
Splitting modules into a circular package retains *some* of the
benefits of split modules, like the smaller namespace in
importing modules: while the whole tree is recursively pulled in,
the user chooses which symbols to make available in the importing
module. In D we have a number of conflict resolution mechanisms,
including selective imports, so I don't count this as
particularly useful.
The real benefits come when the split modules form a clean,
non-circular dependency graph. Then we get the good stuff like
faster compile times and smaller executables, can be understood
in chunks etc.
I'm personally not a fan of circular modules, but I don't have
strong opinions about them. In Phobos we have a number of modules
with poor granularity that could be split into clean dependency
trees. I don't know what to do, if anything, about circular
modules that *can't* reasonably be split up as such.
More information about the Digitalmars-d
mailing list