[workspace] members = ["kernel", "libs/*", "build/*", "loader", "loader/api", "libs/ktest/macros"] resolver = "3" [workspace.package] version = "0.1.0" edition = "2024" authors = ["Jonas Kruckenberg "] license = "MIT OR Apache-2.0" [workspace.lints.rust] # allow loom unexpected_cfgs = { level = "warn", check-cfg = ['cfg(loom)'] } [workspace.lints.clippy] # numeric safety #arithmetic_side_effects = "deny" TODO audit arithmetic & reenable cast_possible_truncation = "deny" cast_possible_wrap = "deny" cast_precision_loss = "deny" cast_sign_loss = "deny" cast_lossless = "deny" default_numeric_fallback = "deny" checked_conversions = "deny" float_arithmetic = "deny" float_cmp = "deny" # pointer safety cast_ptr_alignment = "deny" ptr_as_ptr = "deny" ptr_cast_constness = "deny" ref_as_ptr = "deny" transmute_ptr_to_ptr = "deny" ## panic safety #indexing_slicing = "deny" #panic = "deny" #panic_in_result_fn = "deny" # stack overflow prevention large_futures = "deny" large_stack_arrays = "deny" large_stack_frames = "deny" large_types_passed_by_value = "deny" recursive_format_impl = "deny" # style undocumented_unsafe_blocks = "deny" as_underscore = "deny" alloc_instead_of_core = "deny" #allow_attributes = "deny" allow_attributes_without_reason = "deny" default_trait_access = "deny" cloned_instead_of_copied = "deny" fn_params_excessive_bools = "deny" struct_excessive_bools = "deny" filter_map_next = "deny" explicit_iter_loop = "deny" flat_map_option = "deny" iter_filter_is_ok = "deny" iter_filter_is_some = "deny" manual_assert = "deny" manual_is_power_of_two = "deny" manual_is_variant_and = "deny" manual_let_else = "deny" manual_ok_or = "deny" match_bool = "deny" missing_fields_in_debug = "deny" semicolon_if_nothing_returned = "deny" trivially_copy_pass_by_ref = "deny" unnecessary_wraps = "deny" unnested_or_patterns = "deny" too_many_arguments = "allow" # docs missing_panics_doc = "deny" missing_errors_doc = "deny" [workspace.dependencies] kaddr2line = { path = "libs/kaddr2line" } kbacktrace = { path = "libs/kbacktrace" } riscv = { path = "libs/riscv" } spin = { path = "libs/spin" } trap = { path = "libs/trap" } cpu-local = { path = "libs/cpu-local" } unwind2 = { path = "libs/unwind2" } wast = { path = "libs/wast" } wavltree = { path = "libs/wavltree" } loader-api = { path = "loader/api" } fdt = { path = "libs/fdt" } ksharded-slab = { path = "libs/ksharded-slab" } ktest = { path = "libs/ktest" } uart-16550 = { path = "libs/uart-16550" } fastrand = { path = "libs/fastrand" } abort = { path = "libs/abort" } panic-unwind2 = { path = "libs/panic-unwind2" } util = { path = "libs/util"} kasync = { path = "libs/kasync" } # 3rd-party dependencies cfg-if = "1.0.0" log = "0.4.27" bitflags = "2.9.1" lock_api = "0.4.12" xmas-elf = "0.10.0" static_assertions = "1.1.0" rand = { version = "0.9.1", default-features = false } rand_chacha = { version = "0.9.0", default-features = false } arrayvec = { version = "0.7.6", default-features = false } gimli = { version = "0.31.1", default-features = false, features = ["read"] } talc = { version = "4.4.2", default-features = false, features = ["lock_api", "counters"] } smallvec = { version = "1", default-features = false } rustc-demangle = "0.1" fallible-iterator = { version = "0.3.0", default-features = false } bumpalo = "3.17.0" ouroboros = "0.18.5" mycelium-bitfield = "0.1.5" tracing = { version = "0.2", git = "https://github.com/tokio-rs/tracing", branch = "master", default-features = false, features = ["attributes"] } tracing-core = { version = "0.2", git = "https://github.com/tokio-rs/tracing", branch = "master", default-features = false } anyhow = { version = "1.0.98", default-features = false } loom = "0.7" criterion = "0.6.0" lazy_static = "1.5.0" cordyceps = "0.3.4" futures = { version = "0.3.31", default-features = false } pin-project = "1.1.10" # wast dependencies unicode-width = { version = "0.2.0" } memchr = { version = "2.7.4", default-features = false } leb128fmt = { version = "0.1.0", default-features = false } wasm-encoder = { version = "0.232.0", default-features = false } wat = "1.219.1" # cranelift dependencies hashbrown = { version = "0.15", default-features = false, features = [ "inline-more", "nightly", "default-hasher", ] } wasmparser = { version = "0.228", default-features = false, features = ["features", "validate", "simd"] } target-lexicon = { version = "0.13.2", default-features = false } cranelift-codegen = { git = "https://github.com/JonasKruckenberg/wasmtime.git", branch = "main", default-features = false, features = ["host-arch", "core"] } cranelift-frontend = { git = "https://github.com/JonasKruckenberg/wasmtime.git", branch = "main", default-features = false, features = ["core"] } cranelift-entity = { git = "https://github.com/JonasKruckenberg/wasmtime.git", branch = "main", default-features = false } wasmtime-slab = "34.0.0" # build dependencies proc-macro2 = "1" quote = "1" syn = { version = "2", features = ["full"] } color-eyre = "0.6.4" eyre = "0.6.12" clap = { version = "4.5.38", features = ["derive", "env"] } serde = { version = "1.0.219", features = ["derive"] } toml = "0.8.22" toml_edit = "0.22.26" indoc = "2.0.6" tracing-subscriber = { version = "0.3", git = "https://github.com/tokio-rs/tracing", branch = "master" } tracing-error = { version = "0.2", git = "https://github.com/tokio-rs/tracing", branch = "master" } heck = "0.5.0" wait-timeout = "0.2.1" [profile.release] debug = "limited" # The kernel should be able to print stack traces of itself even in release mode # Custom profile for Loom tests: enable release optimizations so that the loom # tests are less slow, but don't disable debug assertions. [profile.loom] inherits = "test" lto = true opt-level = 3 [patch.crates-io] regalloc2 = { git = "https://github.com/JonasKruckenberg/regalloc2", branch = "jonas/refactor/static-machine-env" }