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: 9 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ mark the stability commitment.
> This repo holds three independently versioned Go modules; entries are tagged
> by module. Untagged entries belong to the core `secmem` module.

## [0.2.0] - 2026-07-19

A bug-fix release for the core `secmem` module, and the reason to upgrade
promptly: v0.1.0 could **crash the process** on a documented API sequence.
`ErrReadOnly` is the only API addition, so the change is backward compatible
(confirmed by `gorelease`).

### Fixed

- **Read-only buffers and arenas no longer fault the process on a mutating
Expand Down Expand Up @@ -207,7 +214,8 @@ First tagged release of the core `secmem` module.
cover all three types, both the pointer and (where a value copy is not
itself a `go vet` copylocks violation) a dereferenced value.

[Unreleased]: https://github.com/deadpoets/secmem/compare/v0.1.0...HEAD
[Unreleased]: https://github.com/deadpoets/secmem/compare/v0.2.0...HEAD
[0.2.0]: https://github.com/deadpoets/secmem/compare/v0.1.0...v0.2.0
[secmem-lint/v0.1.0]: https://github.com/deadpoets/secmem/releases/tag/secmem-lint%2Fv0.1.0
[secmem-crypto/v0.1.0]: https://github.com/deadpoets/secmem/releases/tag/secmem-crypto%2Fv0.1.0
[0.1.0]: https://github.com/deadpoets/secmem/releases/tag/v0.1.0
20 changes: 20 additions & 0 deletions KERNELS.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,26 @@ security proofs beyond unit tests:
blocked by lockdown) — i.e. the L4 path itself was exercised, not only the
mmap+mlock (L3) fallback, whose guards and canaries every row verifies.

## v0.2.0 — verified kernels

Validated against `f7fdf4e`, the library tree v0.2.0 tags; the only later
commits are docs-only (this file and the changelog), so the run reflects
exactly the shipped code. Every row ran the full gauntlet — core,
`secmem-crypto`, and `secmem-lint` under `-race`, `GOEXPERIMENT=runtimesecret`,
the no-heap-escape gates, and `-asan` — plus the three counted proofs.

| Date | Kernel | Arch | Environment | secretmem | Result |
|---|---|---|---|---|---|
| 2026-07-19 | 7.0.0-1009-azure | amd64 | Local Hyper-V VM, Ubuntu 26.04, Intel Core Ultra 7 265KF | live | PASS · 3/3 |
| 2026-07-19 | 6.18.35-rockchip64 | arm64 | Libre Computer Renegade, RK3328 4× Cortex-A53 (in-order), Armbian | live | PASS · 3/3 |
| 2026-07-19 | 6.17.0-1011-oracle | arm64 | OCI Ampere A1.Flex (Neoverse N1, out-of-order), Ubuntu 24.04 | live | PASS · 3/3 |

The read-only fix this release centers on is exercised where it matters: the
concurrent protection-transition stress races `ReadOnly`/`Seal` against
mutators, and it passes under `-race` on the **in-order** Cortex-A53 as well as
on amd64's stronger TSO ordering — the arm64 weak memory model being where a
protection-state race would actually surface.

## v0.1.0 — verified kernels

Tags `v0.1.0` (commit `2faf99c`) and `secmem-crypto/v0.1.0` (commit `06960fb`);
Expand Down