From 9cf59b68520be6d65cf774762b6f38ab83fc4fb4 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 9 Sep 2026 19:17:45 -0700 Subject: [PATCH] chore: release v2.1.0 A minor, not a patch: this adds public items and moves none, and cargo-semver-checks agrees ("API compatible changes"). No override was needed, unlike 2.0.5. Added since 2.0.5: - `--cfg ra_segment_size="256k"`, for a firmware whose allocation unit is tens of kilobytes. Reported from rusty_zstd: a 64 KiB block cost two segments, so a 256 KiB region served one and refused the second with 192 KiB free. The flag packs three into one segment, measured on the board. - `prim::fixed::LARGEST_SHARED_ALLOC`, `dedicated_segments(size)` and `region_for_allocs(size, count)`, so that ceiling is a compile-time answer. - `prim::fixed::region_capacity()`, because free BYTES hide the constraint that actually fails the allocation and free SEGMENTS do not. - `prim::fixed::PrimError`, re-exported so the whole fixed-region recipe is reachable from one path (rusty_RTOS's allocator seam, brick B3). Co-Authored-By: Claude Opus 5 (1M context) --- Cargo.lock | 12 +++++------ Cargo.toml | 2 +- README.md | 31 +++++++++++++++++------------ crates/rusty_alloc/CHANGELOG.md | 2 ++ crates/rusty_alloc_api/CHANGELOG.md | 6 ++++++ crates/rusty_alloc_api/Cargo.toml | 2 +- 6 files changed, 34 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a5a5e9b..29716fd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -275,7 +275,7 @@ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "rusty_alloc" -version = "2.0.5" +version = "2.1.0" dependencies = [ "libc", "loom", @@ -286,14 +286,14 @@ dependencies = [ [[package]] name = "rusty_alloc-api" -version = "2.0.5" +version = "2.1.0" dependencies = [ "rusty_alloc", ] [[package]] name = "rusty_alloc-bench" -version = "2.0.5" +version = "2.1.0" dependencies = [ "libloading", "rusty_alloc", @@ -302,14 +302,14 @@ dependencies = [ [[package]] name = "rusty_alloc-ffi" -version = "2.0.5" +version = "2.1.0" dependencies = [ "rusty_alloc", ] [[package]] name = "rusty_alloc-override" -version = "2.0.5" +version = "2.1.0" dependencies = [ "rusty_alloc", "rusty_alloc-ffi", @@ -317,7 +317,7 @@ dependencies = [ [[package]] name = "rusty_alloc-wasm" -version = "2.0.5" +version = "2.1.0" dependencies = [ "rusty_alloc", ] diff --git a/Cargo.toml b/Cargo.toml index fc5218b..dfb16f4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -132,7 +132,7 @@ members = [ # different files that never got the section. Fixed here, in both, and # verified by extracting the packaged `.crate` before publishing rather than # checking the live page afterwards. -version = "2.0.5" +version = "2.1.0" edition = "2024" # MSRV. Declared for the first time in 1.0.1 because this release genuinely # needs it: `asm!` label blocks (`asm_goto`, stable 1.87) carry the free path's diff --git a/README.md b/README.md index 4a0bdd3..f18e9ff 100644 --- a/README.md +++ b/README.md @@ -40,19 +40,24 @@ does not offer. measured on a XIAO ESP32-S3 at 240 MHz, both allocators built from one source. It costs more RAM to get that (64 KiB vs 8 KiB); both numbers are below. -> **Status: `2.0.5`.** The API is frozen and changes follow semver. 2.0.1 -> through 2.0.5 are patch releases: no public API moved. 2.0.2 halved the -> allocator's flash cost on a microcontroller and cut its gzipped wasm overhead -> by a third; 2.0.3 halved the flash cost again and took the static RAM cost -> from 3 KB to under 300 bytes; 2.0.4 makes a firmware's region whole segments -> with `prim::fixed::Region` — unpadded by construction, the floor 64 KiB — -> and refuses a base that would silently cost a segment; 2.0.5 makes segments -> stride from that region's base, so it needs no segment alignment and the -> linker leaves no gap in front of it. Two notes for embedded consumers: 2.0.4 -> moves what `good_region_size` / `region_for` / `MIN_REGION` return, and -> 2.0.5 reduces `Region`'s alignment to 16 bytes — `--cfg ra_aligned_region` -> restores the 2.0.4 layout (see -> [Embedded](#embedded-bare-metal-measured-on-silicon) and the CHANGELOG). +> **Status: `2.1.0`.** The API is frozen and changes follow semver. 2.0.1 +> through 2.0.5 were patch releases; **2.1.0 is a minor because it ADDS public +> items and moves nothing** — `cargo-semver-checks` calls it API-compatible. +> 2.0.2 halved the allocator's flash cost on a microcontroller and cut its +> gzipped wasm overhead by a third; 2.0.3 halved the flash cost again and took +> the static RAM cost from 3 KB to under 300 bytes; 2.0.4 makes a firmware's +> region whole segments with `prim::fixed::Region` — unpadded by +> construction, the floor 64 KiB — and refuses a base that would silently cost +> a segment; 2.0.5 makes segments stride from that region's base, so it needs +> no segment alignment and the linker leaves no gap in front of it; 2.1.0 names +> the large-allocation ceiling in the API and adds +> `--cfg ra_segment_size="256k"` for a firmware whose allocation unit is tens +> of kilobytes. Three notes for embedded consumers: 2.0.4 moves what +> `good_region_size` / `region_for` / `MIN_REGION` return; 2.0.5 reduces +> `Region`'s alignment to 16 bytes, and `--cfg ra_aligned_region` restores the +> 2.0.4 layout; and if you allocate at or above +> `prim::fixed::LARGEST_SHARED_ALLOC` (61,440 bytes by default) read +> [Embedded](#embedded-bare-metal-measured-on-silicon) before sizing a region. > > **What breaks, and why it is a major.** Two things, neither of which touches a > consumer on default features: `default-features = false` now selects the diff --git a/crates/rusty_alloc/CHANGELOG.md b/crates/rusty_alloc/CHANGELOG.md index 123b5be..fa13f20 100644 --- a/crates/rusty_alloc/CHANGELOG.md +++ b/crates/rusty_alloc/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.1.0](https://github.com/Remade-With-Rust/rusty_alloc/compare/rusty_alloc-v2.0.5...rusty_alloc-v2.1.0) - 2026-09-10 + ### Added - **`--cfg ra_segment_size="256k"`, for a firmware whose allocation unit is diff --git a/crates/rusty_alloc_api/CHANGELOG.md b/crates/rusty_alloc_api/CHANGELOG.md index 41d4a34..35fae1b 100644 --- a/crates/rusty_alloc_api/CHANGELOG.md +++ b/crates/rusty_alloc_api/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.1.0](https://github.com/Remade-With-Rust/rusty_alloc/compare/rusty_alloc-api-v2.0.5...rusty_alloc-api-v2.1.0) - 2026-09-10 + +### Other + +- release v2.1.0 + ## [2.0.5](https://github.com/Remade-With-Rust/rusty_alloc/compare/rusty_alloc-api-v2.0.4...rusty_alloc-api-v2.0.5) - 2026-09-09 ### Other diff --git a/crates/rusty_alloc_api/Cargo.toml b/crates/rusty_alloc_api/Cargo.toml index 2f1cca3..309e647 100644 --- a/crates/rusty_alloc_api/Cargo.toml +++ b/crates/rusty_alloc_api/Cargo.toml @@ -14,7 +14,7 @@ readme = "README.md" [dependencies] # A published crate needs a VERSION alongside the path: the path is what the # workspace builds against, the version is what crates.io resolves. -rusty_alloc = { path = "../rusty_alloc", version = "2.0.5", default-features = false } +rusty_alloc = { path = "../rusty_alloc", version = "2.1.0", default-features = false } [features] # Mirrors the core's (P3, docs/plans/small-metal.md). Default-on, so every