@@ -6,8 +6,8 @@ clarity, and the fixed-dimension stack-allocation model.
66
77## Getting Started
88
9- Install Rust 1.97.1 through [ rustup] ( https://rustup.rs/ ) , Git, Python 3.14,
10- [ ` uv ` 0.12.3 ] ( https://docs.astral.sh/uv/ ) , and ` jq ` . Install the repository's
9+ Install Rust 1.98.0 through [ rustup] ( https://rustup.rs/ ) , Git, Python 3.14,
10+ [ ` uv ` 0.12.5 ] ( https://docs.astral.sh/uv/ ) , and ` jq ` . Install the repository's
1111pinned ` just ` version from its locked dependency graph:
1212
1313``` bash
@@ -25,6 +25,14 @@ just ci # run the comprehensive local CI path
2525Use ` just fix ` when you intentionally want formatters and automatic fixes to
2626change files. Run ` just --list ` for the full command surface.
2727
28+ Use ` just update ` for deliberate dependency and tool maintenance. It composes
29+ ` just update-dependencies ` , which advances Cargo dependency requirements and
30+ the Cargo/uv locks, with ` just update-cargo-tools ` , which upgrades only the
31+ Cargo CLI packages owned by ` setup-tools ` and atomically reconciles their root
32+ ` justfile ` pins. The tool updater requires ` cargo-install-update ` from the
33+ ` cargo-update ` package and does not touch unrelated Cargo executables or uv's
34+ user-global tool environments.
35+
2836The repository uses ` cargo-nextest ` for runnable Rust tests, ` cargo-machete `
2937for unused-dependency checks, and ` just cargo-lock-check ` to verify that the
3038committed Cargo lockfile matches the manifest. ` rumdl ` checks Markdown,
@@ -44,25 +52,34 @@ global `RUSTFLAGS='-D warnings'`, this denies lint warnings only for local
4452packages without changing rustc arguments and creating separate cache
4553artifacts. Rustdoc has a separate warning contract, so ` doc-check ` continues to
4654set ` RUSTDOCFLAGS='-D warnings' ` for the default and ` exact ` documentation
47- surfaces. See the [ Rust 1.97 release notes] ( https://doc.rust-lang.org/stable/releases.html#version-1970 -2026-07-09 )
55+ surfaces. See the [ Rust 1.98 release notes] ( https://doc.rust-lang.org/stable/releases.html#version-1980 -2026-08-20 )
4856and [ Cargo configuration reference] ( https://doc.rust-lang.org/cargo/reference/config.html#buildwarnings ) .
4957
50- The remaining Rust 1.97 tooling changes require no repository configuration:
51-
52- - Rust's default v0 symbol mangling is accepted. Repository code, benchmark
53- reporting, and support scripts do not parse raw Rust symbols or require the
54- legacy format. Any future symbol-processing tool must support v0 rather than
55- forcing the nightly-only legacy override.
56- - The warn-by-default ` linker_messages ` lint is covered by the manifest's
57- warnings-deny policy. The Rust 1.97.1 upgrade completed ` just ci ` on Linux,
58- macOS, and Windows without linker diagnostics, so no platform suppression is
59- justified.
60- - ` resolver.lockfile-path ` is not configured. Local, CI, release-benchmark, and
61- historical-comparison worktrees are writable and use the committed root
62- ` Cargo.lock ` ; an alternate path would split the lockfile and provenance source
63- without helping a read-only-source workflow.
64- - The updated must-use behavior for ` Result<_, Infallible> ` and
65- ` RepeatN::default ` do not intersect production code in this repository.
58+ Rust 1.98's ` f32 ` /` f64::algebraic_{add,sub,mul,div,rem} ` operations are
59+ forbidden in ` src/ ` , examples, and benchmark implementations. They permit
60+ real-number transformations such as reassociation with unspecified precision,
61+ which can invalidate the crate's documented error bounds and deterministic
62+ operation order. Their relaxed treatment of non-finite values and signed zero
63+ also conflicts with typed non-finite classification, while varying results
64+ would weaken reproducibility and benchmark comparability. Repository Semgrep
65+ rules enforce this policy; retain ordinary IEEE-754 operations and ` mul_add ` in
66+ the existing numerical paths.
67+
68+ Any future approximate or fast-math API requires a separate design issue, an
69+ explicit public contract, independent correctness analysis, and representative
70+ benchmarks. It must remain opt-in and must not change existing APIs.
71+
72+ The remaining Rust 1.98 changes require no repository configuration:
73+
74+ - ` core::fmt::NumBuffer ` , integer ` format_into ` , ` NonZero::from_str_radix ` ,
75+ circumfix stripping, UTF-16 decoding, and mutable atomic-slice APIs do not
76+ simplify an existing path or address a demonstrated bottleneck.
77+ - The compatibility changes for runtime symbols, trait-object lifetimes,
78+ ambiguous imports, attributes, structural equality, ` assert_eq! ` temporaries,
79+ and derived ordering require no source change after comprehensive validation.
80+ - New or promoted targets do not alter the Linux, macOS, and Windows MSVC CI
81+ matrix. Cargo 1.98's stable changes are fixes for Windows credential-provider
82+ line endings and diagnostic capitalization; no configuration change is needed.
6683
6784## Contributor Workflow
6885
0 commit comments