Thanks for your interest in improving the Swift member of the Firechip COBS family!
The CobsCodec library is pure Swift standard library, so it builds and tests on
Linux as well as macOS:
swift build -c release
swift testTo run the shared cross-language conformance vectors locally, point the harness at a checkout of firechip/cobs-conformance:
COBS_CONFORMANCE_VECTORS=…/vectors/vectors.jsonl \
COBS_CONFORMANCE_SENTINEL=…/vectors/sentinel.jsonl \
COBS_CONFORMANCE_ERRORS=…/vectors/errors.jsonl \
swift test --filter ConformanceThe macOS build is validated in CI on a macOS runner.
- Conventional Commits for every commit (
type(scope): subject), enforced by the commit-lint workflow. Allowed types: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test. - Trunk-based development with
tbdflow: short-lived branches, frequent merges tomain. - The output must stay byte-identical to the rest of the family — any codec change must still pass the shared conformance vectors.
- Commits and tags are SSH-signed.
Releases follow Semantic Versioning. Swift Package Manager resolves versions from Git tags, so there is no registry publish step — but the GitHub Release is still created by hand; don't skip it.
-
Add a
## X.Y.Zsection toCHANGELOG.md. -
Commit and tag it signed:
git tag -s vX.Y.Z -m "CobsCodec X.Y.Z"; pushmainand the tag. SwiftPM and the Swift Package Index pick it up from the tag. -
Create the GitHub Release for the tag with a description that matches the other members — the
CHANGELOG.mdhighlights, the SwiftPM install snippet, and the Swift Package Index link. GitHub attaches the source archives automatically; there is no build artifact to upload.gh release create vX.Y.Z --verify-tag --title "CobsCodec X.Y.Z" \ --notes-file notes.md