1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
name: ci
on:
push:
branches:
pull_request:
jobs:
gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: rustup toolchain install stable --profile minimal --component clippy,rustfmt
- run: cargo build
- run: cargo test
# Debug-release agreement is the regression net for the M1 overflow
# class, where the two profiles disagreed in the incumbent.
- run: cargo test --release
- run: cargo clippy --all-targets -- -D warnings
- run: cargo fmt --check
# Mechanism M4: the boundary epsilon is a power of two, never derived
# from the decimal-digit constant the incumbent shipped.
- run: '! grep -rn "f64::DIGITS" src tests'
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: rustup toolchain install 1.81.0 --profile minimal
# rust-version is a promise about the shipped library, so this job builds
# it and runs the examples in its docs on that exact release. The full
# test suite runs on stable in the gate job above.
#
# `cargo test --doc` compiles dev-dependencies, so the dev-dependencies
# table (proptest) is stripped first; the floor is about the library and
# its documented examples, not the test harness.
- run: sed -i '/^\[dev-dependencies\]$/,$d' Cargo.toml
- run: cargo +1.81.0 build --lib
- run: cargo +1.81.0 test --doc