Go modules can use the listed version or later minor versions. So if B
depends on v1.11 of A, then it can also work with v1.12 of A. Therefore a
valid set of versions for the build is A v1.12 and B v1.3.

On Mon, Sep 10, 2018 at 1:28 AM Scott Cotton <w...@iri-labs.com> wrote:

> Well, ok.
>
> Did you mean if A v1.12 of a module depends on v1.3 of B which depends on
> v1.11 of A?
>
> So go modules don't actually necessarily depend on the listed
> dependencies?
>
> That is quite counteruintintive to me.
>
> It is much simpler in any case to use acyclic dependencies.
>
> Scott
>
> On 10 September 2018 at 04:25, Sameer Ajmani <sam...@golang.org> wrote:
>
>> I think there's a disconnection between how you and I understand this
>> system works. In a given build, there is only a single version of a module;
>> there cannot be multiple copies, let alone many copies.So if v1.11 of
>> module A depends on v1.3 of module B, which in turn depends on v1.12 of
>> module A, then the build will choose A v1.12. The is only one version of A
>> in the build.
>>
>> On Sun, Sep 9, 2018 at 1:40 PM Scott Cotton <w...@iri-labs.com> wrote:
>>
>>> Hi Sameer,
>>>
>>> Thanks for asking, here are some thoughts,
>>>
>>> With time, this could create man many many copies of (different
>>> versions) of a module.
>>> this would slow down fetch, storage, compilation, etc potentially a lot,
>>> and it would only
>>> get worse and worse over time.
>>>
>>> if a security patch is applied to the most recent version in a
>>> version-compatible space of
>>> a module that depends on an earlier version of itself, then the security
>>> hole may still exist.
>>> Moreover, if the SCC of module dependencies is outside the control of
>>> the authors of the
>>> module being patched, it seems there is might be no way they could
>>> propagate the patch
>>> without editing history, which violates the very notion of versioning to
>>> begin with.
>>>
>>> The notion of software moving forward by versioning is in part an
>>> increase in reliability,
>>> not just security patches, so I would be frightened to use cyclic
>>> modules even in code
>>> for which I were certain there would be no security patches (like fixed
>>> memory, known cpu bounds
>>> math algorithms for example)
>>>
>>> Other than that, it is to me very confusing and counter-intuitive that a
>>> version of some software
>>> depend on a previous version of itself.  Maybe I'm missing something in
>>> the modules
>>> specification or vision, and maybe, (even hopefully) I am wrong about
>>> these concerns.
>>>
>>> I could list more related ideas, but given that I might be wrong I'll
>>> leave it at that.
>>>
>>> Thanks,
>>>
>>> Scott
>>>
>>>
>>> On 9 September 2018 at 19:19, Sameer Ajmani <sam...@golang.org> wrote:
>>>
>>>> If a module depends on an earlier version itself, and successive
>>>> versions are backwards compatible, why is it not OK for the current version
>>>> to satisfy that dependency?
>>>>
>>>> On Sun, Sep 9, 2018 at 1:13 PM Scott Cotton <w...@iri-labs.com> wrote:
>>>>
>>>>> Hi Sameer,
>>>>>
>>>>> When I had a module self-dependency, I considered the fact that it
>>>>> worked a bug.  I had not followed
>>>>> closely enough til this discussion to think of it as expected.
>>>>>
>>>>> As someone who has a tendency to often ask themself: "worse case how
>>>>> can this be a problem?"
>>>>>
>>>>> the list is indeed long and severe for modules which depend on
>>>>> themselves backwards in time.
>>>>>
>>>>> For cyclic dependencies which are somehow synchronised so that there
>>>>> is no backwards in time
>>>>> propagation, my impression would be "that's complicated", but I can't
>>>>> see offhand how it would be
>>>>> as problematic as backward in time self dependencies.
>>>>>
>>>>> Scott
>>>>>
>>>>>
>>>>>
>>>>> On 9 September 2018 at 18:38, Sameer Ajmani <sam...@golang.org> wrote:
>>>>>
>>>>>> With respect to errors, I'm asking how things failed when you had a
>>>>>> cyclic module dependency. My expectation is that this should just work. 
>>>>>> If
>>>>>> your module 0.12 has a dependency on itself with min version 0.11, then
>>>>>> 0.12 satisfies that dependency (as long as it's following the import
>>>>>> compatibility rule, which isn't necessarily expected for pre-1.0 
>>>>>> modules).
>>>>>>
>>>>>> On Sun, Sep 9, 2018 at 9:10 AM Scott Cotton <w...@iri-labs.com> wrote:
>>>>>>
>>>>>>> Hi Sameer,
>>>>>>>
>>>>>>> I don't know what is considered an error and not an error with
>>>>>>> cyclic module dependencies.
>>>>>>>
>>>>>>> Honestly, it makes my head hurt and simply requires too much thought
>>>>>>> that I'd rather spend on the code.
>>>>>>>
>>>>>>> For example, I don't want to think what will happen to some SCC in a
>>>>>>> module dependency graph after
>>>>>>> a decade of development, in particular if a module can depend on an
>>>>>>> earlier version of itself.
>>>>>>>
>>>>>>> Scott
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 9 September 2018 at 14:19, Sameer Ajmani <sam...@golang.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Are you seeing errors when there are cyclic module dependencies? As
>>>>>>>> I recall, cyclic dependencies between modules (not packages) must be
>>>>>>>> allowed:
>>>>>>>> https://research.swtch.com/vgo-mvs
>>>>>>>> "Note that F 1.1 requires G 1.1, but G 1.1 also requires F 1.1.
>>>>>>>> Declaring this kind of cycle can be important when singleton 
>>>>>>>> functionality
>>>>>>>> moves from one module to another. Our algorithms must not assume the 
>>>>>>>> module
>>>>>>>> requirement graph is acyclic."
>>>>>>>> On Sun, Sep 9, 2018 at 7:58 AM Scott Cotton <w...@iri-labs.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi Paul,
>>>>>>>>>
>>>>>>>>> On 9 September 2018 at 13:44, Paul Jolly <p...@myitcv.io> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Scott,
>>>>>>>>>>
>>>>>>>>>> > Should cyclic module dependencies be allowed?
>>>>>>>>>>
>>>>>>>>>> Yes, indeed in some situations they are totally necessary.
>>>>>>>>>>
>>>>>>>>>> I wrote up an experience report on this very topic:
>>>>>>>>>> https://gist.github.com/myitcv/79c3f12372e13b0cbbdf0411c8c46fd5
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 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.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> > Should a module, following a cycle, be able to depend on an
>>>>>>>>>> earlier version of itself? (I saw this once...)
>>>>>>>>>>
>>>>>>>>>> I can't see how this would work; indeed I can't even unravel it
>>>>>>>>>> in my
>>>>>>>>>> head! Do you have a concrete example to help explain?
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 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.
>>>>>>>>>
>>>>>>>>> Scott
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Paul
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Scott Cotton
>>>>>>>>> President, IRI France SAS
>>>>>>>>> http://www.iri-labs.com
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> 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.
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Scott Cotton
>>>>>>> President, IRI France SAS
>>>>>>> http://www.iri-labs.com
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Scott Cotton
>>>>> President, IRI France SAS
>>>>> http://www.iri-labs.com
>>>>>
>>>>>
>>>>>
>>>
>>>
>>> --
>>> Scott Cotton
>>> President, IRI France SAS
>>> http://www.iri-labs.com
>>>
>>>
>>>
>
>
> --
> Scott Cotton
> http://www.iri-labs.com
>
>
>

-- 
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