> Interesting.  I'm not sure what cyclic module dependencies means.  I do know 
> some package managers (not go) boast of having a "solid transitive dependency 
> model".  I hope that any cycles in modules dependencies are either avoided or 
> treated in a very clear simple way by go's modules.

In my experience report I explain how the situation comes about in the
case of GopherJS. The "reverse" dependency (i.e. the one that makes
the cycle) is, I suspect, typically (always?) going to be something to
do with testing.

> Unfortunately, my concrete example is lost in sands of time, so I can only 
> give a rough idea.  I had cyclic module dependencies, somewhat unintended, 
> but it crept in via some test case.  I was playing with 111 or late 111 
> release candidate with it and asked it to rebuild go.mod at an untagged HEAD 
> (I think) that was a few commits ahead of say v0.1.2.  Then go.mod had that 
> my module required v0.1.1 of itself in go.mod "indirectly".  All I could 
> figure out was that the module dependency cycle A -> B -> A had B depending 
> on an older version of A via a test case.

I suppose you could say that transitively this module depends on the
same major version of itself, yes.

The same is true in my experience report. And it's by definition that
you end up with a reference to and "older" version because of the
existence dependence of the modules.

But because of semantic import versioning (i.e. same major version in
this situation) and compatibility within that major version,
everything works out, even when running go test all from either of the
modules involved in the cycle.

I found this easiest to reason about by looking at the process
involved with _introducing_ the submodule in the GopherJS repo that
creates the cycle:

https://gist.github.com/myitcv/79c3f12372e13b0cbbdf0411c8c46fd5#the-process


Paul

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to