diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a223dd..b5b8942 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ## Unreleased +## 0.1.0 - 2026-09-14 + +- Release the qualified RC.3 runtime for production use within the documented + Linux x86_64 and macOS ARM64 workloads and platforms. +- Commit to compatible public APIs and supported contracts throughout `0.1.x`; + breaking changes require `0.2`. The feature set remains deliberately limited. +- Promote shared package versions, exact internal pins, lockfiles, and installation + examples together. Preserve the full native, application, sustained, archive, + consumer, and attestation gates for the final release. + ## 0.1.0-rc.3 - 2026-09-11 - Require sustained runtime qualification before release planning: one uninterrupted diff --git a/Cargo.lock b/Cargo.lock index 796a0b7..4207203 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -291,7 +291,7 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vthread" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "crossbeam-queue", "libc", @@ -303,28 +303,28 @@ dependencies = [ [[package]] name = "vthread-lab" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "vthread", ] [[package]] name = "vthread-stack" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "libc", ] [[package]] name = "vthread-sync-core" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "loom", ] [[package]] name = "vthreads" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "vthread", ] diff --git a/Cargo.toml b/Cargo.toml index 1693d37..c1d8020 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["crates/vthread", "crates/vthreads", "crates/vthread-stack", "crates/ resolver = "3" [workspace.package] -version = "0.1.0-rc.3" +version = "0.1.0" edition = "2024" rust-version = "1.96" license = "Apache-2.0" @@ -11,9 +11,9 @@ repository = "https://github.com/zsumz/vthread" authors = ["vthread contributors"] [workspace.dependencies] -vthread = { path = "crates/vthread", version = "=0.1.0-rc.3" } -vthread-stack = { path = "crates/vthread-stack", version = "=0.1.0-rc.3" } -vthread-sync-core = { path = "crates/vthread-sync-core", version = "=0.1.0-rc.3" } +vthread = { path = "crates/vthread", version = "=0.1.0" } +vthread-stack = { path = "crates/vthread-stack", version = "=0.1.0" } +vthread-sync-core = { path = "crates/vthread-sync-core", version = "=0.1.0" } zio = { version = "=0.0.1-dev.1", default-features = false } socket2 = { version = "=0.6.5", default-features = false } libc = "=0.2.189" diff --git a/README.md b/README.md index ae820ec..43719dd 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ Add vthread to your project: ```toml [dependencies] -vthread = "=0.1.0-rc.3" +vthread = "=0.1.0" ``` ```rust @@ -76,11 +76,10 @@ for verification coverage and known limitations. ## Compatibility -vthread `0.1.0-rc.3` is a candidate for production use on its supported platforms -within the documented boundaries. The eventual `0.1.0` release and subsequent -`0.1.x` releases will keep compatible public API updates within `0.1`; breaking API -or contract changes move to `0.2`. Tested configurations and known limitations are -in the [release notes](RELEASE.md). +vthread `0.1.0` is production ready within the documented supported workloads and +platforms, with a deliberately limited feature set. Public APIs and supported +contracts remain compatible throughout `0.1.x`; breaking changes require `0.2`. +Tested configurations and known limitations are in the [release notes](RELEASE.md). ## Docs diff --git a/RELEASE.md b/RELEASE.md index d28c8b8..636fcd0 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -7,16 +7,16 @@ Release automation uses [zrelease](https://github.com/zsumz/zrelease), pinned to [the Rehearse workflow](.github/workflows/rehearse.yml) and [the Release workflow](.github/workflows/release.yml). -The current candidate is `0.1.0-rc.3`. It retains the published RC.2 runtime -implementation and adds the sustained production-scope gate described below. -Package versions, exact internal dependency -pins, and the release tag must agree. Both workflows enable zrelease's lockstep -policy; a stable-looking tag over RC packages is rejected. This cycle prepares -and qualifies an RC; final `0.1.0` publication remains a separate action. +The current release is `0.1.0`. It retains the qualified RC.3 runtime +implementation and the sustained production-scope gate described below. +Package versions, exact internal dependency pins, and the release tag must agree. +Both workflows enable zrelease's lockstep policy; a stable-looking tag over RC +packages is rejected. The final version's source and archives must pass the full +release workflow before registry publication. ## Production support contract -The release standard for `0.1.0` is **production ready within the documented +`0.1.0` is **production ready within the documented supported workloads and platforms**, with a deliberately limited feature set. Supported applications use `vthread` or its `vthreads` alias on Linux x86_64 or macOS ARM64 with Rust 1.96+ and unwinding panics. Internal support crates are @@ -175,12 +175,29 @@ OIDC exchanges, registry uploads, and registry-only consumer builds, tests, and runs succeeded. Every final delivery receipt is `consumer-verified`. The approved plan, candidate attestations, downloaded registry bytes, consumer lockfiles, and receipts were independently verified against the signed tag and -pinned pipeline. This establishes the live RC path; no final `0.1.0` was created. +pinned pipeline. This established the live RC publication path. RC-to-final automation should prepare a version-change PR from a verified RC receipt, updating manifests, exact dependency pins, lockfiles and release docs. That new commit needs its own qualification and approval. Simply retagging an RC -cannot change its packaged version. Final promotion remains a future design item. +cannot change its packaged version. Automated preparation remains a future design +item; `0.1.0` uses a reviewed version-change commit and the existing release gates. + +## RC3 baseline for 0.1.0 + +Signed tag `v0.1.0-rc.3` identifies +`7da33f8ea8da5d2288712533341225e087d1b23b`. Its full +[release rehearsal](https://github.com/zsumz/vthread/actions/runs/34646749573) +passed on 2026-09-11 with 34 successful jobs and nine expected non-publishing skips. +The four uninterrupted one-hour runs completed 70,873,482 task lifetimes. Warmed +RSS growth was 90–336 KiB, descriptor counts were unchanged, and task accounting, +service drain, and final shutdown checks passed on both supported platforms. + +Canonical, native-stack, and application checks passed on both platforms. All +four archives, fresh staged consumers, attestations, and rehearsal receipts were +verified against the signed source and pinned pipeline. RC.3 was not published to +crates.io. The final `0.1.0` version retains its runtime source and qualifies its +own manifests, archives, and registry consumers through the same release gates. ## Update zrelease @@ -224,7 +241,7 @@ above the tested scope, absolute memory footprint, controlled loaded-tail target and controlled-host idle CPU remain unqualified. Local timing is observational; `zcheck run perf-cancellation-history` is a separate timing guard. -The eventual `0.1.0` and subsequent `0.1.x` releases preserve public API +The `0.1.0` and subsequent `0.1.x` releases preserve public API compatibility within `0.1`; breaking API or contract changes move to `0.2`. The exact dependency set includes `zio = "=0.0.1-dev.1"`; a normal vthread version does not imply a stable-version contract for every dependency. diff --git a/benchmarks/Cargo.lock b/benchmarks/Cargo.lock index 6be02a5..149315a 100644 --- a/benchmarks/Cargo.lock +++ b/benchmarks/Cargo.lock @@ -70,7 +70,7 @@ dependencies = [ [[package]] name = "vthread" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "crossbeam-queue", "libc", @@ -82,21 +82,21 @@ dependencies = [ [[package]] name = "vthread-benchmarks" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "vthread", ] [[package]] name = "vthread-stack" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "libc", ] [[package]] name = "vthread-sync-core" -version = "0.1.0-rc.3" +version = "0.1.0" [[package]] name = "windows-link" diff --git a/benchmarks/Cargo.toml b/benchmarks/Cargo.toml index ef8ee2b..3696f59 100644 --- a/benchmarks/Cargo.toml +++ b/benchmarks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vthread-benchmarks" -version = "0.1.0-rc.3" +version = "0.1.0" edition = "2024" publish = false license = "Apache-2.0" @@ -12,7 +12,7 @@ scheduler-profiling = ["vthread/scheduler-profiling"] handoff-profiling = ["scheduler-profiling", "vthread/handoff-profiling"] [dependencies] -vthread = { path = "../crates/vthread", version = "=0.1.0-rc.3" } +vthread = { path = "../crates/vthread", version = "=0.1.0" } [profile.release] codegen-units = 1 diff --git a/crates/vthread-stack/README.md b/crates/vthread-stack/README.md index 48aadf0..4d885b6 100644 --- a/crates/vthread-stack/README.md +++ b/crates/vthread-stack/README.md @@ -6,7 +6,7 @@ Use [`vthread`](https://github.com/zsumz/vthread) in applications. Its public cr forbids unsafe Rust. This support crate isolates the unsafe stack mechanics and has no compatibility contract for direct downstream use. -See [release notes](https://github.com/zsumz/vthread/blob/v0.1.0-rc.3/RELEASE.md) +See [release notes](https://github.com/zsumz/vthread/blob/v0.1.0/RELEASE.md) for verification coverage and known limitations. ## Ownership and safety diff --git a/crates/vthread-sync-core/README.md b/crates/vthread-sync-core/README.md index 5c6060d..28b9c66 100644 --- a/crates/vthread-sync-core/README.md +++ b/crates/vthread-sync-core/README.md @@ -5,7 +5,7 @@ The narrow exclusive-value and protocol core supporting `vthread` synchronizatio Use [`vthread`](https://github.com/zsumz/vthread) in applications. This support crate has no compatibility contract for direct downstream use. -See [release notes](https://github.com/zsumz/vthread/blob/v0.1.0-rc.3/RELEASE.md) +See [release notes](https://github.com/zsumz/vthread/blob/v0.1.0/RELEASE.md) for verification coverage and known limitations. ## Runtime boundary diff --git a/crates/vthread/README.md b/crates/vthread/README.md index c52d2b5..5b83fe2 100644 --- a/crates/vthread/README.md +++ b/crates/vthread/README.md @@ -7,13 +7,12 @@ suspension points. The public runtime crate forbids unsafe Rust. Supported targets are Linux x86_64 and macOS ARM64, with Rust 1.96 or newer and `panic = "unwind"`. Builds with `panic = "abort"` are rejected. -See [release notes](https://github.com/zsumz/vthread/blob/v0.1.0-rc.3/RELEASE.md) +See [release notes](https://github.com/zsumz/vthread/blob/v0.1.0/RELEASE.md) for verification coverage and known limitations. -vthread `0.1.0-rc.3` is a candidate for production use on its supported platforms -within the documented boundaries. The eventual `0.1.0` release and subsequent -`0.1.x` releases will keep compatible public API updates within `0.1`; breaking API -or contract changes move to `0.2`. +vthread `0.1.0` is production ready within the documented supported workloads and +platforms, with a deliberately limited feature set. Public APIs and supported +contracts remain compatible throughout `0.1.x`; breaking changes require `0.2`. ## A first task @@ -21,7 +20,7 @@ Add vthread to your project: ```toml [dependencies] -vthread = "=0.1.0-rc.3" +vthread = "=0.1.0" ``` ```rust diff --git a/crates/vthreads/Cargo.toml b/crates/vthreads/Cargo.toml index ab5c900..8995cc1 100644 --- a/crates/vthreads/Cargo.toml +++ b/crates/vthreads/Cargo.toml @@ -25,7 +25,7 @@ runtime-evidence = ["vthread/runtime-evidence"] qualification = ["vthread/qualification"] [dependencies] -vthread = { path = "../vthread", version = "=0.1.0-rc.3" } +vthread = { path = "../vthread", version = "=0.1.0" } [lints] workspace = true diff --git a/crates/vthreads/README.md b/crates/vthreads/README.md index bcb3ae2..a146263 100644 --- a/crates/vthreads/README.md +++ b/crates/vthreads/README.md @@ -9,12 +9,12 @@ Its `runtime-evidence` and `qualification` features forward directly to `vthread It shares vthread's Linux x86_64 and macOS ARM64 targets, Rust 1.96 minimum, and `panic = "unwind"` requirement. -See [release notes](https://github.com/zsumz/vthread/blob/v0.1.0-rc.3/RELEASE.md) +See [release notes](https://github.com/zsumz/vthread/blob/v0.1.0/RELEASE.md) for verification coverage and known limitations. -This release candidate follows vthread's pre-1.0 compatibility policy. The eventual -`0.1.0` release and subsequent `0.1.x` releases will keep compatible public API -updates within `0.1`; breaking API or contract changes move to `0.2`. +`0.1.0` shares vthread's production support contract within the documented workloads +and platforms. Public APIs and supported contracts remain compatible throughout +`0.1.x`; breaking changes require `0.2`. ## Using the alias @@ -22,7 +22,7 @@ Add the alias to your project: ```toml [dependencies] -vthreads = "=0.1.0-rc.3" +vthreads = "=0.1.0" ``` ```rust diff --git a/reference/Cargo.lock b/reference/Cargo.lock index 0fd05d4..3a49810 100644 --- a/reference/Cargo.lock +++ b/reference/Cargo.lock @@ -70,7 +70,7 @@ dependencies = [ [[package]] name = "vthread" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "crossbeam-queue", "libc", @@ -82,21 +82,21 @@ dependencies = [ [[package]] name = "vthread-reference" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "vthread", ] [[package]] name = "vthread-stack" -version = "0.1.0-rc.3" +version = "0.1.0" dependencies = [ "libc", ] [[package]] name = "vthread-sync-core" -version = "0.1.0-rc.3" +version = "0.1.0" [[package]] name = "windows-link" diff --git a/reference/Cargo.toml b/reference/Cargo.toml index 944fe98..ecfcd1d 100644 --- a/reference/Cargo.toml +++ b/reference/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vthread-reference" -version = "0.1.0-rc.3" +version = "0.1.0" edition = "2024" rust-version = "1.96" publish = false @@ -9,7 +9,7 @@ license = "Apache-2.0" [workspace] [dependencies] -vthread = { path = "../crates/vthread", version = "=0.1.0-rc.3" } +vthread = { path = "../crates/vthread", version = "=0.1.0" } [profile.release] panic = "unwind" diff --git a/reference/README.md b/reference/README.md index b1fcf0f..006fdf4 100644 --- a/reference/README.md +++ b/reference/README.md @@ -23,7 +23,7 @@ For an application beside a checkout named `vthread`: ```toml [dependencies] -vthread = { path = "../vthread/crates/vthread", version = "=0.1.0-rc.3" } +vthread = { path = "../vthread/crates/vthread", version = "=0.1.0" } ``` - Give the runtime one application-level owner. Use scopes for requests and operations, diff --git a/zrail.lock b/zrail.lock index f5e34b1..13eb5b6 100644 --- a/zrail.lock +++ b/zrail.lock @@ -6,9 +6,9 @@ contract_sha256 = "8603e24df9addfcc603707c15027481b9ad5e11ada455e48eba1fb9de67b5 ratchet = [] [analysis] -inventory_sha256 = "290bf864d4fffa080e4c3ca746d802caf72dce51e4e42622a1b19c6c923482b0" +inventory_sha256 = "2a02d5599ea6208daf5c0672491533b6cd4ec636a330f1a695ee12043464a9b3" exclusions_sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" -cargo_lock_sha256 = "8771cde95c5d51ab68b6dd048e6d200f58517b0e80ff9c1e10eaa00a2fe232dd" +cargo_lock_sha256 = "a0a97f71a1af7fbef4d36407ee2f10b2fadcd74556aaac2968b652d1b78c5c24" cargo_features_sha256 = "3e43f336e44215719c080510ba8ce053576e4fa44eab81b200117ebcbf4d3d64" feature_worlds_sha256 = "6edfb4a1172e614d373d2aba49cdfa4e544769ce212a82805cc63e4e3b99d116" feature_worlds = 5 @@ -78,7 +78,7 @@ default_features = true [package.dependency.source] kind = "workspace-member" directory = "crates/vthread-stack" -requirement = "=0.1.0-rc.3" +requirement = "=0.1.0" [[package.dependency]] alias = "vthread-sync-core" @@ -92,7 +92,7 @@ default_features = true [package.dependency.source] kind = "workspace-member" directory = "crates/vthread-sync-core" -requirement = "=0.1.0-rc.3" +requirement = "=0.1.0" [[package.dependency]] alias = "zio" @@ -121,7 +121,7 @@ default_features = true [package.dependency.source] kind = "workspace-member" directory = "crates/vthread" -requirement = "=0.1.0-rc.3" +requirement = "=0.1.0" [[package]] name = "vthread-stack" @@ -168,4 +168,4 @@ default_features = true [package.dependency.source] kind = "workspace-member" directory = "crates/vthread" -requirement = "=0.1.0-rc.3" +requirement = "=0.1.0"