cargo-features = ["trim-paths", "panic-immediate-abort"] [workspace] members = [ "ush-obfuscate", "base62", "unshell-macros", "unshell-protocol", "unshell-leaves", "treetest", ] resolver = "2" [workspace.package] version = "0.1.0" edition = "2024" authors = ["ASTATIN3"] license = "MIT" repository = "https://github.com/Astatin3/unshell" include = ["LICENSE", "**/*.rs", "Cargo.toml"] [workspace.dependencies] rkyv = "0.8.16" thiserror = "2.0.18" chrono = "0.4.44" static_init = "1.0.4" syn = "2.0.117" quote = "1.0.45" proc-macro2 = "1.0.106" portable-pty = "0.9.0" unshell = { path = "." } unshell-protocol = { path = "./unshell-protocol" } unshell-leaves = { path = "./unshell-leaves" } unshell-macros = { path = "./unshell-macros" } # ush-obfuscate = { path = "./ush-obfuscate" } # base62 = { path = "./base62" } [package] name = "unshell" version.workspace = true edition.workspace = true description = "Pure no_std implementation of the UnShell Protocol" [features] default = [] log = [] log_debug = ["log", "dep:chrono"] # Leaf features leaf_endpoint = ["unshell-leaves/leaf_endpoint"] leaf_tui = ["unshell-leaves/leaf_tui"] # obfuscate_aes = ["ush-obfuscate/obfuscate_aes"] # obfuscate_ref = ["ush-obfuscate/obfuscate_ref"] [dependencies] rkyv = { workspace = true } thiserror = { workspace = true, optional = true } chrono = { workspace = true, optional = true } # ush-obfuscate = { workspace = true } static_init = { workspace = true } unshell-macros = { workspace = true } unshell-protocol = { workspace = true } unshell-leaves = { workspace = true } [[example]] name = "leaf_derive" path = "examples/protocol/leaf_derive.rs" [[example]] name = "remote_shell_endpoint" path = "examples/protocol/remote_shell_endpoint.rs" required-features = ["leaf_endpoint"] [[example]] name = "remote_shell_receive" path = "examples/protocol/remote_shell_receive.rs" required-features = ["leaf_endpoint"] [[example]] name = "remote_shell_single_endpoint" path = "examples/protocol/remote_shell_single_endpoint.rs" required-features = ["leaf_endpoint"] [[example]] name = "bench" path = "examples/protocol/bench/bench.rs" [[example]] name = "op_encode_call" path = "examples/protocol/bench/op_encode_call.rs" [[example]] name = "op_decode_call" path = "examples/protocol/bench/op_decode_call.rs" [[example]] name = "op_forward_call_receive" path = "examples/protocol/bench/op_forward_call_receive.rs" [[example]] name = "op_local_call_receive" path = "examples/protocol/bench/op_local_call_receive.rs" [[example]] name = "op_hook_data_receive" path = "examples/protocol/bench/op_hook_data_receive.rs" [profile.minimize] inherits = "release" strip = true # Strip symbols from the binary opt-level = "z" # Optimize for size lto = true # Link tree optimization codegen-units = 1 panic = "immediate-abort" debug = false # Remove debug trim-paths="all" [lints.rust] elided_lifetimes_in_paths = "warn" future_incompatible = { level = "warn", priority = -1 } nonstandard_style = { level = "warn", priority = -1 } rust_2018_idioms = { level = "warn", priority = -1 } rust_2021_prelude_collisions = "warn" semicolon_in_expressions_from_macros = "warn" unsafe_op_in_unsafe_fn = "warn" unused_import_braces = "warn" unused_lifetimes = "warn" trivial_casts = "allow" missing_docs = "warn"