NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #6 most downloaded on pub.dev
Versions and version constraints implementing pub's versioning policy. This is very similar to vanilla semver, with a few corner cases.
Last release 1 months ago
28 Aug 2026
Release timing varies
gaps range from 4 weeks to 1.6 years
Nearly every release is documented
notes for 28 of 29 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
30 releases · first in 2014
Fix parsing of pre-release and build identifiers to only treat pure-digit base-10 identifiers as integers, treating hexadecimal and signed identifiers
Remove dependency on package:meta.
package:meta.Version class as final instead of with @sealed.preRelease and build properties of Version and
the ranges property of VersionUnion should not be modified.VersionConstraint.any and VersionConstraint.empty static fields
shouldn't be reassigned and will be made final in a future release.One column per quarter.
Move to dart-lang/tools monorepo.
3.4.0.dart-lang/tools monorepo.- Added topics to pubspec.yaml.
pubspec.yaml.Add type parameters to the signatures of the Version.preRelease and Version.build fields (List ==> List ). #74.
Version.preRelease and
Version.build fields (List ==> List<Object>).
#74.Fix an exception when a subscription to a combineLatest stream is canceled while there is an ongoing asynchronous combine callback.
combineLatest stream is canceledFixed the version parsing pattern to only accept dots between version components.
Switched to using the Apache httpd mime.conf table as the source of truth for mime types. Mime type additions:
application/vnd.geogebra.slidesfont/collectionimage/jxlimage/vnd.dvb.subtitlevideo/mp2tapplication/x-font-otf => font/otfapplication/x-font-ttf => font/ttfapplication/x-font-woff => font/woffmodel/vnd.mtsapplication/inkml+xml, inkml => inkapplication/octet-stream, so => binapplication/onenote, onetoc2 => onetocapplication/pgp-signature, sig => ascapplication/tei+xml, teicorpus => teiapplication/vnd.adobe.fxp, fxpl => fxpapplication/vnd.clonk.c4group, c4u => c4gapplication/vnd.dece.data, uvvf => uvfapplication/vnd.dece.ttml+xml, uvvt => uvtapplication/vnd.eszigno3+xml, et3 => es3application/vnd.framemaker, maker => fmapplication/vnd.geometry-explorer, gre => gexapplication/vnd.grafeq, gqs => gqfapplication/vnd.ibm.modcap, listafp => afpapplication/vnd.iccprofile, icm => iccapplication/vnd.intercon.formnet, xpx => xpwapplication/vnd.kde.kpresenter, kpt => kprapplication/vnd.kde.kword, kwt => kwdapplication/vnd.kinar, knp => kneapplication/vnd.koan, skt => skpapplication/vnd.ms-project, mpt => mppapplication/vnd.palm, pqa => pdbapplication/vnd.quark.quarkxpress, qxt => qxdapplication/vnd.simtech-mindmapper, twds => twdapplication/vnd.stardivision.writer, vor => sdwapplication/vnd.sus-calendar, susp => susapplication/vnd.symbian.install, sisx => sisapplication/vnd.ufdl, ufdl => ufdapplication/vnd.visio, vsw => vsdapplication/vnd.zul, zirz => zirapplication/x-authorware-bin, x32 => aabapplication/x-blorb, blorb => blbapplication/x-cbr, cbz => cbrapplication/x-director, w3d => dirapplication/x-font-type1, pfm => pfaapplication/x-msdownload, msi => exeapplication/x-pkcs12, pfx => p12application/x-pkcs7-certificates, spc => p7bapplication/x-zmachine, z8 => z1application/xv+xml, xvml => mxmlaudio/basic, snd => auaudio/mpeg, mpga => mp3audio/vnd.dece.audio, uvva => uvaimage/tiff, tif => tiffimage/vnd.dece.graphic, uvvi => uviimage/x-freehand, fhc => fhmessage/rfc822, mime => emlmodel/mesh, silo => mshmodel/x3d+binary, x3dbz => x3dbmodel/x3d+vrml, x3dvz => x3dvmodel/x3d+xml, x3dz => x3dtext/troff, tr => ttext/uri-list, urls => uritext/x-fortran, for => fvideo/mj2, mjp2 => mj2video/vnd.dece.hd, uvvh => uvhvideo/vnd.dece.mobile, uvvm => uvmvideo/vnd.dece.pd, uvvp => uvpvideo/vnd.dece.sd, uvvs => uvsvideo/vnd.dece.video, uvvv => uvvvideo/vnd.uvvu.mp4, uvvu => uvuvideo/x-ms-asf, asx => asfVersion.canonicalizedVersion to help scrub leading zeros and highlight
that Version.toString() preserves leading zeros.Version with @sealed to discourage users from implementing the
interface.Version.primary now throws StateError if the versions argument is empty.
Version.primary now throws StateError if the versions argument is empty.Nothing published for this version
Fix a bug of VersionRange.union where ranges bounded at infinity would get combined wrongly.
VersionRange.union where ranges bounded at infinity would get
combined wrongly.>=2.0.0 <3.0.0.package:collection constraint to ^1.0.0.Nothing published for this version
* Set max SDK version to <3.0.0.
<3.0.0.Fix a bug where there upper bound of a version range with a build identifier could accidentally be rewritten.
Add a Version.firstPreRelease getter that returns the first possible pre-release of a version.
Add a Version.firstPreRelease getter that returns the first possible
pre-release of a version.
Add a Version.isFirstPreRelease getter that returns whether a version is the
first possible pre-release.
new VersionRange() with an exclusive maximum now replaces the maximum with
its first pre-release version. This matches the existing semantics, where an
exclusive maximum would exclude pre-release versions of that maximum.
Explicitly representing this by changing the maximum version ensures that all
operations behave correctly with respect to the special pre-release semantics.
In particular, it fixes bugs where, for example,
(>=1.0.0 <2.0.0-dev).union(>=2.0.0-dev <2.0.0) and
(>=1.0.0 <3.0.0).difference(^1.0.0) wouldn't include 2.0.0-dev.
Add an alwaysIncludeMaxPreRelease parameter to new VersionRange(), which
disables the replacement described above and allows users to create ranges
that do include the pre-release versions of an exclusive max version.
Fix more bugs with VersionRange.intersect(), VersionRange.difference(), and VersionRange.union() involving version ranges with pre-release maximums.
VersionRange.intersect(), VersionRange.difference(),
and VersionRange.union() involving version ranges with pre-release maximums.Fix a bug where constraints that only allowed pre-release versions would be parsed as empty constraints.
Fix a bug where VersionRange.intersect() would return incorrect results for pre-release versions with the same base version number as release versions
VersionRange.intersect() would return incorrect results for
pre-release versions with the same base version number as release versions.Fix a bug where VersionRange.allowsAll(), VersionRange.allowsAny(), and VersionRange.difference() would return incorrect results for pre-release versi
VersionRange.allowsAll(), VersionRange.allowsAny(), and
VersionRange.difference() would return incorrect results for pre-release
versions with the same base version number as release versions.Fix a bug where VersionRange.difference() with a union constraint that covered the entire range would crash.
VersionRange.difference() with a union constraint that
covered the entire range would crash.Fix a checked-mode error in VersionRange.difference().
VersionRange.difference().* Fix a new strong mode error.
Make the VersionUnion class public. This was previously used internally to implement new VersionConstraint.unionOf() and VersionConstraint.union(). No
Make the VersionUnion class public. This was previously used internally to
implement new VersionConstraint.unionOf() and VersionConstraint.union().
Now it's public so you can use it too.
Added VersionConstraint.difference(). This returns a constraint matching all
versions matched by one constraint but not another.
Make VersionRange implement Comparable<VersionRange>. Ranges are ordered
first by lower bound, then by upper bound.
Fix all remaining strong mode warnings.
Addressed three strong mode warnings.
Make the package analyze under strong mode and compile with the DDC (Dart Dev Compiler). Fix two issues with a private subclass of VersionConstraint h
VersionConstraint
having different types for overridden methods.Allow version ranges like >=1.2.3-dev.1 <1.2.3 to match pre-release versions of 1.2.3. Previously, these didn't match, since the pre-release versions
>=1.2.3-dev.1 <1.2.3 to match pre-release versions
of 1.2.3. Previously, these didn't match, since the pre-release versions had
the same major, minor, and patch numbers as the max; now an exception has been
added if they also have the same major, minor, and patch numbers as the min
and the min is also a pre-release version.Add a VersionConstraint.union() method and a new VersionConstraint.unionOf() constructor. These each return a constraint that matches multiple existin
Add a VersionConstraint.union() method and a new VersionConstraint.unionOf() constructor. These each return a constraint that
matches multiple existing constraints.
Add a VersionConstraint.allowsAll() method, which returns whether one
constraint is a superset of another.
Add a VersionConstraint.allowsAny() method, which returns whether one
constraint overlaps another.
Version now implements VersionRange.
Add a deepCopyLinks argument to copyPath and copyPathSync .
deepCopyLinks argument to copyPath and copyPathSync.@visibleForTesting annotation from SharedStdIn.SharedStdIn.new.
AnsiCode and AnsiCodeType marked final. ThesefinalexpectApiSummaryClean, ApiSummaryFormat, andApiSummaryVerificationException to support one-liner golden file verificationdart test (e.g. test('api_summary', expectApiSummaryClean);).--write (-w), --check (-c), and --output (-o) flags to theapi_summary CLI executable.Add support for the ^ operator for compatible versions according to pub's
notion of compatibility. ^1.2.3 is equivalent to >=1.2.3 <2.0.0; ^0.1.2
is equivalent to >=0.1.2 <0.2.0.
Add Version.nextBreaking, which returns the next version that introduces
breaking changes after a given version.
Add new VersionConstraint.compatibleWith(), which returns a range covering
all versions compatible with a given version.
Add a custom VersionRange.hashCode to make it properly hashable.
Initial stable release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →