Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 5 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ 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"
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"
Expand Down
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Add vthread to your project:

```toml
[dependencies]
vthread = "=0.1.0-rc.3"
vthread = "=0.1.0"
```

```rust
Expand Down Expand Up @@ -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

Expand Down
37 changes: 27 additions & 10 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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.
8 changes: 4 additions & 4 deletions benchmarks/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions benchmarks/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion crates/vthread-stack/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion crates/vthread-sync-core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 5 additions & 6 deletions crates/vthread/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,20 @@ 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

Add vthread to your project:

```toml
[dependencies]
vthread = "=0.1.0-rc.3"
vthread = "=0.1.0"
```

```rust
Expand Down
2 changes: 1 addition & 1 deletion crates/vthreads/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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
10 changes: 5 additions & 5 deletions crates/vthreads/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,20 @@ 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

Add the alias to your project:

```toml
[dependencies]
vthreads = "=0.1.0-rc.3"
vthreads = "=0.1.0"
```

```rust
Expand Down
8 changes: 4 additions & 4 deletions reference/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions reference/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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"
2 changes: 1 addition & 1 deletion reference/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Loading