docs(release): prepare 0.1.0 notes

This commit is contained in:
Mihaela Mihaljevic 2026-06-05 14:11:27 +02:00
parent bb3533ff18
commit 6dab60e4bb
4 changed files with 152 additions and 0 deletions

View File

@ -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.

View File

@ -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

89
docs/RELEASE.md Normal file
View File

@ -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 <run-id> --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.

View File

@ -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"))
```