[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