From 7868bb20609a284390409aa0e49a4759985b49cc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 25 Oct 2026 03:03:39 +0000 Subject: [PATCH] chore: release v0.17.0 --- Cargo.lock | 14 ++++----- Cargo.toml | 8 ++--- crates/rusty_h264-accel/CHANGELOG.md | 20 +++++++++++++ crates/rusty_h264-cli/Cargo.toml | 2 +- crates/rusty_h264-common/CHANGELOG.md | 36 ++++++++++++++++++++++ crates/rusty_h264-common/Cargo.toml | 2 +- crates/rusty_h264-decoder/CHANGELOG.md | 41 ++++++++++++++++++++++++++ crates/rusty_h264-encoder/CHANGELOG.md | 24 +++++++++++++++ crates/rusty_h264-encoder/Cargo.toml | 2 +- crates/rusty_h264/CHANGELOG.md | 17 +++++++++++ 10 files changed, 152 insertions(+), 14 deletions(-) create mode 100644 crates/rusty_h264-accel/CHANGELOG.md create mode 100644 crates/rusty_h264-common/CHANGELOG.md create mode 100644 crates/rusty_h264-decoder/CHANGELOG.md create mode 100644 crates/rusty_h264-encoder/CHANGELOG.md create mode 100644 crates/rusty_h264/CHANGELOG.md diff --git a/Cargo.lock b/Cargo.lock index 39792f8..14520d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -446,7 +446,7 @@ dependencies = [ [[package]] name = "rusty_h264" -version = "0.16.0" +version = "0.17.0" dependencies = [ "rusty_h264-common", "rusty_h264-decoder", @@ -455,14 +455,14 @@ dependencies = [ [[package]] name = "rusty_h264-accel" -version = "0.16.0" +version = "0.17.0" dependencies = [ "rusty_h264-common", ] [[package]] name = "rusty_h264-cli" -version = "0.16.0" +version = "0.17.0" dependencies = [ "rusty_h264", "rusty_h264-common", @@ -470,7 +470,7 @@ dependencies = [ [[package]] name = "rusty_h264-common" -version = "0.16.0" +version = "0.17.0" dependencies = [ "bytemuck", "libm", @@ -483,7 +483,7 @@ dependencies = [ [[package]] name = "rusty_h264-decoder" -version = "0.16.0" +version = "0.17.0" dependencies = [ "minifb", "rusty_h264-common", @@ -492,7 +492,7 @@ dependencies = [ [[package]] name = "rusty_h264-encoder" -version = "0.16.0" +version = "0.17.0" dependencies = [ "rusty_h264-accel", "rusty_h264-common", @@ -501,7 +501,7 @@ dependencies = [ [[package]] name = "rusty_h264-memprobe" -version = "0.16.0" +version = "0.17.0" dependencies = [ "rusty_h264-common", "rusty_h264-encoder", diff --git a/Cargo.toml b/Cargo.toml index 5deb32a..96e3b44 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ members = [ exclude = ["fuzz"] [workspace.package] -version = "0.16.0" +version = "0.17.0" edition = "2021" license = "BSD-2-Clause" repository = "https://github.com/remade-with-rust/rusty_h264" @@ -48,9 +48,9 @@ wide = { version = "0.7", default-features = false } # scalar oracle arm would be dead while every gate claimed to test it. Members # that want defaults opt back IN (enabling is allowed; only disabling is # ignored). -rusty_h264-common = { path = "crates/rusty_h264-common", version = "0.16.0", default-features = false } -rusty_h264-encoder = { path = "crates/rusty_h264-encoder", version = "0.16.0", default-features = false } -rusty_h264-decoder = { path = "crates/rusty_h264-decoder", version = "0.16.0", default-features = false } +rusty_h264-common = { path = "crates/rusty_h264-common", version = "0.17.0", default-features = false } +rusty_h264-encoder = { path = "crates/rusty_h264-encoder", version = "0.17.0", default-features = false } +rusty_h264-decoder = { path = "crates/rusty_h264-decoder", version = "0.17.0", default-features = false } [profile.release] opt-level = 3 diff --git a/crates/rusty_h264-accel/CHANGELOG.md b/crates/rusty_h264-accel/CHANGELOG.md new file mode 100644 index 0000000..a4aa623 --- /dev/null +++ b/crates/rusty_h264-accel/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-accel-v0.16.0...rusty_h264-accel-v0.17.0) - 2026-10-25 + +### Other + +- overflow-checks cost 22.5% of decode — moved to release-checked +- audit pass 2 — 6% to 89% of in-scope gates, every unit >=85% +- close H-03/04/05/07/13/14/15/16/31/39 + threat model +- use-protection-please first pass — 41 gates x 8 units, depth=deep +- an intra record is one boolean, and the filter stops touching a TLS +- pack a uniform macroblock from one block, not sixteen +- one motion test per macroblock edge when both sides are uniform diff --git a/crates/rusty_h264-cli/Cargo.toml b/crates/rusty_h264-cli/Cargo.toml index fccec08..43e3c21 100644 --- a/crates/rusty_h264-cli/Cargo.toml +++ b/crates/rusty_h264-cli/Cargo.toml @@ -18,7 +18,7 @@ path = "src/main.rs" [dependencies] # CLI default = asm. rusty_alloc comes from rusty_h264-common's default features # (pulled transitively); keep common's defaults on when disabling facade asm. -rusty_h264 = { path = "../rusty_h264", version = "0.16.0", default-features = false, features = ["std", "global-alloc"] } +rusty_h264 = { path = "../rusty_h264", version = "0.17.0", default-features = false, features = ["std", "global-alloc"] } rusty_h264-common = { workspace = true, features = ["std"] } diff --git a/crates/rusty_h264-common/CHANGELOG.md b/crates/rusty_h264-common/CHANGELOG.md new file mode 100644 index 0000000..fe6e976 --- /dev/null +++ b/crates/rusty_h264-common/CHANGELOG.md @@ -0,0 +1,36 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-common-v0.16.0...rusty_h264-common-v0.17.0) - 2026-10-25 + +### Other + +- bump rusty_alloc-api to =2.2.6 ([#19](https://github.com/Remade-With-Rust/rusty_h264/pull/19)) +- bump rusty_alloc-api to =2.2.5 ([#17](https://github.com/Remade-With-Rust/rusty_h264/pull/17)) +- 87% of every allocation was one Box::new that skipped its own pool +- narrow the motion grids to (i16,i16) - 2.90 GB of pool clear removed +- narrow the reference-index grids i32 -> i8 (-103 MB of memset) +- overflow-checks cost 22.5% of decode — moved to release-checked +- audit pass 2 — 6% to 89% of in-scope gates, every unit >=85% +- close H-03/04/05/07/13/14/15/16/31/39 + threat model +- use-protection-please first pass — 41 gates x 8 units, depth=deep +- put the 8x8-transform flag in the intra table, so the filter stops asking +- record one more refutation on the derivation's argument list +- move the derivation's output pointer into a register argument +- build the packed record where it lives (spills -72%) +- add a spill column to the row-hook census, and record what it settled +- outline the per-lane edge arms, now the minority case +- the filter keeps boundary strengths at byte width +- an intra record is one boolean, and the filter stops touching a TLS +- coded flags a word at a time, and a provable kind row +- pack a uniform macroblock from one block, not sixteen +- one motion test per macroblock edge when both sides are uniform +- take the uniformity answer from mb_kind instead of recomputing it +- fold the paired motion tests, share the edge nnz mask, split the hot prefix +- derive boundary strengths at u8, not i32 (-223 instrs on the decoder's derivation path) diff --git a/crates/rusty_h264-common/Cargo.toml b/crates/rusty_h264-common/Cargo.toml index 5031a5b..b87cede 100644 --- a/crates/rusty_h264-common/Cargo.toml +++ b/crates/rusty_h264-common/Cargo.toml @@ -20,7 +20,7 @@ wide = { workspace = true } bytemuck = "1" # Optional openh264 asm kernels (deblock, …). The unsafe FFI is quarantined inside # that crate; we call only its safe wrappers, so this crate stays forbid(unsafe). -rusty_h264-accel = { path = "../rusty_h264-accel", version = "0.16.0", optional = true } +rusty_h264-accel = { path = "../rusty_h264-accel", version = "0.17.0", optional = true } # Our own allocator, installed process-wide. Declared HERE because every crate and # every one of the 43 example/bench binaries links this crate, so one declaration # covers all routes. See the hazard note in src/lib.rs before making this non-optional. diff --git a/crates/rusty_h264-decoder/CHANGELOG.md b/crates/rusty_h264-decoder/CHANGELOG.md new file mode 100644 index 0000000..ca0f9ff --- /dev/null +++ b/crates/rusty_h264-decoder/CHANGELOG.md @@ -0,0 +1,41 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-decoder-v0.16.0...rusty_h264-decoder-v0.17.0) - 2026-10-25 + +### Fixed + +- the profile census compiles again, and the decoder builds no_std ([#20](https://github.com/Remade-With-Rust/rusty_h264/pull/20)) + +### Other + +- 87% of every allocation was one Box::new that skipped its own pool +- the plane recycle pool was never fed - 4.34 GB of wasted zeroing +- narrow the motion grids to (i16,i16) - 2.90 GB of pool clear removed +- the List-1 grids are B-only, so stop clearing them without B (-36%) +- four more, from the encoder and the PPS-gated grids +- the mvd cache stores what the context can read, not what was parsed +- second pass of the copy hunt — the census's own two blind spots +- carry the POC lookup table, not its per-block expansion (-37 MB) +- narrow the reference-index grids i32 -> i8 (-103 MB of memset) +- overflow-checks cost 22.5% of decode — moved to release-checked +- audit pass 2 — 6% to 89% of in-scope gates, every unit >=85% +- close H-03/04/05/07/13/14/15/16/31/39 + threat model +- use-protection-please first pass — 41 gates x 8 units, depth=deep +- no production panic sites — 47 to 0 (H-18) +- put the 8x8-transform flag in the intra table, so the filter stops asking +- move the derivation's output pointer into a register argument +- build the packed record where it lives (spills -72%) +- mark single-partition B macroblocks uniform (mb_uniform now -86..-96%) +- coded flags a word at a time, and a provable kind row +- pack a uniform macroblock from one block, not sixteen +- mark the B classes whose motion the decoder already knows is uniform +- one motion test per macroblock edge when both sides are uniform +- take the uniformity answer from mb_kind instead of recomputing it +- derive boundary strengths at u8, not i32 (-223 instrs on the decoder's derivation path) diff --git a/crates/rusty_h264-encoder/CHANGELOG.md b/crates/rusty_h264-encoder/CHANGELOG.md new file mode 100644 index 0000000..10802ab --- /dev/null +++ b/crates/rusty_h264-encoder/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-encoder-v0.16.0...rusty_h264-encoder-v0.17.0) - 2026-10-25 + +### Fixed + +- the profile census compiles again, and the decoder builds no_std ([#20](https://github.com/Remade-With-Rust/rusty_h264/pull/20)) + +### Other + +- narrow the motion grids to (i16,i16) - 2.90 GB of pool clear removed +- four more, from the encoder and the PPS-gated grids +- narrow the reference-index grids i32 -> i8 (-103 MB of memset) +- overflow-checks cost 22.5% of decode — moved to release-checked +- audit pass 2 — 6% to 89% of in-scope gates, every unit >=85% +- close H-03/04/05/07/13/14/15/16/31/39 + threat model +- use-protection-please first pass — 41 gates x 8 units, depth=deep diff --git a/crates/rusty_h264-encoder/Cargo.toml b/crates/rusty_h264-encoder/Cargo.toml index ad25776..936bf7b 100644 --- a/crates/rusty_h264-encoder/Cargo.toml +++ b/crates/rusty_h264-encoder/Cargo.toml @@ -19,7 +19,7 @@ rusty_h264-common = { workspace = true, default-features = false } # Optional hand-tuned asm acceleration (openh264 BSD-2 kernels). The unsafe FFI is # fully quarantined inside that crate; this crate calls only its safe wrappers, so # it stays forbid(unsafe) even with `--features asm`. -rusty_h264-accel = { path = "../rusty_h264-accel", version = "0.16.0", optional = true } +rusty_h264-accel = { path = "../rusty_h264-accel", version = "0.17.0", optional = true } [dev-dependencies] # The decoder is our round-trip oracle: encoder tests decode their own output and diff --git a/crates/rusty_h264/CHANGELOG.md b/crates/rusty_h264/CHANGELOG.md new file mode 100644 index 0000000..34564d5 --- /dev/null +++ b/crates/rusty_h264/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-v0.16.0...rusty_h264-v0.17.0) - 2026-10-25 + +### Other + +- overflow-checks cost 22.5% of decode — moved to release-checked +- audit pass 2 — 6% to 89% of in-scope gates, every unit >=85% +- close H-03/04/05/07/13/14/15/16/31/39 + threat model +- use-protection-please first pass — 41 gates x 8 units, depth=deep