Compare commits

...

6 Commits

Author SHA1 Message Date
682d593d3f Bump patch version (#16236)
Bump patch version
2025-07-29 22:19:36 +02:00
c4fed5ea84 Don't import IoError on nu-plugin-core without local-socket (#16279)
When you use `nu-plugin-core` without the `local-socket` feature, you
got the warning:
<img width="1182" height="353" alt="image"
src="https://github.com/user-attachments/assets/dd80af11-4963-4d48-8c93-43e6c2dabafa"
/>

This PR fixes that warning.
2025-07-29 22:19:13 +02:00
27865b9415 Port unsafe_op_in_unsafe_fn fix to FreeBSD (#16275)
Same general idea as https://github.com/nushell/nushell/pull/16266

Fixes the 2024 edition
[`unsafe_op_in_unsafe_fn`](https://doc.rust-lang.org/nightly/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html)
lint for FreeBSD as well

Add safety comments to both implementations and an assertion before
`MaybeUninit::assume_init`
2025-07-29 22:19:13 +02:00
pin
400da3c698 Fix #16261 (#16266)
- this PR should close #16261 
- fixes #16261

Confirmed to build with Rust-1.86 and to yield a working binary.
2025-07-29 22:19:13 +02:00
3729fcf667 fix(get): run_const uses --optional flag (#16268)
`Get::run_const()` was not update along `Get::run()` in #16007.

Co-authored-by: Bahex <17417311+Bahex@users.noreply.github.com>
2025-07-29 22:19:13 +02:00
f390ba1aae fix bare interpolation regression (#16235)
Regression from #16204 

Before:

![](f1995bc71f/before.svg)

After:

![](f1995bc71f/after.svg)

# Tests + Formatting
+1

---------

Co-authored-by: Bahex <17417311+Bahex@users.noreply.github.com>
2025-07-29 22:19:13 +02:00
54 changed files with 396 additions and 299 deletions

76
Cargo.lock generated
View File

@ -3583,7 +3583,7 @@ dependencies = [
[[package]]
name = "nu"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"assert_cmd",
"crossterm",
@ -3638,7 +3638,7 @@ dependencies = [
[[package]]
name = "nu-cli"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"chrono",
"crossterm",
@ -3675,7 +3675,7 @@ dependencies = [
[[package]]
name = "nu-cmd-base"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"indexmap",
"miette",
@ -3687,7 +3687,7 @@ dependencies = [
[[package]]
name = "nu-cmd-extra"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"fancy-regex",
"heck",
@ -3713,7 +3713,7 @@ dependencies = [
[[package]]
name = "nu-cmd-lang"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"itertools 0.14.0",
"miette",
@ -3730,7 +3730,7 @@ dependencies = [
[[package]]
name = "nu-cmd-plugin"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"itertools 0.14.0",
"nu-engine",
@ -3741,7 +3741,7 @@ dependencies = [
[[package]]
name = "nu-color-config"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"nu-ansi-term",
"nu-engine",
@ -3753,7 +3753,7 @@ dependencies = [
[[package]]
name = "nu-command"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"alphanumeric-sort",
"base64 0.22.1",
@ -3871,7 +3871,7 @@ dependencies = [
[[package]]
name = "nu-derive-value"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"heck",
"proc-macro-error2",
@ -3882,7 +3882,7 @@ dependencies = [
[[package]]
name = "nu-engine"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"fancy-regex",
"log",
@ -3894,7 +3894,7 @@ dependencies = [
[[package]]
name = "nu-experimental"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"itertools 0.14.0",
"thiserror 2.0.12",
@ -3902,7 +3902,7 @@ dependencies = [
[[package]]
name = "nu-explore"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"ansi-str",
"anyhow",
@ -3926,14 +3926,14 @@ dependencies = [
[[package]]
name = "nu-glob"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"doc-comment",
]
[[package]]
name = "nu-json"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"fancy-regex",
"linked-hash-map",
@ -3949,7 +3949,7 @@ dependencies = [
[[package]]
name = "nu-lsp"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"assert-json-diff",
"crossbeam-channel",
@ -3976,7 +3976,7 @@ dependencies = [
[[package]]
name = "nu-parser"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"bytesize",
"chrono",
@ -3993,7 +3993,7 @@ dependencies = [
[[package]]
name = "nu-path"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"dirs",
"omnipath",
@ -4003,7 +4003,7 @@ dependencies = [
[[package]]
name = "nu-plugin"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"log",
"nix 0.29.0",
@ -4019,7 +4019,7 @@ dependencies = [
[[package]]
name = "nu-plugin-core"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"interprocess",
"log",
@ -4033,7 +4033,7 @@ dependencies = [
[[package]]
name = "nu-plugin-engine"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"log",
"nu-engine",
@ -4049,7 +4049,7 @@ dependencies = [
[[package]]
name = "nu-plugin-protocol"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"nu-protocol",
"nu-utils",
@ -4061,7 +4061,7 @@ dependencies = [
[[package]]
name = "nu-plugin-test-support"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"nu-ansi-term",
"nu-cmd-lang",
@ -4079,7 +4079,7 @@ dependencies = [
[[package]]
name = "nu-pretty-hex"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"heapless",
"nu-ansi-term",
@ -4088,7 +4088,7 @@ dependencies = [
[[package]]
name = "nu-protocol"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"brotli",
"bytes",
@ -4130,7 +4130,7 @@ dependencies = [
[[package]]
name = "nu-std"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"log",
"miette",
@ -4141,7 +4141,7 @@ dependencies = [
[[package]]
name = "nu-system"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"chrono",
"itertools 0.14.0",
@ -4159,7 +4159,7 @@ dependencies = [
[[package]]
name = "nu-table"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"fancy-regex",
"nu-ansi-term",
@ -4172,7 +4172,7 @@ dependencies = [
[[package]]
name = "nu-term-grid"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"nu-utils",
"unicode-width 0.2.0",
@ -4180,7 +4180,7 @@ dependencies = [
[[package]]
name = "nu-test-support"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"nu-glob",
"nu-path",
@ -4192,7 +4192,7 @@ dependencies = [
[[package]]
name = "nu-utils"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"crossterm",
"crossterm_winapi",
@ -4221,7 +4221,7 @@ dependencies = [
[[package]]
name = "nu_plugin_example"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"nu-cmd-lang",
"nu-plugin",
@ -4231,7 +4231,7 @@ dependencies = [
[[package]]
name = "nu_plugin_formats"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"chrono",
"eml-parser",
@ -4246,7 +4246,7 @@ dependencies = [
[[package]]
name = "nu_plugin_gstat"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"git2",
"nu-plugin",
@ -4255,7 +4255,7 @@ dependencies = [
[[package]]
name = "nu_plugin_inc"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"nu-plugin",
"nu-protocol",
@ -4264,7 +4264,7 @@ dependencies = [
[[package]]
name = "nu_plugin_polars"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"aws-config",
"aws-credential-types",
@ -4303,7 +4303,7 @@ dependencies = [
[[package]]
name = "nu_plugin_query"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"gjson",
"nu-plugin",
@ -4318,7 +4318,7 @@ dependencies = [
[[package]]
name = "nu_plugin_stress_internals"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"interprocess",
"serde",
@ -4442,7 +4442,7 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
[[package]]
name = "nuon"
version = "0.106.0"
version = "0.106.1"
dependencies = [
"chrono",
"nu-engine",

View File

@ -11,7 +11,7 @@ license = "MIT"
name = "nu"
repository = "https://github.com/nushell/nushell"
rust-version = "1.86.0"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -203,23 +203,23 @@ used_underscore_binding = "warn"
workspace = true
[dependencies]
nu-cli = { path = "./crates/nu-cli", version = "0.106.0" }
nu-cmd-base = { path = "./crates/nu-cmd-base", version = "0.106.0" }
nu-cmd-extra = { path = "./crates/nu-cmd-extra", version = "0.106.0" }
nu-cmd-lang = { path = "./crates/nu-cmd-lang", version = "0.106.0" }
nu-cmd-plugin = { path = "./crates/nu-cmd-plugin", version = "0.106.0", optional = true }
nu-command = { path = "./crates/nu-command", version = "0.106.0", default-features = false, features = ["os"] }
nu-engine = { path = "./crates/nu-engine", version = "0.106.0" }
nu-experimental = { path = "./crates/nu-experimental", version = "0.106.0" }
nu-explore = { path = "./crates/nu-explore", version = "0.106.0" }
nu-lsp = { path = "./crates/nu-lsp/", version = "0.106.0" }
nu-parser = { path = "./crates/nu-parser", version = "0.106.0" }
nu-path = { path = "./crates/nu-path", version = "0.106.0" }
nu-plugin-engine = { path = "./crates/nu-plugin-engine", optional = true, version = "0.106.0" }
nu-protocol = { path = "./crates/nu-protocol", version = "0.106.0" }
nu-std = { path = "./crates/nu-std", version = "0.106.0" }
nu-system = { path = "./crates/nu-system", version = "0.106.0" }
nu-utils = { path = "./crates/nu-utils", version = "0.106.0" }
nu-cli = { path = "./crates/nu-cli", version = "0.106.1" }
nu-cmd-base = { path = "./crates/nu-cmd-base", version = "0.106.1" }
nu-cmd-extra = { path = "./crates/nu-cmd-extra", version = "0.106.1" }
nu-cmd-lang = { path = "./crates/nu-cmd-lang", version = "0.106.1" }
nu-cmd-plugin = { path = "./crates/nu-cmd-plugin", version = "0.106.1", optional = true }
nu-command = { path = "./crates/nu-command", version = "0.106.1", default-features = false, features = ["os"] }
nu-engine = { path = "./crates/nu-engine", version = "0.106.1" }
nu-experimental = { path = "./crates/nu-experimental", version = "0.106.1" }
nu-explore = { path = "./crates/nu-explore", version = "0.106.1" }
nu-lsp = { path = "./crates/nu-lsp/", version = "0.106.1" }
nu-parser = { path = "./crates/nu-parser", version = "0.106.1" }
nu-path = { path = "./crates/nu-path", version = "0.106.1" }
nu-plugin-engine = { path = "./crates/nu-plugin-engine", optional = true, version = "0.106.1" }
nu-protocol = { path = "./crates/nu-protocol", version = "0.106.1" }
nu-std = { path = "./crates/nu-std", version = "0.106.1" }
nu-system = { path = "./crates/nu-system", version = "0.106.1" }
nu-utils = { path = "./crates/nu-utils", version = "0.106.1" }
reedline = { workspace = true, features = ["bashisms", "sqlite"] }
crossterm = { workspace = true }
@ -248,9 +248,9 @@ nix = { workspace = true, default-features = false, features = [
] }
[dev-dependencies]
nu-test-support = { path = "./crates/nu-test-support", version = "0.106.0" }
nu-plugin-protocol = { path = "./crates/nu-plugin-protocol", version = "0.106.0" }
nu-plugin-core = { path = "./crates/nu-plugin-core", version = "0.106.0" }
nu-test-support = { path = "./crates/nu-test-support", version = "0.106.1" }
nu-plugin-protocol = { path = "./crates/nu-plugin-protocol", version = "0.106.1" }
nu-plugin-core = { path = "./crates/nu-plugin-core", version = "0.106.1" }
assert_cmd = "2.0"
dirs = { workspace = true }
tango-bench = "0.6"

View File

@ -5,29 +5,29 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cli"
edition = "2024"
license = "MIT"
name = "nu-cli"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
[dev-dependencies]
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.0" }
nu-command = { path = "../nu-command", version = "0.106.0" }
nu-std = { path = "../nu-std", version = "0.106.0" }
nu-test-support = { path = "../nu-test-support", version = "0.106.0" }
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.1" }
nu-command = { path = "../nu-command", version = "0.106.1" }
nu-std = { path = "../nu-std", version = "0.106.1" }
nu-test-support = { path = "../nu-test-support", version = "0.106.1" }
rstest = { workspace = true, default-features = false }
tempfile = { workspace = true }
[dependencies]
nu-cmd-base = { path = "../nu-cmd-base", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.0", features = ["os"] }
nu-glob = { path = "../nu-glob", version = "0.106.0" }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-parser = { path = "../nu-parser", version = "0.106.0" }
nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.106.0", optional = true }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", features = ["os"] }
nu-utils = { path = "../nu-utils", version = "0.106.0" }
nu-color-config = { path = "../nu-color-config", version = "0.106.0" }
nu-cmd-base = { path = "../nu-cmd-base", version = "0.106.1" }
nu-engine = { path = "../nu-engine", version = "0.106.1", features = ["os"] }
nu-glob = { path = "../nu-glob", version = "0.106.1" }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-parser = { path = "../nu-parser", version = "0.106.1" }
nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.106.1", optional = true }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", features = ["os"] }
nu-utils = { path = "../nu-utils", version = "0.106.1" }
nu-color-config = { path = "../nu-color-config", version = "0.106.1" }
nu-ansi-term = { workspace = true }
reedline = { workspace = true, features = ["bashisms", "sqlite"] }

View File

@ -5,7 +5,7 @@ edition = "2024"
license = "MIT"
name = "nu-cmd-base"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-base"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -13,10 +13,10 @@ version = "0.106.0"
workspace = true
[dependencies]
nu-engine = { path = "../nu-engine", version = "0.106.0", default-features = false }
nu-parser = { path = "../nu-parser", version = "0.106.0" }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", default-features = false }
nu-engine = { path = "../nu-engine", version = "0.106.1", default-features = false }
nu-parser = { path = "../nu-parser", version = "0.106.1" }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", default-features = false }
indexmap = { workspace = true }
miette = { workspace = true }

View File

@ -5,7 +5,7 @@ edition = "2024"
license = "MIT"
name = "nu-cmd-extra"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-extra"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -16,13 +16,13 @@ bench = false
workspace = true
[dependencies]
nu-cmd-base = { path = "../nu-cmd-base", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.0", default-features = false }
nu-json = { version = "0.106.0", path = "../nu-json" }
nu-parser = { path = "../nu-parser", version = "0.106.0" }
nu-pretty-hex = { version = "0.106.0", path = "../nu-pretty-hex" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nu-cmd-base = { path = "../nu-cmd-base", version = "0.106.1" }
nu-engine = { path = "../nu-engine", version = "0.106.1", default-features = false }
nu-json = { version = "0.106.1", path = "../nu-json" }
nu-parser = { path = "../nu-parser", version = "0.106.1" }
nu-pretty-hex = { version = "0.106.1", path = "../nu-pretty-hex" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
# Potential dependencies for extras
heck = { workspace = true }
@ -37,6 +37,6 @@ itertools = { workspace = true }
mime = { workspace = true }
[dev-dependencies]
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.0" }
nu-command = { path = "../nu-command", version = "0.106.0" }
nu-test-support = { path = "../nu-test-support", version = "0.106.0" }
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.1" }
nu-command = { path = "../nu-command", version = "0.106.1" }
nu-test-support = { path = "../nu-test-support", version = "0.106.1" }

View File

@ -6,7 +6,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-lang"
edition = "2024"
license = "MIT"
name = "nu-cmd-lang"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -15,12 +15,12 @@ bench = false
workspace = true
[dependencies]
nu-engine = { path = "../nu-engine", version = "0.106.0", default-features = false }
nu-experimental = { path = "../nu-experimental", version = "0.106.0" }
nu-parser = { path = "../nu-parser", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nu-cmd-base = { path = "../nu-cmd-base", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.1", default-features = false }
nu-experimental = { path = "../nu-experimental", version = "0.106.1" }
nu-parser = { path = "../nu-parser", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
nu-cmd-base = { path = "../nu-cmd-base", version = "0.106.1" }
itertools = { workspace = true }
shadow-rs = { version = "1.2", default-features = false }

View File

@ -5,7 +5,7 @@ edition = "2024"
license = "MIT"
name = "nu-cmd-plugin"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cmd-plugin"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -13,10 +13,10 @@ version = "0.106.0"
workspace = true
[dependencies]
nu-engine = { path = "../nu-engine", version = "0.106.0" }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", features = ["plugin"] }
nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.1" }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", features = ["plugin"] }
nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.106.1" }
itertools = { workspace = true }

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-color-confi
edition = "2024"
license = "MIT"
name = "nu-color-config"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -14,12 +14,12 @@ bench = false
workspace = true
[dependencies]
nu-protocol = { path = "../nu-protocol", version = "0.106.0", default-features = false }
nu-engine = { path = "../nu-engine", version = "0.106.0", default-features = false }
nu-json = { path = "../nu-json", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", default-features = false }
nu-engine = { path = "../nu-engine", version = "0.106.1", default-features = false }
nu-json = { path = "../nu-json", version = "0.106.1" }
nu-ansi-term = { workspace = true }
serde = { workspace = true, features = ["derive"] }
[dev-dependencies]
nu-test-support = { path = "../nu-test-support", version = "0.106.0" }
nu-test-support = { path = "../nu-test-support", version = "0.106.1" }

View File

@ -5,7 +5,7 @@ edition = "2024"
license = "MIT"
name = "nu-command"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-command"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -17,21 +17,21 @@ workspace = true
[dependencies]
nu-ansi-term = { workspace = true }
nu-cmd-base = { path = "../nu-cmd-base", version = "0.106.0" }
nu-color-config = { path = "../nu-color-config", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.0", default-features = false }
nu-experimental = { path = "../nu-experimental", version = "0.106.0" }
nu-glob = { path = "../nu-glob", version = "0.106.0" }
nu-json = { path = "../nu-json", version = "0.106.0" }
nu-parser = { path = "../nu-parser", version = "0.106.0" }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", default-features = false }
nu-system = { path = "../nu-system", version = "0.106.0" }
nu-table = { path = "../nu-table", version = "0.106.0" }
nu-term-grid = { path = "../nu-term-grid", version = "0.106.0" }
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nuon = { path = "../nuon", version = "0.106.0" }
nu-cmd-base = { path = "../nu-cmd-base", version = "0.106.1" }
nu-color-config = { path = "../nu-color-config", version = "0.106.1" }
nu-engine = { path = "../nu-engine", version = "0.106.1", default-features = false }
nu-experimental = { path = "../nu-experimental", version = "0.106.1" }
nu-glob = { path = "../nu-glob", version = "0.106.1" }
nu-json = { path = "../nu-json", version = "0.106.1" }
nu-parser = { path = "../nu-parser", version = "0.106.1" }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", default-features = false }
nu-system = { path = "../nu-system", version = "0.106.1" }
nu-table = { path = "../nu-table", version = "0.106.1" }
nu-term-grid = { path = "../nu-term-grid", version = "0.106.1" }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
nuon = { path = "../nuon", version = "0.106.1" }
alphanumeric-sort = { workspace = true }
base64 = { workspace = true }
@ -227,8 +227,8 @@ sqlite = ["rusqlite"]
trash-support = ["trash"]
[dev-dependencies]
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.0" }
nu-test-support = { path = "../nu-test-support", version = "0.106.0" }
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.1" }
nu-test-support = { path = "../nu-test-support", version = "0.106.1" }
dirs = { workspace = true }
mockito = { workspace = true, default-features = false }

View File

@ -114,13 +114,14 @@ If multiple cell paths are given, this will produce a list of values."#
) -> Result<PipelineData, ShellError> {
let cell_path: CellPath = call.req_const(working_set, 0)?;
let rest: Vec<CellPath> = call.rest_const(working_set, 1)?;
let ignore_errors = call.has_flag_const(working_set, "ignore-errors")?;
let optional = call.has_flag_const(working_set, "optional")?
|| call.has_flag_const(working_set, "ignore-errors")?;
let metadata = input.metadata();
action(
input,
cell_path,
rest,
ignore_errors,
optional,
working_set.permanent().signals().clone(),
call.head,
)

View File

@ -5,7 +5,7 @@ edition = "2024"
license = "MIT"
name = "nu-derive-value"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-derive-value"
version = "0.106.0"
version = "0.106.1"
[lib]
proc-macro = true

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-engine"
edition = "2024"
license = "MIT"
name = "nu-engine"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -14,10 +14,10 @@ bench = false
workspace = true
[dependencies]
nu-protocol = { path = "../nu-protocol", version = "0.106.0", default-features = false }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-glob = { path = "../nu-glob", version = "0.106.0" }
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", default-features = false }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-glob = { path = "../nu-glob", version = "0.106.1" }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
fancy-regex = { workspace = true }
log = { workspace = true }

View File

@ -5,7 +5,7 @@ edition = "2024"
license = "MIT"
name = "nu-experimental"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-experimental"
version = "0.106.0"
version = "0.106.1"
[dependencies]
itertools.workspace = true

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-explore"
edition = "2024"
license = "MIT"
name = "nu-explore"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -14,16 +14,16 @@ bench = false
workspace = true
[dependencies]
nu-protocol = { path = "../nu-protocol", version = "0.106.0" }
nu-parser = { path = "../nu-parser", version = "0.106.0" }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-color-config = { path = "../nu-color-config", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.0" }
nu-table = { path = "../nu-table", version = "0.106.0" }
nu-json = { path = "../nu-json", version = "0.106.0" }
nu-utils = { path = "../nu-utils", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1" }
nu-parser = { path = "../nu-parser", version = "0.106.1" }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-color-config = { path = "../nu-color-config", version = "0.106.1" }
nu-engine = { path = "../nu-engine", version = "0.106.1" }
nu-table = { path = "../nu-table", version = "0.106.1" }
nu-json = { path = "../nu-json", version = "0.106.1" }
nu-utils = { path = "../nu-utils", version = "0.106.1" }
nu-ansi-term = { workspace = true }
nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.106.0" }
nu-pretty-hex = { path = "../nu-pretty-hex", version = "0.106.1" }
anyhow = { workspace = true }
log = { workspace = true }

View File

@ -1,6 +1,6 @@
[package]
name = "nu-glob"
version = "0.106.0"
version = "0.106.1"
authors = ["The Nushell Project Developers", "The Rust Project Developers"]
license = "MIT/Apache-2.0"
description = """

View File

@ -8,7 +8,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-json"
edition = "2024"
license = "MIT"
name = "nu-json"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -24,11 +24,11 @@ linked-hash-map = { version = "0.5", optional = true }
num-traits = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
[dev-dependencies]
nu-test-support = { path = "../nu-test-support", version = "0.106.0" }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-test-support = { path = "../nu-test-support", version = "0.106.1" }
nu-path = { path = "../nu-path", version = "0.106.1" }
serde_json = "1.0"
fancy-regex = "0.14.0"
pretty_assertions = { workspace = true }

View File

@ -3,16 +3,16 @@ authors = ["The Nushell Project Developers"]
description = "Nushell's integrated LSP server"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-lsp"
name = "nu-lsp"
version = "0.106.0"
version = "0.106.1"
edition = "2024"
license = "MIT"
[dependencies]
nu-cli = { path = "../nu-cli", version = "0.106.0" }
nu-glob = { path = "../nu-glob", version = "0.106.0" }
nu-parser = { path = "../nu-parser", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0" }
nu-utils = { path = "../nu-utils", version = "0.106.0" }
nu-cli = { path = "../nu-cli", version = "0.106.1" }
nu-glob = { path = "../nu-glob", version = "0.106.1" }
nu-parser = { path = "../nu-parser", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1" }
nu-utils = { path = "../nu-utils", version = "0.106.1" }
crossbeam-channel = { workspace = true }
lsp-server = { workspace = true }
@ -26,11 +26,11 @@ serde_json = { workspace = true }
url = { workspace = true }
[dev-dependencies]
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.0" }
nu-command = { path = "../nu-command", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.0" }
nu-std = { path = "../nu-std", version = "0.106.0" }
nu-test-support = { path = "../nu-test-support", version = "0.106.0" }
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.1" }
nu-command = { path = "../nu-command", version = "0.106.1" }
nu-engine = { path = "../nu-engine", version = "0.106.1" }
nu-std = { path = "../nu-std", version = "0.106.1" }
nu-test-support = { path = "../nu-test-support", version = "0.106.1" }
assert-json-diff = "2.0"

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-parser"
edition = "2024"
license = "MIT"
name = "nu-parser"
version = "0.106.0"
version = "0.106.1"
exclude = ["/fuzz"]
[lib]
@ -15,11 +15,11 @@ bench = false
workspace = true
[dependencies]
nu-engine = { path = "../nu-engine", version = "0.106.0", default-features = false }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-plugin-engine = { path = "../nu-plugin-engine", optional = true, version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nu-engine = { path = "../nu-engine", version = "0.106.1", default-features = false }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-plugin-engine = { path = "../nu-plugin-engine", optional = true, version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
bytesize = { workspace = true }
chrono = { default-features = false, features = ['std'], workspace = true }

View File

@ -2004,7 +2004,11 @@ pub fn parse_paren_expr(
if fcp_error_count > starting_error_count {
let malformed_subexpr = working_set.parse_errors[starting_error_count..]
.first()
.is_some_and(|e| matches!(e, ParseError::Unclosed(right, _) if right == ")" ));
.is_some_and(|e| match e {
ParseError::Unclosed(right, _) if (right == ")") => true,
ParseError::Unbalanced(left, right, _) if left == "(" && right == ")" => true,
_ => false,
});
if malformed_subexpr {
working_set.parse_errors.truncate(starting_error_count);
parse_string_interpolation(working_set, span)

View File

@ -1636,6 +1636,46 @@ mod string {
assert_eq!(subexprs[3], &Expr::String("bar".to_string()));
}
/// PR with summary of the issue: https://github.com/nushell/nushell/pull/16235
/// Release Notes Mention: https://www.nushell.sh/blog/2025-07-23-nushell_0_106_0.html#regression-bare-word-interpolation-on-both-sides-does-not-work-toc
#[test]
pub fn parse_string_interpolation_bare_starting_and_ending_subexpr() {
let engine_state = EngineState::new();
let mut working_set = StateWorkingSet::new(&engine_state);
let block = parse(
&mut working_set,
None,
b"(100 + 20 + 3)/bar/(300 + 20 + 1)",
true,
);
assert!(working_set.parse_errors.is_empty(),);
let [pipeline] = block.pipelines.as_slice() else {
panic!("expected 1 pipeline")
};
let [element] = pipeline.elements.as_slice() else {
panic!("expected 1 pipeline element")
};
assert!(element.redirection.is_none());
let Expr::StringInterpolation(expressions) = &element.expr.expr else {
panic!("Expected an `Expr::StringInterpolation`")
};
let subexprs: Vec<_> = expressions.iter().map(|e| &e.expr).collect();
let [
Expr::FullCellPath(..),
Expr::String(s),
Expr::FullCellPath(..),
] = subexprs.as_slice()
else {
panic!("AST does not have the expected structure")
};
assert_eq!(s, "/bar/");
}
#[test]
pub fn parse_string_interpolation_bare_starting_subexpr_external_arg() {
let engine_state = EngineState::new();

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-path"
edition = "2024"
license = "MIT"
name = "nu-path"
version = "0.106.0"
version = "0.106.1"
exclude = ["/fuzz"]
[lib]

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-plugin-core
edition = "2024"
license = "MIT"
name = "nu-plugin-core"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -14,8 +14,8 @@ bench = false
workspace = true
[dependencies]
nu-protocol = { path = "../nu-protocol", version = "0.106.0" }
nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.106.0", default-features = false }
nu-protocol = { path = "../nu-protocol", version = "0.106.1" }
nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.106.1", default-features = false }
rmp-serde = { workspace = true }
serde = { workspace = true }

View File

@ -3,6 +3,7 @@ use std::io::{Stdin, Stdout};
use std::process::{Child, ChildStdin, ChildStdout, Command, Stdio};
use nu_protocol::ShellError;
#[cfg(feature = "local-socket")] // unused without that feature
use nu_protocol::shell_error::io::IoError;
#[cfg(feature = "local-socket")]

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-plugin-engi
edition = "2024"
license = "MIT"
name = "nu-plugin-engine"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -14,12 +14,12 @@ bench = false
workspace = true
[dependencies]
nu-engine = { path = "../nu-engine", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0" }
nu-system = { path = "../nu-system", version = "0.106.0" }
nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.106.0" }
nu-plugin-core = { path = "../nu-plugin-core", version = "0.106.0", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1" }
nu-system = { path = "../nu-system", version = "0.106.1" }
nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.106.1" }
nu-plugin-core = { path = "../nu-plugin-core", version = "0.106.1", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.1" }
serde = { workspace = true }
log = { workspace = true }

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-plugin-prot
edition = "2024"
license = "MIT"
name = "nu-plugin-protocol"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -14,8 +14,8 @@ bench = false
workspace = true
[dependencies]
nu-protocol = { path = "../nu-protocol", version = "0.106.0", features = ["plugin"] }
nu-utils = { path = "../nu-utils", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", features = ["plugin"] }
nu-utils = { path = "../nu-utils", version = "0.106.1" }
rmp-serde = { workspace = true }
serde = { workspace = true, features = ["derive"] }

View File

@ -1,6 +1,6 @@
[package]
name = "nu-plugin-test-support"
version = "0.106.0"
version = "0.106.1"
edition = "2024"
license = "MIT"
description = "Testing support for Nushell plugins"
@ -15,14 +15,14 @@ workspace = true
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
nu-engine = { path = "../nu-engine", version = "0.106.0", features = ["plugin"] }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", features = ["plugin"] }
nu-parser = { path = "../nu-parser", version = "0.106.0", features = ["plugin"] }
nu-plugin = { path = "../nu-plugin", version = "0.106.0" }
nu-plugin-core = { path = "../nu-plugin-core", version = "0.106.0" }
nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.106.0" }
nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.106.0" }
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.1", features = ["plugin"] }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", features = ["plugin"] }
nu-parser = { path = "../nu-parser", version = "0.106.1", features = ["plugin"] }
nu-plugin = { path = "../nu-plugin", version = "0.106.1" }
nu-plugin-core = { path = "../nu-plugin-core", version = "0.106.1" }
nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.106.1" }
nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.106.1" }
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.1" }
nu-ansi-term = { workspace = true }
similar = "2.7"

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-plugin"
edition = "2024"
license = "MIT"
name = "nu-plugin"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -14,11 +14,11 @@ bench = false
workspace = true
[dependencies]
nu-engine = { path = "../nu-engine", version = "0.106.0", features = ["plugin"] }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", features = ["plugin"] }
nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.106.0" }
nu-plugin-core = { path = "../nu-plugin-core", version = "0.106.0", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.1", features = ["plugin"] }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", features = ["plugin"] }
nu-plugin-protocol = { path = "../nu-plugin-protocol", version = "0.106.1" }
nu-plugin-core = { path = "../nu-plugin-core", version = "0.106.1", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.1" }
log = { workspace = true }
thiserror = "2.0.12"

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-pretty-hex"
edition = "2024"
license = "MIT"
name = "nu-pretty-hex"
version = "0.106.0"
version = "0.106.1"
[lib]
doctest = false

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-protocol"
edition = "2024"
license = "MIT"
name = "nu-protocol"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -16,12 +16,12 @@ bench = false
workspace = true
[dependencies]
nu-derive-value = { path = "../nu-derive-value", version = "0.106.0" }
nu-glob = { path = "../nu-glob", version = "0.106.0" }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-system = { path = "../nu-system", version = "0.106.0" }
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nu-experimental = { path = "../nu-experimental", version = "0.106.0" }
nu-derive-value = { path = "../nu-derive-value", version = "0.106.1" }
nu-glob = { path = "../nu-glob", version = "0.106.1" }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-system = { path = "../nu-system", version = "0.106.1" }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
nu-experimental = { path = "../nu-experimental", version = "0.106.1" }
brotli = { workspace = true, optional = true }
bytes = { workspace = true }
@ -69,8 +69,8 @@ plugin = [
[dev-dependencies]
serde_json = { workspace = true }
nu-test-support = { path = "../nu-test-support", version = "0.106.0" }
nu-utils = { path = "../nu-utils", version = "0.106.0" }
nu-test-support = { path = "../nu-test-support", version = "0.106.1" }
nu-utils = { path = "../nu-utils", version = "0.106.1" }
pretty_assertions = { workspace = true }
rstest = { workspace = true }
tempfile = { workspace = true }

View File

@ -5,12 +5,12 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-std"
edition = "2024"
license = "MIT"
name = "nu-std"
version = "0.106.0"
version = "0.106.1"
[dependencies]
nu-parser = { version = "0.106.0", path = "../nu-parser" }
nu-protocol = { version = "0.106.0", path = "../nu-protocol", default-features = false }
nu-engine = { version = "0.106.0", path = "../nu-engine", default-features = false }
nu-parser = { version = "0.106.1", path = "../nu-parser" }
nu-protocol = { version = "0.106.1", path = "../nu-protocol", default-features = false }
nu-engine = { version = "0.106.1", path = "../nu-engine", default-features = false }
miette = { workspace = true, features = ["fancy-no-backtrace"] }
log = "0.4"

View File

@ -3,7 +3,7 @@ authors = ["The Nushell Project Developers", "procs creators"]
description = "Nushell system querying"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-system"
name = "nu-system"
version = "0.106.0"
version = "0.106.1"
edition = "2024"
license = "MIT"

View File

@ -213,19 +213,39 @@ fn get_proc_args(pid: i32) -> io::Result<Vec<u8>> {
}
}
// For getting simple values from the sysctl interface
/// For getting simple values from the sysctl interface
///
/// # Safety
/// `T` needs to be of the structure that is expected to be returned by `sysctl` for the given
/// `ctl_name` sequence and will then be assumed to be of correct layout.
/// Thus only use it for primitive types or well defined fixed size types. For variable length
/// arrays that can be returned from `sysctl` use it directly (or write a proper wrapper handling
/// capacity management)
///
/// # Panics
/// If the size of the returned data diverges from the size of the expected `T`
unsafe fn get_ctl<T>(ctl_name: &[i32]) -> io::Result<T> {
let mut value: MaybeUninit<T> = MaybeUninit::uninit();
let mut value_len = mem::size_of_val(&value);
check(sysctl(
ctl_name.as_ptr(),
ctl_name.len() as u32,
value.as_mut_ptr() as *mut libc::c_void,
&mut value_len,
ptr::null(),
0,
))?;
Ok(value.assume_init())
// SAFETY: lengths to the pointers is provided, uninitialized data with checked length provided
// Only assume initialized when the written data doesn't diverge in length, layout is the
// safety responsibility of the caller.
check(unsafe {
sysctl(
ctl_name.as_ptr(),
ctl_name.len() as u32,
value.as_mut_ptr() as *mut libc::c_void,
&mut value_len,
ptr::null(),
0,
)
})?;
assert_eq!(
value_len,
mem::size_of_val(&value),
"Data requested from from `sysctl` diverged in size from the expected return type. For variable length data you need to manually truncate the data to the valid returned size!"
);
Ok(unsafe { value.assume_init() })
}
fn get_pagesize() -> io::Result<libc::c_int> {

View File

@ -93,25 +93,36 @@ fn check(err: libc::c_int) -> std::io::Result<()> {
}
}
/// Call `sysctl()` in read mode (i.e. the last two arguments are NULL and zero)
/// Call `sysctl()` in read mode (i.e. the last two arguments to set new values are NULL and zero)
///
/// `name` is a flag array.
///
/// # Safety
/// `data` needs to be writable for `data_len` or be a `ptr::null()` paired with `data_len = 0` to
/// poll for the expected length in the `data_len` out parameter.
///
/// For more details see: https://man.netbsd.org/sysctl.3
unsafe fn sysctl_get(
name: *const i32,
name_len: u32,
data: *mut libc::c_void,
data_len: *mut usize,
) -> i32 {
sysctl(
name,
name_len,
data,
data_len,
// NetBSD and OpenBSD differ in mutability for this pointer, but it's null anyway
#[cfg(target_os = "netbsd")]
ptr::null(),
#[cfg(target_os = "openbsd")]
ptr::null_mut(),
0,
)
// Safety: Call to unsafe function `libc::sysctl`
unsafe {
sysctl(
name,
name_len,
data,
data_len,
// NetBSD and OpenBSD differ in mutability for this pointer, but it's null anyway
#[cfg(target_os = "netbsd")]
ptr::null(),
#[cfg(target_os = "openbsd")]
ptr::null_mut(),
0,
)
}
}
fn get_procs() -> io::Result<Vec<KInfoProc>> {
@ -247,17 +258,37 @@ fn get_proc_args(pid: i32, what: i32) -> io::Result<Vec<u8>> {
}
}
// For getting simple values from the sysctl interface
/// For getting simple values from the sysctl interface
///
/// # Safety
/// `T` needs to be of the structure that is expected to be returned by `sysctl` for the given
/// `ctl_name` sequence and will then be assumed to be of correct layout.
/// Thus only use it for primitive types or well defined fixed size types. For variable length
/// arrays that can be returned from `sysctl` use it directly (or write a proper wrapper handling
/// capacity management)
///
/// # Panics
/// If the size of the returned data diverges from the size of the expected `T`
unsafe fn get_ctl<T>(ctl_name: &[i32]) -> io::Result<T> {
let mut value: MaybeUninit<T> = MaybeUninit::uninit();
let mut value_len = mem::size_of_val(&value);
check(sysctl_get(
ctl_name.as_ptr(),
ctl_name.len() as u32,
value.as_mut_ptr() as *mut libc::c_void,
&mut value_len,
))?;
Ok(value.assume_init())
// SAFETY: lengths to the pointers is provided, uninitialized data with checked length provided
// Only assume initialized when the written data doesn't diverge in length, layout is the
// safety responsibility of the caller.
check(unsafe {
sysctl_get(
ctl_name.as_ptr(),
ctl_name.len() as u32,
value.as_mut_ptr() as *mut libc::c_void,
&mut value_len,
)
})?;
assert_eq!(
value_len,
mem::size_of_val(&value),
"Data requested from from `sysctl` diverged in size from the expected return type. For variable length data you need to manually truncate the data to the valid returned size!"
);
Ok(unsafe { value.assume_init() })
}
fn get_pagesize() -> io::Result<libc::c_int> {

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-table"
edition = "2024"
license = "MIT"
name = "nu-table"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -14,13 +14,13 @@ bench = false
workspace = true
[dependencies]
nu-protocol = { path = "../nu-protocol", version = "0.106.0", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nu-engine = { path = "../nu-engine", version = "0.106.0", default-features = false }
nu-color-config = { path = "../nu-color-config", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
nu-engine = { path = "../nu-engine", version = "0.106.1", default-features = false }
nu-color-config = { path = "../nu-color-config", version = "0.106.1" }
nu-ansi-term = { workspace = true }
fancy-regex = { workspace = true }
tabled = { workspace = true, features = ["ansi"], default-features = false }
[dev-dependencies]
# nu-test-support = { path="../nu-test-support", version = "0.106.0" }
# nu-test-support = { path="../nu-test-support", version = "0.106.1" }

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-term-grid"
edition = "2024"
license = "MIT"
name = "nu-term-grid"
version = "0.106.0"
version = "0.106.1"
[lib]
bench = false
@ -14,6 +14,6 @@ bench = false
workspace = true
[dependencies]
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
unicode-width = { workspace = true }

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu-test-suppor
edition = "2024"
license = "MIT"
name = "nu-test-support"
version = "0.106.0"
version = "0.106.1"
[lib]
doctest = false
@ -15,9 +15,9 @@ bench = false
workspace = true
[dependencies]
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-glob = { path = "../nu-glob", version = "0.106.0" }
nu-utils = { path = "../nu-utils", version = "0.106.0" }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-glob = { path = "../nu-glob", version = "0.106.1" }
nu-utils = { path = "../nu-utils", version = "0.106.1" }
num-format = { workspace = true }
which = { workspace = true }

View File

@ -5,7 +5,7 @@ edition = "2024"
license = "MIT"
name = "nu-utils"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-utils"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[[bin]]

View File

@ -1,6 +1,6 @@
# Nushell Config File
#
# version = "0.106.0"
# version = "0.106.1"
$env.config.color_config = {
separator: white
leading_trailing_space_bg: { attr: n }

View File

@ -1,7 +1,7 @@
# Default Nushell Environment Config File
# These "sensible defaults" are set before the user's `env.nu` is loaded
#
# version = "0.106.0"
# version = "0.106.1"
$env.PROMPT_COMMAND = {||
let dir = match (do -i { $env.PWD | path relative-to $nu.home-path }) {

View File

@ -3,7 +3,7 @@
# Warning: This file is intended for documentation purposes only and
# is not intended to be used as an actual configuration file as-is.
#
# version = "0.106.0"
# version = "0.106.1"
#
# A `config.nu` file is used to override default Nushell settings,
# define (or import) custom commands, or run any other startup tasks.

View File

@ -1,6 +1,6 @@
# Nushell Environment Config File Documentation
#
# version = "0.106.0"
# version = "0.106.1"
#
# Previously, environment variables were typically configured in `env.nu`.
# In general, most configuration can and should be performed in `config.nu`

View File

@ -1,7 +1,7 @@
# config.nu
#
# Installed by:
# version = "0.106.0"
# version = "0.106.1"
#
# This file is used to override default Nushell settings, define
# (or import) custom commands, or run any other startup tasks.

View File

@ -1,7 +1,7 @@
# env.nu
#
# Installed by:
# version = "0.106.0"
# version = "0.106.1"
#
# Previously, environment variables were typically configured in `env.nu`.
# In general, most configuration can and should be performed in `config.nu`

View File

@ -10,10 +10,10 @@ name = "nu_plugin_custom_values"
bench = false
[dependencies]
nu-plugin = { path = "../nu-plugin", version = "0.106.0", features = [] }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", features = ["plugin"] }
nu-plugin = { path = "../nu-plugin", version = "0.106.1", features = [] }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", features = ["plugin"] }
serde = { workspace = true }
typetag = "0.2"
[dev-dependencies]
nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.106.0" }
nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.106.1" }

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_exam
edition = "2024"
license = "MIT"
name = "nu_plugin_example"
version = "0.106.0"
version = "0.106.1"
[[bin]]
name = "nu_plugin_example"
@ -15,9 +15,9 @@ bench = false
bench = false
[dependencies]
nu-plugin = { path = "../nu-plugin", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", features = ["plugin"] }
nu-plugin = { path = "../nu-plugin", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", features = ["plugin"] }
[dev-dependencies]
nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.106.0" }
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.0" }
nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.106.1" }
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.1" }

View File

@ -5,12 +5,12 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_form
edition = "2024"
license = "MIT"
name = "nu_plugin_formats"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
nu-plugin = { path = "../nu-plugin", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", features = ["plugin"] }
nu-plugin = { path = "../nu-plugin", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", features = ["plugin"] }
indexmap = { workspace = true }
eml-parser = "0.1"
@ -20,4 +20,4 @@ plist = "1.7"
chrono = "0.4"
[dev-dependencies]
nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.106.0" }
nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.106.1" }

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_gsta
edition = "2024"
license = "MIT"
name = "nu_plugin_gstat"
version = "0.106.0"
version = "0.106.1"
[lib]
doctest = false
@ -16,7 +16,7 @@ name = "nu_plugin_gstat"
bench = false
[dependencies]
nu-plugin = { path = "../nu-plugin", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0" }
nu-plugin = { path = "../nu-plugin", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1" }
git2 = "0.20"

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_inc"
edition = "2024"
license = "MIT"
name = "nu_plugin_inc"
version = "0.106.0"
version = "0.106.1"
[lib]
doctest = false
@ -16,7 +16,7 @@ name = "nu_plugin_inc"
bench = false
[dependencies]
nu-plugin = { path = "../nu-plugin", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", features = ["plugin"] }
nu-plugin = { path = "../nu-plugin", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", features = ["plugin"] }
semver = "1.0"

View File

@ -6,7 +6,7 @@
# it also allows us to test the plugin interface with something manually implemented in a scripting
# language without adding any extra dependencies to our tests.
const NUSHELL_VERSION = "0.106.0"
const NUSHELL_VERSION = "0.106.1"
const PLUGIN_VERSION = "0.1.1" # bump if you change commands!
def main [--stdio] {

View File

@ -5,7 +5,7 @@ edition = "2024"
license = "MIT"
name = "nu_plugin_polars"
repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_polars"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -17,10 +17,10 @@ bench = false
bench = false
[dependencies]
nu-protocol = { path = "../nu-protocol", version = "0.106.0" }
nu-plugin = { path = "../nu-plugin", version = "0.106.0" }
nu-path = { path = "../nu-path", version = "0.106.0" }
nu-utils = { path = "../nu-utils", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1" }
nu-plugin = { path = "../nu-plugin", version = "0.106.1" }
nu-path = { path = "../nu-path", version = "0.106.1" }
nu-utils = { path = "../nu-utils", version = "0.106.1" }
# Potential dependencies for extras
chrono = { workspace = true, features = [
@ -102,9 +102,9 @@ optional = false
version = "0.49"
[dev-dependencies]
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.0" }
nu-engine = { path = "../nu-engine", version = "0.106.0" }
nu-parser = { path = "../nu-parser", version = "0.106.0" }
nu-command = { path = "../nu-command", version = "0.106.0" }
nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.106.0" }
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.106.1" }
nu-engine = { path = "../nu-engine", version = "0.106.1" }
nu-parser = { path = "../nu-parser", version = "0.106.1" }
nu-command = { path = "../nu-command", version = "0.106.1" }
nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.106.1" }
tempfile.workspace = true

View File

@ -27,7 +27,7 @@ import sys
import json
NUSHELL_VERSION = "0.106.0"
NUSHELL_VERSION = "0.106.1"
PLUGIN_VERSION = "0.1.1" # bump if you change commands!

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_quer
edition = "2024"
license = "MIT"
name = "nu_plugin_query"
version = "0.106.0"
version = "0.106.1"
[lib]
doctest = false
@ -16,8 +16,8 @@ name = "nu_plugin_query"
bench = false
[dependencies]
nu-plugin = { path = "../nu-plugin", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0" }
nu-plugin = { path = "../nu-plugin", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1" }
gjson = "0.8"
scraper = { default-features = false, version = "0.23" }

View File

@ -5,7 +5,7 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nu_plugin_stre
edition = "2024"
license = "MIT"
name = "nu_plugin_stress_internals"
version = "0.106.0"
version = "0.106.1"
[[bin]]
name = "nu_plugin_stress_internals"

View File

@ -5,15 +5,15 @@ repository = "https://github.com/nushell/nushell/tree/main/crates/nuon"
edition = "2024"
license = "MIT"
name = "nuon"
version = "0.106.0"
version = "0.106.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
nu-parser = { path = "../nu-parser", version = "0.106.0" }
nu-protocol = { path = "../nu-protocol", version = "0.106.0", default-features = false }
nu-engine = { path = "../nu-engine", version = "0.106.0", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.0", default-features = false }
nu-parser = { path = "../nu-parser", version = "0.106.1" }
nu-protocol = { path = "../nu-protocol", version = "0.106.1", default-features = false }
nu-engine = { path = "../nu-engine", version = "0.106.1", default-features = false }
nu-utils = { path = "../nu-utils", version = "0.106.1", default-features = false }
[dev-dependencies]
chrono = { workspace = true }