All notable changes to this package are documented here.
- Added
VersionInfoPlugin, a Swift Package Manager build tool plugin that generates static Git version information for a target. - Added generated
versionsdata withhead,heads, andtags. - Added support for loose Git refs, packed refs,
.gitfiles withgitdir:indirection, symbolicHEAD, detachedHEAD, and nested ref names. - Added the
VersionInfolibrary product. - Added
Version, a tuple typealias matching the generated ref shape. - Added
SemanticVersionwith strict parsing formajor.minor.patch, prerelease identifiers, and build metadata. - Added
Codable,Comparable,Hashable,RawRepresentable,LosslessStringConvertible,ExpressibleByStringLiteral, andSendablesupport forSemanticVersion. - Added
SemanticVersion.isCompatible(with:). - Added the
version-info-genexecutable product. - Added unit, integration, regression-prepared, and user acceptance test coverage using Swift Testing.
- Added DocC documentation and a release-focused README.
- Added GitHub community files, issue templates, pull request template, security policy, and contribution guide.
- Added GitHub Actions validation for pull requests, tags, and releases.
- Added Swift Package Index configuration for hosted DocC documentation.
- Build metadata is preserved for display and encoding, but it is not used for equality, hashing, or ordering. This follows SemVer precedence rules.
- The plugin reads Git metadata at build time and does not add a runtime Git dependency to consumer applications.
- The library and generated Swift source are intended for cross-platform Swift
targets, including Linux, Android, and WebAssembly/WASI. Linux testing and
Android/Wasm cross-builds are release gates for the
1.0.0tag.