DescriptionRestrict the version constraints on exported dependencies.
This avoids a versioning issue where an exported dependency adds a
feature and the exporting package's users' version constraints become
invalidated.
For example, suppose unittest 1.0.0 and matcher 1.0.0 exist. unittest
has the constraint "matcher: '>=1.0.0 <2.0.0'" and exports matcher.
Then matcher 1.1.0 is released with a new feature, and a user writes a
new package, mypkg, which uses that feature. As per common practice,
this package has the version constraint "unittest: '>=1.0.0 <2.0.0'"
and no constraint on matcher. This constraint allows matcher 1.0.0,
which doesn't support the new feature; this is a problem.
Under the new scheme, unittest would have the constraint "matcher:
'>=1.0.0 <1.1.0'". Then when matcher 1.1.0 is released, unittest 1.1.0
would be released as well with the constraint "marcher: '>=1.1.0
<1.2.0'".
The tight lower bound ensures that the constraint "unittest: '>=1.1.0
<2.0.0'" properly selects only versions of matcher that have features
available in the version the user is testing against. The tight upper
bound ensures that new features in a new version of matcher won't
become available in unittest without a version upgrade.
R=jmesserly@google.com, rnystrom@google.com
Committed: https://code.google.com/p/dart/source/detail?r=42223
Patch Set 1 #
Total comments: 1
Messages
Total messages: 7 (2 generated)
|