From 6dab60e4bb9fa8d205ed718ffb3d4b0dfa146137 Mon Sep 17 00:00:00 2001 From: Mihaela Mihaljevic Date: Fri, 5 Jun 2026 14:11:27 +0200 Subject: [PATCH] docs(release): prepare 0.1.0 notes --- CHANGELOG.md | 2 + README.md | 2 + docs/RELEASE.md | 89 +++++++++++++++++++++++++++++++++ docs/releases/pureyaml-0-1-0.md | 59 ++++++++++++++++++++++ 4 files changed, 152 insertions(+) create mode 100644 docs/RELEASE.md create mode 100644 docs/releases/pureyaml-0-1-0.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 4200781..df23a37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.0] - 2026-06-05 + ### Added - Bootstrap PureYAML as a root Swift package with no external dependencies. diff --git a/README.md b/README.md index af9b770..62cd8cc 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,8 @@ but it does not copy their implementation into `Sources/`. See cross-platform gates. - [Migration and support boundaries](docs/MIGRATION.md): what PureYAML can replace today and which YAML features are deliberately unsupported. +- [Release process](docs/RELEASE.md): 0.1.0 checklist, verification commands, + tag commands, and release-publishing steps. ## Usage diff --git a/docs/RELEASE.md b/docs/RELEASE.md new file mode 100644 index 0000000..83697d1 --- /dev/null +++ b/docs/RELEASE.md @@ -0,0 +1,89 @@ +# Release Process + +PureYAML versioning is driven by Git tags. The current release target is 0.1.0. +Do not publish the tag until #32 records final local and hosted verification. + +## 0.1.0 Candidate + +- Swift tools version: 6.1 +- Product: `PureYAML` +- SwiftPM dependencies: none +- Source targets: Swift only, no C targets and no generated parser targets +- Hosted CI matrix: macOS build and test, Linux build and test, WASM build +- Release notes file: `docs/releases/pureyaml-0-1-0.md` + +## Local Verification + +Run the full gate from a clean checkout before tagging: + +```sh +git status --short --branch +bash scripts/check-all.sh +``` + +`scripts/check-all.sh` expands to: + +```sh +bash scripts/check-style.sh +bash scripts/check-namespacing.sh +bash scripts/check-forbidden-patterns.sh +bash scripts/check-changelog-touched.sh +bash scripts/check-roadmap.sh +swiftformat . --config .swiftformat --lint +swiftlint --config .swiftlint.yml --strict +swift build +swift test +bash scripts/check-linux.sh +bash scripts/check-wasm.sh +``` + +The Linux check must exercise build and tests. The WASM check must build the +library target with the configured Swift Wasm SDK. + +## Hosted Verification + +Push `main` and wait for the CI workflow to pass: + +```sh +git push origin main +gh run list --repo mihaelamj/PureYAML --branch main --limit 5 +gh run watch --repo mihaelamj/PureYAML --exit-status +``` + +The passing run must include all CI jobs: + +- macOS +- Linux +- WASM + +## Tag and Publish + +Only run these commands after the local gates pass, hosted CI passes, and #32 is +updated with the final evidence. + +```sh +git status --short --branch +git tag -a 0.1.0 -m "PureYAML 0.1.0" +git push origin main 0.1.0 +gh release create 0.1.0 \ + --repo mihaelamj/PureYAML \ + --title "PureYAML 0.1.0" \ + --notes-file docs/releases/pureyaml-0-1-0.md +``` + +After publishing, verify the release exists: + +```sh +git ls-remote --tags origin 0.1.0 +gh release view 0.1.0 --repo mihaelamj/PureYAML +``` + +## Do Not Tag If + +- `Package.swift` has any external dependency. +- `Sources/` contains C, JavaScript, WebAssembly blobs, or generated parser + runtime files. +- Any Swift source imports Foundation in the library target. +- The changelog does not have a dated 0.1.0 section. +- The release notes omit the known deferred issues. +- macOS, Linux, or WASM CI is red or still running. diff --git a/docs/releases/pureyaml-0-1-0.md b/docs/releases/pureyaml-0-1-0.md new file mode 100644 index 0000000..9c94b92 --- /dev/null +++ b/docs/releases/pureyaml-0-1-0.md @@ -0,0 +1,59 @@ +# PureYAML 0.1.0 + +PureYAML 0.1.0 is the first release of a dependency-free YAML package written +entirely in Swift. + +## Highlights + +- Root Swift package layout with one library product, `PureYAML`. +- No external SwiftPM dependencies. +- No C sources, generated parser targets, JavaScript tooling, or Foundation + requirement in the library target. +- Pure Swift YAML model with ordered mappings, sequences, scalars, and duplicate + key preservation. +- Parser support for block mappings, block sequences, flow collections, quoted + strings, comments, literal and folded block scalars, anchors, aliases, YAML + directives, document markers, and selected explicit built-in scalar tags. +- Deterministic YAML dumper with block output by default, optional flow + collections, conservative plain scalars, and conservative literal block + scalars. +- Path-aware validation with exact duplicate-key diagnostics, strict and + non-strict modes, warning collection, custom rules, rule predicates, and + direct value-tree validation for states ordinary loaders may collapse. +- Typed `Codable` conversion for scalar, keyed, unkeyed, nested, dynamic-key, + dictionary-like, and super-coder cases. +- Compatibility and downstream-shaped fixture coverage, including explicit + unsupported-gap tests. +- Local and hosted macOS, Linux, and WASM gates. + +## Support Boundary + +This is not a full YAML 1.2 implementation. The release intentionally ships a +tested subset with exact errors or exact fallback value trees for known gaps. + +Known deferred work is tracked in: + +- #33: multi-document YAML streams +- #34: merge keys and complex mapping keys +- #35: tag-specific YAML types +- #36: fixture-backed validator corpus expansion +- #37: arbitrary `Any` load and dump API decision + +## Verification + +The 0.1.0 release process requires #32 to record: + +- `bash scripts/check-all.sh` +- hosted macOS CI +- hosted Linux CI +- hosted WASM CI + +The full gate includes style, namespacing, forbidden-pattern, changelog, +roadmap, SwiftFormat, SwiftLint, host build, host tests, Linux build and test, +and WASM build checks. + +## Installation After Tagging + +```swift +.package(url: "https://github.com/mihaelamj/PureYAML.git", .upToNextMinor(from: "0.1.0")) +```