Skip to content

Commit 0ac8fd5

Browse files
mivertowskiclaude
andcommitted
Release v0.4.1: codebase consolidation, property tests, and quality hardening
Consolidates DSL marker functions into shared dsl_common.rs, deduplicates backend stubs via unavailable_backend! macro, adds 13 proptest property tests for queue invariants and HLC ordering, documents all unsafe blocks with SAFETY comments, standardizes logging to tracing, fixes placeholder implementations (tenant suspension, handler registration, TLS resumption), adds ecosystem feature bundles, and overhauls README for publishing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 17538e6 commit 0ac8fd5

47 files changed

Lines changed: 1340 additions & 1564 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.4.1] - 2026-02-06
11+
12+
### Added
13+
14+
#### Property-Based Testing
15+
- **proptest integration** in `ringkernel-core` for queue and HLC invariants
16+
- Queue: capacity power-of-2 invariant, length bounds, FIFO ordering, stats consistency, enqueue/dequeue roundtrip, partitioned routing determinism (6 tests)
17+
- HLC: total ordering (reflexive, antisymmetric, transitive), zero-is-minimum, pack/unpack round-trip, tick strictly increasing, update causality preservation (7 tests)
18+
- 13 new property-based tests, increasing total test count from 1403 to 1416
19+
20+
#### Ecosystem Feature Bundles
21+
- **`web`** convenience feature combining `axum`, `tower`, and `grpc`
22+
- **`data`** convenience feature combining `arrow` and `polars`
23+
- **`monitoring`** convenience feature combining `tracing-integration` and `prometheus`
24+
25+
### Changed
26+
27+
#### DSL Consolidation
28+
- **Shared DSL marker functions** extracted to `ringkernel-codegen/src/dsl_common.rs`
29+
- 27 identical functions deduplicated: thread/block indices, synchronization primitives, math functions
30+
- Both `ringkernel-cuda-codegen` and `ringkernel-wgpu-codegen` now re-export from the shared module
31+
- ~300 lines of duplicate code eliminated
32+
33+
#### Backend Stub Deduplication
34+
- **`unavailable_backend!` macro** in `ringkernel-core/src/backend_stub.rs`
35+
- Single macro generates the full `RingKernelRuntime` stub for disabled backends
36+
- Applied to `ringkernel-cuda`, `ringkernel-wgpu`, and `ringkernel-metal`
37+
- ~100 lines of triplicated stub code eliminated
38+
39+
#### Logging Standardization
40+
- Replaced `eprintln!` with structured `tracing` macros in library code across 6 crates:
41+
- `ringkernel-core/src/observability.rs` — OTLP stub logging
42+
- `ringkernel-ir/src/optimize.rs` — optimization iteration warning
43+
- `ringkernel-accnet/src/cuda/runtime.rs` — GPU init, fallback, and error logging
44+
- `ringkernel-accnet/src/gui/app.rs` — backend status logging
45+
- `ringkernel-wavesim3d/src/simulation/block_actor_backend.rs` — cooperative kernel fallback
46+
- `ringkernel-wavesim3d/src/simulation/persistent_backend.rs` — grid size info
47+
48+
#### Unsafe Documentation
49+
- Added `// SAFETY:` comments to all `unsafe` blocks in GPU backend code (~80+ blocks):
50+
- `ringkernel-accnet/src/cuda/executor.rs` (5 blocks)
51+
- `ringkernel-graph/src/gpu/cuda.rs` (18 blocks)
52+
- `ringkernel-montecarlo/src/gpu/cuda.rs` (11 blocks)
53+
- `ringkernel-wavesim/src/simulation/cuda_compute.rs` (4 blocks)
54+
- `ringkernel-wavesim/src/simulation/cuda_packed.rs` (6 blocks)
55+
- `ringkernel-wavesim3d/src/simulation/gpu_backend.rs` (8 blocks)
56+
- `ringkernel-wavesim3d/src/simulation/block_actor_backend.rs` (21 blocks)
57+
- `ringkernel-wavesim3d/src/simulation/actor_backend.rs` (16 blocks)
58+
- `ringkernel-wavesim3d/src/visualization/renderer.rs` (1 block)
59+
60+
#### Hot-Path Performance
61+
- Added `#[inline]` annotations to queue hot-path methods (`try_enqueue`, `try_dequeue`, `len`, `is_empty`, `is_full`, `capacity`)
62+
- Added `#[inline]` to HLC timestamp operations (`tick`, `update`, `cmp`, `partial_cmp`)
63+
- Added `#[inline]` to control block state accessors
64+
- Eliminated unnecessary `clone()` in queue retry loop
65+
66+
### Fixed
67+
68+
- Tenant suspension now correctly sets `active` flag (was no-op)
69+
- Handler registration returns `Result` instead of panicking on duplicate ID
70+
- TLS session resumption stores actual session ticket data
71+
- CloudWatch audit sink returns explicit `Err` instead of silently dropping events
72+
1073
## [0.4.0] - 2026-01-25
1174

1275
### Added
@@ -1264,7 +1327,8 @@ println!("Load imbalance: {:.2}x", stats.load_imbalance());
12641327
- CLAUDE.md with build commands and architecture overview
12651328
- Code examples for all major features
12661329

1267-
[Unreleased]: https://github.com/mivertowski/RustCompute/compare/v0.4.0...HEAD
1330+
[Unreleased]: https://github.com/mivertowski/RustCompute/compare/v0.4.1...HEAD
1331+
[0.4.1]: https://github.com/mivertowski/RustCompute/compare/v0.4.0...v0.4.1
12681332
[0.4.0]: https://github.com/mivertowski/RustCompute/compare/v0.3.2...v0.4.0
12691333
[0.3.2]: https://github.com/mivertowski/RustCompute/compare/v0.3.1...v0.3.2
12701334
[0.3.1]: https://github.com/mivertowski/RustCompute/compare/v0.3.0...v0.3.1

Cargo.lock

Lines changed: 25 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ members = [
2727
]
2828

2929
[workspace.package]
30-
version = "0.4.0"
30+
version = "0.4.1"
3131
edition = "2021"
3232
authors = ["Michael Ivertowski <mivertowski@outlook.com>"]
3333
license = "Apache-2.0"
@@ -92,18 +92,18 @@ aws-config = { version = "1.6", features = ["behavior-version-latest"] }
9292
bytes = "1.9"
9393

9494
# Internal crates - version must match workspace version for publishing
95-
ringkernel-core = { version = "0.4.0", path = "crates/ringkernel-core" }
96-
ringkernel-derive = { version = "0.4.0", path = "crates/ringkernel-derive" }
97-
ringkernel-cpu = { version = "0.4.0", path = "crates/ringkernel-cpu" }
98-
ringkernel-cuda = { version = "0.4.0", path = "crates/ringkernel-cuda" }
99-
ringkernel-wgpu = { version = "0.4.0", path = "crates/ringkernel-wgpu" }
100-
ringkernel-metal = { version = "0.4.0", path = "crates/ringkernel-metal" }
101-
ringkernel-codegen = { version = "0.4.0", path = "crates/ringkernel-codegen" }
102-
ringkernel-cuda-codegen = { version = "0.4.0", path = "crates/ringkernel-cuda-codegen" }
103-
ringkernel-wgpu-codegen = { version = "0.4.0", path = "crates/ringkernel-wgpu-codegen" }
104-
ringkernel-ir = { version = "0.4.0", path = "crates/ringkernel-ir" }
105-
ringkernel-wavesim = { version = "0.4.0", path = "crates/ringkernel-wavesim" }
106-
ringkernel-ecosystem = { version = "0.4.0", path = "crates/ringkernel-ecosystem" }
95+
ringkernel-core = { version = "0.4.1", path = "crates/ringkernel-core" }
96+
ringkernel-derive = { version = "0.4.1", path = "crates/ringkernel-derive" }
97+
ringkernel-cpu = { version = "0.4.1", path = "crates/ringkernel-cpu" }
98+
ringkernel-cuda = { version = "0.4.1", path = "crates/ringkernel-cuda" }
99+
ringkernel-wgpu = { version = "0.4.1", path = "crates/ringkernel-wgpu" }
100+
ringkernel-metal = { version = "0.4.1", path = "crates/ringkernel-metal" }
101+
ringkernel-codegen = { version = "0.4.1", path = "crates/ringkernel-codegen" }
102+
ringkernel-cuda-codegen = { version = "0.4.1", path = "crates/ringkernel-cuda-codegen" }
103+
ringkernel-wgpu-codegen = { version = "0.4.1", path = "crates/ringkernel-wgpu-codegen" }
104+
ringkernel-ir = { version = "0.4.1", path = "crates/ringkernel-ir" }
105+
ringkernel-wavesim = { version = "0.4.1", path = "crates/ringkernel-wavesim" }
106+
ringkernel-ecosystem = { version = "0.4.1", path = "crates/ringkernel-ecosystem" }
107107

108108
[profile.release]
109109
lto = true

0 commit comments

Comments
 (0)