Skip to content

docs: cut the v0.2.0 changelog and record its verified kernels - #39

Merged
deadpoets merged 2 commits into
mainfrom
docs/v0.2.0-release
Jul 20, 2026
Merged

docs: cut the v0.2.0 changelog and record its verified kernels#39
deadpoets merged 2 commits into
mainfrom
docs/v0.2.0-release

Conversation

@deadpoets

Copy link
Copy Markdown
Owner

Docs-only release prep for v0.2.0. No library or test code changes — this is the CHANGELOG cut plus the KERNELS evidence rows, so it can land immediately before tagging.

Why v0.2.0 now

v0.1.0 ships a process-crashing defect: ReadOnly() followed by CopyIn/SetByteAt/Truncate/ReadFrom — or ArenaSlot.Release on a read-only arena — wrote to a PROT_READ page and killed the process with SIGSEGV. Those paths now return ErrReadOnly. That's a defect users are exposed to today, not a feature backlog.

Version is tool-determined, not opinion

$ gorelease -base=v0.1.0
## compatible changes
ErrReadOnly: added
# summary
Suggested version: v0.2.0

The only API change is the added sentinel → compatible minor.

KERNELS.md — three qualifying v0.2.0 rows

All validated against f7fdf4e (the library tree the tag lands on; later commits are docs-only — the same argument this file already makes for v0.1.0):

Arch Kernel Environment Result
amd64 7.0.0-1009-azure Hyper-V VM, Core Ultra 7 PASS · 3/3
arm64 6.18.35-rockchip64 RK3328 4× Cortex-A53 (in-order) PASS · 3/3
arm64 6.17.0-1011-oracle OCI Ampere A1.Flex (out-of-order) PASS · 3/3

Each ran the full qualifying gauntlet — all three modules under -race, GOEXPERIMENT=runtimesecret, the no-heap-escape gates, and -asan — plus the three counted proofs (guard-fault / memfd-isolation / canary), 3/3 each, secretmem live throughout.

Relevant to this release specifically: the concurrent protection-transition stress races ReadOnly/Seal against mutators, and it passes under -race on the in-order Cortex-A53 — arm64's weak memory model being where a protection-state race would actually surface, rather than only on amd64's stronger TSO ordering.

Not included

No tags. v0.2.0 and the follow-up secmem-crypto/v0.1.1 are yours to cut — immutable refs, no bypass.

deadpoets and others added 2 commits July 19, 2026 20:25
The core module's Unreleased entries become [0.2.0] - 2026-07-19. The
headline is a defect users are exposed to on v0.1.0: ReadOnly() followed by
CopyIn/SetByteAt/Truncate/ReadFrom, or ArenaSlot.Release on a read-only
arena, wrote to a PROT_READ page and killed the process with SIGSEGV. Those
paths now return ErrReadOnly. gorelease confirms the only API change is that
added sentinel, so v0.2.0 is a compatible minor.

KERNELS.md gains a v0.2.0 section with three rows, each validated against
f7fdf4e (the library tree the tag lands on; later commits are docs-only):
amd64 Hyper-V 7.0.0-azure, arm64 Cortex-A53 6.18.35-rockchip64, and arm64
OCI Ampere 6.17.0-oracle. Every row ran the full qualifying gauntlet — all
three modules under -race, GOEXPERIMENT=runtimesecret, the no-heap-escape
gates, and -asan — plus the three counted proofs, 3/3 each, secretmem live.

Worth recording why the arm64 rows carry weight for this particular release:
the concurrent protection-transition stress races ReadOnly/Seal against
mutators, and it passes under -race on the in-order Cortex-A53, not just on
amd64's stronger TSO ordering.
@deadpoets
deadpoets merged commit 63fbce9 into main Jul 20, 2026
55 of 57 checks passed
@deadpoets
deadpoets deleted the docs/v0.2.0-release branch July 20, 2026 23:40
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