Skip to content

chore: bump to v0.17.0 - #427

Merged
tobert merged 1 commit into
mainfrom
release/v0.17.0
Sep 1, 2026
Merged

chore: bump to v0.17.0#427
tobert merged 1 commit into
mainfrom
release/v0.17.0

Conversation

@tobert

@tobert tobert commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Version bump and changelog stamp for the 0.17.0 release. The workspace version and all 17 inter-crate path + version pins move to 0.17.0, and CHANGELOG.md's Unreleased section becomes [0.17.0] - 2026-08-31.

0.17.0 is a large release: 215 commits and 19 merged PRs since v0.16.0, landing four arcs — the $(( )) arithmetic rewrite, a symlink policy across the VFS with a conformance suite, wrapped commands, and the leading-zero-is-text rule.

A pre-release review found one undeclared break and four documentation defects. They are fixed here rather than left for a reader to trip over.

ExecContext gained kill_grace and background_job this cycle. It is public, re-exported at the crate root, and all 30 of its fields are pub with no #[non_exhaustive], so a struct literal in an embedder stopped compiling while the changelog filed the change under Changed. Six public constructors already exist, so the supported path was never the literal:

let ctx = ExecContext::with_backend(backend);

The entry is now marked BREAKING and the struct is #[non_exhaustive], which costs the literal once and buys silence on every field the kernel adds after this.

The other four: the changelog said the conformance suite has 19 cases when it registers 20, and said "any Filesystem backend" when the runners are LocalFs, MemoryFs and OverlayFs (DevFs is exempt, having no symlinks); PlannedStatement.plan still promised "with every credential redacted" after this release removed the redaction; LANGUAGE.md read as though bare true/false were numeric literals when they are variable names; and EMBEDDING.md's plan-JSON sample showed kaish_version 0.16.0 carrying the three build-identity keys that 0.16.0 never emitted. The glued-argv error span from #413 also had no changelog bullet and has one now.

The "Require kaish 0.16 or newer" line in EMBEDDING.md stays as written — it is about --plan existing at all, not about the version fields, which the same section already tells a consumer to read as optional.

Gates on this branch: clippy -D warnings, cargo test --all (203 suites, 6485 passed, 0 failed), insta --check, no-default-features, the WASI build, and rustdoc -D warnings all clean.

The workspace version and all 17 inter-crate pins move to 0.17.0, and
CHANGELOG.md's Unreleased section is stamped as [0.17.0] - 2026-08-31.

The release review turned up one undeclared break and four documentation
defects, all fixed here rather than left for a reader to trip over.

ExecContext gained kill_grace and background_job this cycle. It is public,
re-exported at the crate root, and every one of its 30 fields is pub, with
no #[non_exhaustive] — so a struct literal in an embedder stopped compiling
while the changelog filed the change under Changed. Six public constructors
already exist (new, with_backend, with_scope, and three more), so the
supported construction path was never the literal. Marked BREAKING and made
the struct #[non_exhaustive], which costs the literal once and buys silence
on every field the kernel adds after this.

The changelog claimed the symlink conformance suite has 19 cases; it
registers 20, and it said "any Filesystem backend" runs them when the
runners are LocalFs, MemoryFs and OverlayFs. DevFs is exempt because it has
no symlinks, which is a reason worth stating rather than implying.

PlannedStatement.plan still promised "with every credential redacted" after
0.14.0 removed the credential and this release removed the redaction.

LANGUAGE.md read as though bare true and false were numeric literals. They
are variable names, pinned as unset by
arithmetic_adversarial_tests.rs:362; only a variable holding a Bool coerces
to 1 or 0.

EMBEDDING.md's plan-JSON sample showed kaish_version 0.16.0 carrying the
three build-identity keys. 0.16.0 never emitted them — they ship here — so
the example described a document that could not exist.

The glued-argv error span from #413 had no changelog bullet; it has one now.
The "Require kaish 0.16 or newer" line stays as written: it is about --plan
existing at all, not about the version fields, which the same section
already tells a consumer to read as optional.

Gates on this branch: clippy -D warnings, cargo test --all (203 suites,
6485 passed), insta --check, no-default-features, wasi build, and rustdoc
-D warnings all clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@tobert
tobert merged commit 79a0132 into main Sep 1, 2026
3 checks passed
@tobert
tobert deleted the release/v0.17.0 branch September 1, 2026 11:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant