Skip to content

Release v0.4.0#28

Merged
gvonness-apolitical merged 5 commits intomainfrom
release/v0.4.0
Feb 26, 2026
Merged

Release v0.4.0#28
gvonness-apolitical merged 5 commits intomainfrom
release/v0.4.0

Conversation

@gvonness-apolitical
Copy link
Contributor

Summary

  • BytecodeTape decomposition: split 2,689-line monolithic file into directory module with 10 focused submodules. Zero public API changes; benchmarks confirm no performance impact.
  • Reverse sweep deduplication: gradient_with_buf() and sparse_jacobian_par() now call shared reverse_sweep_core() instead of inlining the loop
  • CUDA macro extraction: deduplicated f32/f64 dispatch methods (-233 net lines)
  • nalgebra bumped from 0.33 to 0.34
  • Doc fixes (opcode count, MSRV, CONTRIBUTING test instructions, README API tables, SECURITY unsafe locations)
  • Version bump: 0.3.0 -> 0.4.0 (both echidna and echidna-optim)

Test plan

  • cargo test --features "bytecode,taylor,stde,diffop,serde,faer,nalgebra,ndarray" passes
  • cargo test -p echidna-optim passes
  • cargo clippy clean
  • Benchmark comparison shows no performance regression

Both methods inlined the same reverse sweep loop that reverse_sweep_core
already implements. Replace with calls to the shared function, which also
picks up the zero-adjoint skip optimization in gradient_with_buf.
Prepare for submodule decomposition. Pure rename via git mv,
zero content changes — preserves full blame history.
Split the 2,689-line monolith into logical submodules for navigability:
mod.rs (struct + construction + accessors), forward.rs, reverse.rs,
tangent.rs, jacobian.rs, sparse.rs, optimize.rs, taylor.rs, parallel.rs,
serde_support.rs, thread_local.rs.

Struct fields changed to pub(crate) for cross-module impl blocks.
Seven internal methods upgraded to pub(super) for cross-module calls.
Zero public API or behavioral changes.
BytecodeTape decomposition (10 submodules), reverse sweep
deduplication, CUDA macro extraction, nalgebra 0.34, and
accumulated doc/test improvements since v0.3.0.
@gvonness-apolitical gvonness-apolitical merged commit 764925c into main Feb 26, 2026
6 checks passed
@gvonness-apolitical gvonness-apolitical deleted the release/v0.4.0 branch February 26, 2026 01:52
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