-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (120 loc) · 4.48 KB
/
Copy pathci.yml
File metadata and controls
131 lines (120 loc) · 4.48 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
name: CI
on:
push:
branches: [master]
pull_request:
branches: [master]
env:
CARGO_TERM_COLOR: always
jobs:
# ── Basic compilation check ───────────────────────────────────────────
check:
name: cargo check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo check
# ── Test suite (unit + integration + doc-tests) ───────────────────────
test:
name: cargo test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test --all-targets
- run: cargo test --doc
# ── Lint with Clippy ──────────────────────────────────────────────────
clippy:
name: clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --all-targets -- -D warnings
# ── Formatting check ─────────────────────────────────────────────────
fmt:
name: rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --all -- --check
# ── Miri (undefined-behavior detector) ────────────────────────────────
miri:
name: miri
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: miri
- uses: Swatinem/rust-cache@v2
# Run single-threaded correctness tests under Miri.
# Multi-threaded tests are excluded because the seqlock protocol
# involves deliberate optimistic data races that Miri flags as UB
# (see README "Seqlock Memory Model Question").
- run: >
cargo +nightly miri test --test correctness -- --test-threads=1
--skip cross_thread
--skip blocking_recv
--skip stress_1m
--skip bounded_publish_blocks
--skip bounded_publish_batch_blocks
--skip subscriber_drop_unblocks
--skip subscriber_group_bounded_cross
--skip bounded_cross_thread
--skip mpmc_two_publishers
--skip mpmc_stress
--skip mpmc_blocking_recv
--skip mpmc_clone
# ── Cross-platform matrix build ──────────────────────────────────────
cross-platform:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo check
- run: cargo test --all-targets
# ── WASM build (verify no_std / WASM compatibility) ──────────────────
wasm:
name: wasm32 check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- run: cargo check --target wasm32-unknown-unknown
# ── No default features (pure no_std) ────────────────────────────────
no-default-features:
name: no-default-features
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo check --no-default-features
# ── Hugepages feature gate (Linux only) ──────────────────────────────
hugepages:
name: hugepages feature
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo check --features hugepages