Phase 5: no_std, parallelism, cache, benchmarks#8
Merged
gvonness-apolitical merged 7 commits intomainfrom Feb 26, 2026
Merged
Conversation
Three benchmark suites covering all major subsystems: - node_generation: GL Newton/Bogaert, Golub-Welsch, Clenshaw-Curtis - integration_1d: fixed-order, composite, GK, adaptive, tanh-sinh, oscillatory - cubature: tensor product, sparse grid, adaptive cubature, Monte Carlo (plain/Sobol/Halton)
Gate the crate behind #![cfg_attr(not(feature = "std"), no_std)] with alloc imports for heap types. Feature-gate std::error::Error impl. Replace HashMap with BTreeMap in sparse_grid for no_std compatibility. Use core:: paths for f64::consts and cmp::Ordering throughout.
Add optional `parallel` feature (requires `std`) providing: - QuadratureRule::integrate_composite_par for parallel panel evaluation - CubatureRule::integrate_par and integrate_box_par for parallel point evaluation - MonteCarloIntegrator::integrate_par for parallel MC/QMC integration - GaussLegendre::new_par for parallel node generation (Newton + Bogaert) Sobol/Halton QMC produce identical results to sequential (deterministic). Plain MC uses independent PRNG per chunk (statistically equivalent).
Add cache module with LazyLock-based precomputed GL rules (GL5-GL100). Add #[inline] to 39 trivial getters across all rule types and CubatureRule. Bump version to 1.0.0 and mark Phase 5 complete in ROADMAP.md.
Revert version to 0.1.0 (not yet released). Rewrite README with correct API examples, feature flag documentation, no_std and parallel usage. Update lib.rs crate docs with feature table, cubature and cache examples. Fix ROADMAP milestone versions and test counts.
No longer needed — all phases are complete and the README documents the current feature set.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
no_stdsupport (stddefault feature,allocfor heap types,BTreeMapin sparse grid,num-traitswithlibm)parallelfeature with rayon-based_parmethods (integrate_composite_par,integrate_par,integrate_box_par,MonteCarloIntegrator::integrate_par,GaussLegendre::new_par)cachemodule withLazyLock-based precomputed GL rules (GL5–GL100)#[inline]annotations on 39 trivial getters across all rule typesno_std/parallelusagelib.rscrate docs with feature table, cubature and cache examplesTest plan
cargo test— 172 unit + 38 doc tests passcargo test --all-features— 179 unit + 38 doc tests pass (7 parallel tests)cargo test --no-default-features— 172 unit + 37 doc tests passcargo clippy --all-features— cleancargo bench --no-run— all 3 benchmark binaries compile