[package] authors = ["The Nushell Project Developers"] build = "scripts/build.rs" default-run = "nu" description = "A new type of shell" documentation = "https://www.nushell.sh/book/" edition = "2021" exclude = ["images"] homepage = "https://www.nushell.sh" license = "MIT" name = "nu" repository = "https://github.com/nushell/nushell" rust-version = "1.80.1" version = "0.100.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [package.metadata.binstall] pkg-url = "{ repo }/releases/download/{ version }/{ name }-{ version }-{ target }.{ archive-format }" pkg-fmt = "tgz" [package.metadata.binstall.overrides.x86_64-pc-windows-msvc] pkg-fmt = "zip" [workspace] members = [ "crates/nu-cli", "crates/nu-engine", "crates/nu-parser", "crates/nu-system", "crates/nu-cmd-base", "crates/nu-cmd-extra", "crates/nu-cmd-lang", "crates/nu-cmd-plugin", "crates/nu-command", "crates/nu-color-config", "crates/nu-explore", "crates/nu-json", "crates/nu-lsp", "crates/nu-pretty-hex", "crates/nu-protocol", "crates/nu-derive-value", "crates/nu-plugin", "crates/nu-plugin-core", "crates/nu-plugin-engine", "crates/nu-plugin-protocol", "crates/nu-plugin-test-support", "crates/nu_plugin_inc", "crates/nu_plugin_gstat", "crates/nu_plugin_example", "crates/nu_plugin_query", "crates/nu_plugin_custom_values", "crates/nu_plugin_formats", "crates/nu_plugin_polars", "crates/nu_plugin_stress_internals", "crates/nu-std", "crates/nu-table", "crates/nu-term-grid", "crates/nu-test-support", "crates/nu-utils", "crates/nuon", ] [workspace.dependencies] alphanumeric-sort = "1.5" ansi-str = "0.8" anyhow = "1.0.82" base64 = "0.22.1" bracoxide = "0.1.4" brotli = "6.0" byteorder = "1.5" bytes = "1" bytesize = "1.3" calamine = "0.24.0" chardetng = "0.1.17" chrono = { default-features = false, version = "0.4.34" } chrono-humanize = "0.2.3" chrono-tz = "0.10" crossbeam-channel = "0.5.8" crossterm = "0.28.1" csv = "1.3" ctrlc = "3.4" dialoguer = { default-features = false, version = "0.11" } digest = { default-features = false, version = "0.10" } dirs = "5.0" dirs-sys = "0.4" dtparse = "2.0" encoding_rs = "0.8" fancy-regex = "0.14" filesize = "0.2" filetime = "0.2" fuzzy-matcher = "0.3" heck = "0.5.0" human-date-parser = "0.2.0" indexmap = "2.6" indicatif = "0.17" interprocess = "2.2.0" is_executable = "1.0" itertools = "0.13" libc = "0.2" libproc = "0.14" log = "0.4" lru = "0.12" lscolors = { version = "0.17", default-features = false } lsp-server = "0.7.5" lsp-types = { version = "0.95.0", features = ["proposed"] } mach2 = "0.4" md5 = { version = "0.10", package = "md-5" } miette = "7.2" mime = "0.3.17" mime_guess = "2.0" mockito = { version = "1.5", default-features = false } multipart-rs = "0.1.11" native-tls = "0.2" nix = { version = "0.29", default-features = false } notify-debouncer-full = { version = "0.3", default-features = false } nu-ansi-term = "0.50.1" num-format = "0.4" num-traits = "0.2" oem_cp = "2.0.0" omnipath = "0.1" open = "5.3" os_pipe = { version = "1.2", features = ["io_safety"] } pathdiff = "0.2" percent-encoding = "2" pretty_assertions = "1.4" print-positions = "0.6" proc-macro-error = { version = "1.0", default-features = false } proc-macro2 = "1.0" procfs = "0.16.0" pwd = "1.3" quick-xml = "0.32.0" quickcheck = "1.0" quickcheck_macros = "1.0" quote = "1.0" rand = "0.8" rand_chacha = "0.3.1" ratatui = "0.26" rayon = "1.10" reedline = "0.37.0" regex = "1.9.5" rmp = "0.8" rmp-serde = "1.3" ropey = "1.6.1" roxmltree = "0.19" rstest = { version = "0.18", default-features = false } rusqlite = "0.31" rust-embed = "8.5.0" serde = { version = "1.0" } serde_json = "1.0" serde_urlencoded = "0.7.1" serde_yaml = "0.9" sha2 = "0.10" strip-ansi-escapes = "0.2.0" syn = "2.0" sysinfo = "0.32" tabled = { version = "0.16.0", default-features = false } tempfile = "3.13" terminal_size = "0.3" titlecase = "2.0" toml = "0.8" trash = "5.2" umask = "2.1" unicode-segmentation = "1.12" unicode-width = "0.1" ureq = { version = "2.10", default-features = false } url = "2.2" uu_cp = "0.0.27" uu_mkdir = "0.0.27" uu_mktemp = "0.0.27" uu_mv = "0.0.27" uu_whoami = "0.0.27" uu_uname = "0.0.27" uucore = "0.0.27" uuid = "1.11.0" v_htmlescape = "0.15.0" wax = "0.6" which = "6.0.0" windows = "0.56" windows-sys = "0.48" winreg = "0.52" [workspace.lints.clippy] # Warning: workspace lints affect library code as well as tests, so don't enable lints that would be too noisy in tests like that. # todo = "warn" unchecked_duration_subtraction = "warn" [lints] workspace = true [dependencies] nu-cli = { path = "./crates/nu-cli", version = "0.100.0" } nu-cmd-base = { path = "./crates/nu-cmd-base", version = "0.100.0" } nu-cmd-lang = { path = "./crates/nu-cmd-lang", version = "0.100.0" } nu-cmd-plugin = { path = "./crates/nu-cmd-plugin", version = "0.100.0", optional = true } nu-cmd-extra = { path = "./crates/nu-cmd-extra", version = "0.100.0" } nu-command = { path = "./crates/nu-command", version = "0.100.0" } nu-engine = { path = "./crates/nu-engine", version = "0.100.0" } nu-explore = { path = "./crates/nu-explore", version = "0.100.0" } nu-lsp = { path = "./crates/nu-lsp/", version = "0.100.0" } nu-parser = { path = "./crates/nu-parser", version = "0.100.0" } nu-path = { path = "./crates/nu-path", version = "0.100.0" } nu-plugin-engine = { path = "./crates/nu-plugin-engine", optional = true, version = "0.100.0" } nu-protocol = { path = "./crates/nu-protocol", version = "0.100.0" } nu-std = { path = "./crates/nu-std", version = "0.100.0" } nu-system = { path = "./crates/nu-system", version = "0.100.0" } nu-utils = { path = "./crates/nu-utils", version = "0.100.0" } reedline = { workspace = true, features = ["bashisms", "sqlite"] } crossterm = { workspace = true } ctrlc = { workspace = true } dirs = { workspace = true } log = { workspace = true } miette = { workspace = true, features = ["fancy-no-backtrace", "fancy"] } mimalloc = { version = "0.1.42", default-features = false, optional = true } multipart-rs = { workspace = true } serde_json = { workspace = true } simplelog = "0.12" time = "0.3" [target.'cfg(not(target_os = "windows"))'.dependencies] # Our dependencies don't use OpenSSL on Windows openssl = { version = "0.10", features = ["vendored"], optional = true } [target.'cfg(windows)'.build-dependencies] winresource = "0.1" [target.'cfg(target_family = "unix")'.dependencies] nix = { workspace = true, default-features = false, features = [ "signal", "process", "fs", "term", ] } [dev-dependencies] nu-test-support = { path = "./crates/nu-test-support", version = "0.100.0" } nu-plugin-protocol = { path = "./crates/nu-plugin-protocol", version = "0.100.0" } nu-plugin-core = { path = "./crates/nu-plugin-core", version = "0.100.0" } assert_cmd = "2.0" dirs = { workspace = true } tango-bench = "0.6" pretty_assertions = { workspace = true } regex = { workspace = true } rstest = { workspace = true, default-features = false } serial_test = "3.1" tempfile = { workspace = true } [features] plugin = [ "nu-plugin-engine", "nu-cmd-plugin", "nu-cli/plugin", "nu-parser/plugin", "nu-command/plugin", "nu-protocol/plugin", "nu-engine/plugin", ] default = [ "plugin", "trash-support", "sqlite", "mimalloc", ] stable = ["default"] # NOTE: individual features are also passed to `nu-cmd-lang` that uses them to generate the feature matrix in the `version` command # Enable to statically link OpenSSL (perl is required, to build OpenSSL https://docs.rs/openssl/latest/openssl/); # otherwise the system version will be used. Not enabled by default because it takes a while to build static-link-openssl = ["dep:openssl", "nu-cmd-lang/static-link-openssl"] mimalloc = ["nu-cmd-lang/mimalloc", "dep:mimalloc"] # Optional system clipboard support in `reedline`, this behavior has problematic compatibility with some systems. # Missing X server/ Wayland can cause issues system-clipboard = [ "reedline/system_clipboard", "nu-cli/system-clipboard", "nu-cmd-lang/system-clipboard", ] # Stable (Default) trash-support = ["nu-command/trash-support", "nu-cmd-lang/trash-support"] # SQLite commands for nushell sqlite = ["nu-command/sqlite", "nu-cmd-lang/sqlite"] [profile.release] opt-level = "s" # Optimize for size strip = "debuginfo" lto = "thin" # build with `cargo build --profile profiling` # to analyze performance with tooling like linux perf [profile.profiling] inherits = "release" strip = false debug = true # build with `cargo build --profile ci` # to analyze performance with tooling like linux perf [profile.ci] inherits = "dev" strip = false debug = false # Main nu binary [[bin]] name = "nu" path = "src/main.rs" bench = false # To use a development version of a dependency please use a global override here # changing versions in each sub-crate of the workspace is tedious [patch.crates-io] # reedline = { git = "https://github.com/nushell/reedline", branch = "main" } # nu-ansi-term = {git = "https://github.com/nushell/nu-ansi-term.git", branch = "main"} # Run all benchmarks with `cargo bench` # Run individual benchmarks like `cargo bench -- ` e.g. `cargo bench -- parse` [[bench]] name = "benchmarks" harness = false