104 lines
2.7 KiB
TOML
104 lines
2.7 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = [
|
|
"fix",
|
|
"fix-bytecode",
|
|
"fix-compiler",
|
|
"fix-error",
|
|
"fix-lang",
|
|
"fix-macros",
|
|
"fix-runtime",
|
|
"fix-vm",
|
|
]
|
|
|
|
[workspace.dependencies]
|
|
bumpalo = {
|
|
version = "3.20",
|
|
features = [
|
|
"allocator-api2",
|
|
"boxed",
|
|
"collections",
|
|
]
|
|
}
|
|
ere = "0.2"
|
|
ghost-cell = "0.2"
|
|
hashbrown = "0.17"
|
|
num_enum = "0.7"
|
|
rnix = "0.14"
|
|
rowan = "0.16"
|
|
smallvec = { version = "1.15", features = ["const_generics", "const_new"] }
|
|
string-interner = "0.20"
|
|
gc-arena = { version = "0.7", features = ["hashbrown", "smallvec"] }
|
|
|
|
# https://emschwartz.me/your-clippy-config-should-be-stricter/
|
|
# tombi: format.rules.table-keys-order.disabled = true
|
|
[workspace.lints.clippy]
|
|
# Don't Panic - prevent panics from unwraps and unsafe slicing or indexing
|
|
string_slice = "warn"
|
|
indexing_slicing = "warn"
|
|
unwrap_used = "warn"
|
|
panic = "warn"
|
|
# WIP evaluator: several features are deliberately stubbed with todo!/unimplemented!
|
|
todo = "allow"
|
|
unimplemented = "allow"
|
|
unreachable = "warn"
|
|
get_unwrap = "warn"
|
|
unwrap_in_result = "warn"
|
|
unchecked_time_subtraction = "warn"
|
|
panic_in_result_fn = "warn"
|
|
# Optional - see post for caveats
|
|
# expect_used = "warn"
|
|
# arithmetic_side_effects = "warn"
|
|
|
|
# Don't Fail Silently - prevent dropped futures and swallowed errors
|
|
let_underscore_future = "warn"
|
|
let_underscore_must_use = "warn"
|
|
unused_result_ok = "warn"
|
|
map_err_ignore = "warn"
|
|
assertions_on_result_states = "warn"
|
|
|
|
# Don't Do Bad Async Stuff - prevent deadlocks and concurrency bugs
|
|
await_holding_lock = "warn"
|
|
await_holding_refcell_ref = "warn"
|
|
if_let_mutex = "warn" # only relevant on editions before 2024
|
|
large_futures = "warn"
|
|
|
|
# Don't Do Unsafe Things with Memory
|
|
mem_forget = "warn"
|
|
undocumented_unsafe_blocks = "warn"
|
|
multiple_unsafe_ops_per_block = "warn"
|
|
unnecessary_safety_doc = "warn"
|
|
unnecessary_safety_comment = "warn"
|
|
|
|
# Don't Do Potentially Incorrect Things with Numbers
|
|
float_cmp = "warn"
|
|
float_cmp_const = "warn"
|
|
lossy_float_literal = "warn"
|
|
cast_sign_loss = "warn"
|
|
invalid_upcast_comparisons = "warn"
|
|
# Optional - these effectively force you to document numeric invariants
|
|
# cast_possible_wrap = "warn"
|
|
# cast_precision_loss = "warn"
|
|
# cast_possible_truncation = "warn"
|
|
|
|
# Don't Do Bad Things That are Easy to Avoid
|
|
rc_mutex = "warn"
|
|
debug_assert_with_mut_call = "warn"
|
|
iter_not_returning_iterator = "warn"
|
|
expl_impl_clone_on_copy = "warn"
|
|
infallible_try_from = "warn"
|
|
dbg_macro = "warn"
|
|
|
|
# Don't `allow` Your Way Around These Lints - every suppression must be
|
|
# a deliberate #[expect(..., reason = "…")] rather than a silent #[allow]
|
|
allow_attributes = "warn"
|
|
allow_attributes_without_reason = "warn"
|
|
|
|
[profile.lto]
|
|
inherits = "release"
|
|
lto = true
|
|
|
|
[profile.profiling]
|
|
inherits = "release"
|
|
debug = true
|