PureYAML/docs/RELEASE.md
Mihaela Mihaljevic 208b892019 feat(parser): harden diagnostics and streaming
Add structured validation diagnostics, JSON and Yams comparison gates, and lazy token/event parsing so production behavior is measured without retaining full intermediate parser arrays.
2026-06-06 07:57:48 +02:00

90 lines
2.2 KiB
Markdown

# Release Process
PureYAML versioning is driven by Git tags. The current release is 0.1.2.
## 0.1.2 Release
- 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, Windows build
and test, WASM build
- Release notes file: `docs/releases/pureyaml-0-1-2.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 and Windows checks 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 <run-id> --repo mihaelamj/PureYAML --exit-status
```
The passing run must include all CI jobs:
- macOS
- Linux
- Windows
- WASM
## Tag and Publish
Only run these commands after the local gates pass and hosted CI passes.
```sh
git status --short --branch
git tag -a 0.1.2 -m "PureYAML 0.1.2"
git push origin main 0.1.2
gh release create 0.1.2 \
--repo mihaelamj/PureYAML \
--title "PureYAML 0.1.2" \
--notes-file docs/releases/pureyaml-0-1-2.md
```
After publishing, verify the release exists:
```sh
git ls-remote --tags origin 0.1.2
gh release view 0.1.2 --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.1 section.
- The release notes omit known deferred issues.
- macOS, Linux, Windows, or WASM CI is red or still running.