-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
116 lines (97 loc) · 3.39 KB
/
Copy pathCargo.toml
File metadata and controls
116 lines (97 loc) · 3.39 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
[package]
name = "ferrite"
version = "0.2.0"
edition = "2024"
[profile.release]
codegen-units = 1
opt-level = 3
# Full optimization + debug symbols for perf/flamegraph. lto=false keeps build
# times reasonable; strip="none" ensures symbols survive to the profiler.
[profile.profiling]
inherits = "release"
debug = true
strip = "none"
lto = false
# Maximizes codegen-unit parallelism for the many small rebuilds cargo-mutants
# requires. Disabling incremental and debug info keeps each build lean.
[profile.mutant]
inherits = "dev"
incremental = false
debug = 0
codegen-units = 256
[features]
default = ["tui"]
bench = []
tui = ["dep:ratatui", "dep:crossterm", "dep:ansi-to-tui"]
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage_nightly)'] }
[lints.clippy]
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
# Memory address arithmetic intentionally truncates usize → smaller types and
# uses unsigned↔signed casts for page-math, physical-address resolution, etc.
cast_possible_truncation = "allow"
cast_sign_loss = "allow"
cast_possible_wrap = "allow"
# Progress bars, throughput display, and histogram buckets cast u64/usize → f64.
# Precision loss beyond 2^52 is irrelevant for display-only values.
cast_precision_loss = "allow"
# SIMD intrinsics require casting *mut u64 → *mut __m512i with stricter alignment.
# Alignment is guaranteed by the mmap allocation (page-aligned). Scoped to ops/avx512.rs.
# cast_ptr_alignment = "allow"
# Pre-1.0 API surface — doc sections for every fallible fn are enforced but
# may be relaxed again if the churn outweighs the benefit.
# missing_errors_doc = "allow"
# Prefer #[inline] over #[inline(always)] — let the compiler decide; benchmark before allowing/using inline(always).
inline_always = "deny"
used_underscore_binding = "deny"
pub_underscore_fields = "deny"
# std assertion macros are banned crate-wide via clippy.toml (disallowed-macros) —
# use assert2::assert!/check! instead for readable failure output.
disallowed_macros = "deny"
# Force every suppression to justify itself; bare #[allow] hides intent and
# never warns if the lint stops firing.
allow_attributes = "deny"
allow_attributes_without_reason = "deny"
[dependencies]
ansi-to-tui = { version = "8.0.1", optional = true }
bitflags = "2.13.0"
clap = { version = "4.6.0", features = ["derive"] }
crossbeam-channel = "0.5.15"
crossterm = { version = "0.29.0", optional = true }
jiff = { version = "0.2.28", features = ["serde"] }
nix = { version = "0.31.2", features = ["mman", "process", "resource", "user"] }
owo-colors = { version = "4.3.0", features = ["supports-colors"] }
rand_xoshiro = "0.8.1"
ratatui = { version = "0.30.0", features = ["scrolling-regions"], optional = true }
rayon = "1.11.0"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
signal-hook = "0.4.4"
snafu = "0.9.1"
strum = { version = "0.28.0", features = ["derive"] }
supports-color = "3.0.2"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
[dev-dependencies]
assert2 = "0.4.0"
divan = "0.1.21"
gungraun = "0.19"
proptest = "1"
rstest = "0.26.1"
serial_test = "3.5.0"
tempfile = "3.27.0"
[[bench]]
name = "patterns"
harness = false
[[bench]]
name = "alloc"
harness = false
[[bench]]
name = "simd"
harness = false
required-features = ["bench"]
[[bench]]
name = "instructions"
harness = false
required-features = ["bench"]