From a113ed0a3ee5f6a2ebbdff1a69e7aa057d7f9662 Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Mon, 9 Jun 2025 15:11:01 +0200 Subject: [PATCH 01/11] Release notes for `0.105.0` Please add your new features and breaking changes to the release notes by opening PRs against the `release-notes-0.105.0` branch. ## TODO - [ ] PRs that need to land before the release, e.g. [deprecations](https://github.com/nushell/nushell/labels/deprecation) or [removals](https://github.com/nushell/nushell/pulls?q=is%3Apr+is%3Aopen+label%3Aremoval-after-deprecation) - [ ] add the full changelog - [ ] categorize each PR - [ ] write all the sections and complete all the `TODO`s --- blog/2025-06-09-nushell_0_105_0.md | 79 ++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 blog/2025-06-09-nushell_0_105_0.md diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-09-nushell_0_105_0.md new file mode 100644 index 00000000000..6217685b398 --- /dev/null +++ b/blog/2025-06-09-nushell_0_105_0.md @@ -0,0 +1,79 @@ +--- +title: Nushell 0.105.0 +author: The Nu Authors +author_site: https://www.nushell.sh/blog +author_image: https://www.nushell.sh/blog/images/nu_logo.png +excerpt: Today, we're releasing version 0.105.0 of Nu. This release adds... +--- + + + + + +# Nushell 0.105.0 + + + +Today, we're releasing version 0.105.0 of Nu. This release adds... + +# Where to get it + +Nu 0.105.0 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.105.0) or from [crates.io](https://crates.io/crates/nu). If you have Rust installed you can install it using `cargo install nu`. + +As part of this release, we also publish a set of optional [plugins](https://www.nushell.sh/book/plugins.html) you can install and use with Nushell. + +# Table of contents + + + +# Highlights and themes of this release + + + + +# Changes + +## Additions + +## Breaking changes + +## Deprecations + +## Removals + +## Bug fixes and other changes + +# Notes for plugin developers + +# Hall of fame + +Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! :pray: + +| author | title | link | +| ------------------------------------ | ----- | ------------------------------------------------------- | +| [@author](https://github.com/author) | ... | [#12345](https://github.com/nushell/nushell/pull/12345) | + +# Full changelog + + From e2c1210f2b06e79bb29e1fb8d04b8bdf5e020f29 Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Mon, 9 Jun 2025 15:17:37 +0200 Subject: [PATCH 02/11] add full changelog --- blog/2025-06-09-nushell_0_105_0.md | 141 +++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-09-nushell_0_105_0.md index 6217685b398..ce059ef94b6 100644 --- a/blog/2025-06-09-nushell_0_105_0.md +++ b/blog/2025-06-09-nushell_0_105_0.md @@ -46,16 +46,40 @@ As part of this release, we also publish a set of optional [plugins](https://www ## Additions + +|author|title|link| +|-|-|-| + ## Breaking changes + +|author|title|link| +|-|-|-| + ## Deprecations + +|author|title|link| +|-|-|-| + ## Removals + +|author|title|link| +|-|-|-| + ## Bug fixes and other changes + +|author|title|link| +|-|-|-| + # Notes for plugin developers + +|author|title|link| +|-|-|-| + # Hall of fame Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! :pray: @@ -77,3 +101,120 @@ Afterwards, go through each PR and classify it as one of the following: - A documentation improvement, error message improvement, refactoring PR, clippy fix, typo fix, etc. These PRs go into the `# Hall of fame`. You can just copy the table row in this section and paste it to the `# Hall of fame` section above. Note that major refactorings may warrant a section in `# Highlights`. - Dependabot PRs and version bumps should be ignored. They will only be mentioned in `# Full changelog`. --> + +|author|title|link| +|-|-|-| +|[@132ikl](https://github.com/132ikl)|Update where documentation|[#15467](https://github.com/nushell/nushell/pull/15467)| +|[@132ikl](https://github.com/132ikl)|Add unified deprecation system and @deprecated attribute|[#15770](https://github.com/nushell/nushell/pull/15770)| +|[@132ikl](https://github.com/132ikl)|Partial workaround and deprecation warning for breaking change usage of #15654|[#15806](https://github.com/nushell/nushell/pull/15806)| +|[@132ikl](https://github.com/132ikl)|Make `parse` simple patterns ignore fields with placeholder (`_`)|[#15873](https://github.com/nushell/nushell/pull/15873)| +|[@132ikl](https://github.com/132ikl)|Disable flaky killing_job_kills_pids test on macOS|[#15874](https://github.com/nushell/nushell/pull/15874)| +|[@Bahex](https://github.com/Bahex)|refactor `Value::follow_cell_path` to reduce clones and return `Cow`|[#15640](https://github.com/nushell/nushell/pull/15640)| +|[@Bahex](https://github.com/Bahex)|Add `SyntaxShape::OneOf` syntax users can use|[#15646](https://github.com/nushell/nushell/pull/15646)| +|[@Bahex](https://github.com/Bahex)|feat!: Explicit cell-path case sensitivity syntax|[#15692](https://github.com/nushell/nushell/pull/15692)| +|[@Bahex](https://github.com/Bahex)|feat(where): Support stored closure|[#15697](https://github.com/nushell/nushell/pull/15697)| +|[@Bahex](https://github.com/Bahex)|fix parsing of bare word string interpolations that start with a sub expression|[#15735](https://github.com/nushell/nushell/pull/15735)| +|[@Bahex](https://github.com/Bahex)|fix: implicitly running .ps1 scripts with spaces in path|[#15781](https://github.com/nushell/nushell/pull/15781)| +|[@Bahex](https://github.com/Bahex)|feat(std-rfc): add `iter` module and `recurse` command|[#15840](https://github.com/nushell/nushell/pull/15840)| +|[@Bahex](https://github.com/Bahex)|Update deprecation warnings|[#15867](https://github.com/nushell/nushell/pull/15867)| +|[@CSharperMantle](https://github.com/CSharperMantle)|Correctly quote `nu.exe` and `nu.ico` path containing spaces in WiX|[#15881](https://github.com/nushell/nushell/pull/15881)| +|[@CSharperMantle](https://github.com/CSharperMantle)|Fixup: Fix regression caused by #15881|[#15889](https://github.com/nushell/nushell/pull/15889)| +|[@Cattle0Horse](https://github.com/Cattle0Horse)|fix(std/iter): align example descriptions with closure logic for find and find-index|[#15895](https://github.com/nushell/nushell/pull/15895)| +|[@Dorumin](https://github.com/Dorumin)|Update job_recv.rs|[#15673](https://github.com/nushell/nushell/pull/15673)| +|[@FlippinBerger](https://github.com/FlippinBerger)|Correct `use-facing` to `user-facing` in CONTRIBUTING.md|[#15761](https://github.com/nushell/nushell/pull/15761)| +|[@Kissaki](https://github.com/Kissaki)|Add `match` examples for simple value and alternative values|[#15732](https://github.com/nushell/nushell/pull/15732)| +|[@LazyPluto](https://github.com/LazyPluto)|fix: empty tables now respect `$env.config.use_ansi_coloring` (closes #14896)|[#15751](https://github.com/nushell/nushell/pull/15751)| +|[@LoicRiegel](https://github.com/LoicRiegel)|Remove legacy code in some core commands|[#15560](https://github.com/nushell/nushell/pull/15560)| +|[@LoicRiegel](https://github.com/LoicRiegel)|small refactoring around units and add tests|[#15746](https://github.com/nushell/nushell/pull/15746)| +|[@Mrfiregem](https://github.com/Mrfiregem)|Add lazy closure evaluation to `default` (#14160)|[#15654](https://github.com/nushell/nushell/pull/15654)| +|[@Mrfiregem](https://github.com/Mrfiregem)|Allow `path join` to read ByteStream input (#15128)|[#15736](https://github.com/nushell/nushell/pull/15736)| +|[@Mrfiregem](https://github.com/Mrfiregem)|`run-external` spreads command if it's a list|[#15776](https://github.com/nushell/nushell/pull/15776)| +|[@Tyarel8](https://github.com/Tyarel8)|change `http get` header example to use a record|[#15674](https://github.com/nushell/nushell/pull/15674)| +|[@Tyarel8](https://github.com/Tyarel8)|fix duplicate short_name in `ansi` command|[#15767](https://github.com/nushell/nushell/pull/15767)| +|[@Tyarel8](https://github.com/Tyarel8)|fix `kv set` examples|[#15769](https://github.com/nushell/nushell/pull/15769)| +|[@Tyarel8](https://github.com/Tyarel8)|feat(std): add comparison support to `bench` command|[#15843](https://github.com/nushell/nushell/pull/15843)| +|[@Tyarel8](https://github.com/Tyarel8)|feat(std): further `bench` improvements|[#15856](https://github.com/nushell/nushell/pull/15856)| +|[@Villa01](https://github.com/Villa01)|Improve error handling for unsupported --theme in to html command|[#15787](https://github.com/nushell/nushell/pull/15787)| +|[@WindSoilder](https://github.com/WindSoilder)|`source`: make sure the block is compiled when parsing|[#15798](https://github.com/nushell/nushell/pull/15798)| +|[@WindSoilder](https://github.com/WindSoilder)|overlay new: add `--reload(-r)` flag|[#15849](https://github.com/nushell/nushell/pull/15849)| +|[@app/dependabot](https://github.com/app/dependabot)|build(deps): bump crate-ci/typos from 1.31.1 to 1.31.2|[#15665](https://github.com/nushell/nushell/pull/15665)| +|[@app/dependabot](https://github.com/app/dependabot)|build(deps): bump actions-rust-lang/setup-rust-toolchain from 1.11.0 to 1.12.0|[#15666](https://github.com/nushell/nushell/pull/15666)| +|[@app/dependabot](https://github.com/app/dependabot)|build(deps): bump miette from 7.5.0 to 7.6.0|[#15667](https://github.com/nushell/nushell/pull/15667)| +|[@app/dependabot](https://github.com/app/dependabot)|build(deps): bump crate-ci/typos from 1.31.2 to 1.32.0|[#15708](https://github.com/nushell/nushell/pull/15708)| +|[@app/dependabot](https://github.com/app/dependabot)|build(deps): bump tokio from 1.44.2 to 1.45.0|[#15710](https://github.com/nushell/nushell/pull/15710)| +|[@app/dependabot](https://github.com/app/dependabot)|build(deps): bump quickcheck_macros from 1.0.0 to 1.1.0|[#15711](https://github.com/nushell/nushell/pull/15711)| +|[@app/dependabot](https://github.com/app/dependabot)|build(deps): bump tempfile from 3.15.0 to 3.20.0|[#15753](https://github.com/nushell/nushell/pull/15753)| +|[@app/dependabot](https://github.com/app/dependabot)|build(deps): bump crate-ci/typos from 1.32.0 to 1.33.1|[#15885](https://github.com/nushell/nushell/pull/15885)| +|[@app/dependabot](https://github.com/app/dependabot)|build(deps): bump itertools from 0.13.0 to 0.14.0|[#15886](https://github.com/nushell/nushell/pull/15886)| +|[@atahabaki](https://github.com/atahabaki)|Numbers proceeded with the escape character ignored fix|[#15684](https://github.com/nushell/nushell/pull/15684)| +|[@ayax79](https://github.com/ayax79)|Added `polars struct-encode-json`, providing the ability to encode structs as json|[#15678](https://github.com/nushell/nushell/pull/15678)| +|[@ayax79](https://github.com/ayax79)|Minor DataType refactor|[#15728](https://github.com/nushell/nushell/pull/15728)| +|[@ayax79](https://github.com/ayax79)|Rust 1.85, edition=2024|[#15741](https://github.com/nushell/nushell/pull/15741)| +|[@ayax79](https://github.com/ayax79)|Polars upgrade|[#15852](https://github.com/nushell/nushell/pull/15852)| +|[@ayax79](https://github.com/ayax79)|Allow `polars first` to be used with `polars group-by`|[#15855](https://github.com/nushell/nushell/pull/15855)| +|[@ayax79](https://github.com/ayax79)|Fix for null handling #15788|[#15857](https://github.com/nushell/nushell/pull/15857)| +|[@ayax79](https://github.com/ayax79)|Creates col and nth expressions when using paths on lazy frames.|[#15891](https://github.com/nushell/nushell/pull/15891)| +|[@ayax79](https://github.com/ayax79)|Add regex documentation/examples to `polars col`|[#15898](https://github.com/nushell/nushell/pull/15898)| +|[@blindFS](https://github.com/blindFS)|fix(parser): namespace pollution of constants by `use module.nu`|[#15518](https://github.com/nushell/nushell/pull/15518)| +|[@blindFS](https://github.com/blindFS)|fix: inefficient select with large row number|[#15730](https://github.com/nushell/nushell/pull/15730)| +|[@cablehead](https://github.com/cablehead)|fix: clear jobs _after_ traversing jobs for kill_all|[#15685](https://github.com/nushell/nushell/pull/15685)| +|[@colececil](https://github.com/colececil)|docs: Add vfox to list of tools supporting Nushell|[#15687](https://github.com/nushell/nushell/pull/15687)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Refactor: Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind`|[#15777](https://github.com/nushell/nushell/pull/15777)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Add `rustls` for TLS|[#15810](https://github.com/nushell/nushell/pull/15810)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix: use `ring` as a crypto provider instead of `aws_lc`|[#15812](https://github.com/nushell/nushell/pull/15812)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Provide a better error for prefix-only path for PWD|[#15817](https://github.com/nushell/nushell/pull/15817)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Move job errors into `ShellError::Job` variant|[#15820](https://github.com/nushell/nushell/pull/15820)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Add `debug env` command|[#15875](https://github.com/nushell/nushell/pull/15875)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix: Downgrade calamine to 0.26 to fix build without `--locked`|[#15908](https://github.com/nushell/nushell/pull/15908)| +|[@fdncred](https://github.com/fdncred)|allow powershell scripts in the path to be executed|[#15760](https://github.com/nushell/nushell/pull/15760)| +|[@fdncred](https://github.com/fdncred)|make sure new nul chars don't print in `char --list`|[#15858](https://github.com/nushell/nushell/pull/15858)| +|[@fdncred](https://github.com/fdncred)|update nushell to use coreutils v0.1.0 crates|[#15896](https://github.com/nushell/nushell/pull/15896)| +|[@fdncred](https://github.com/fdncred)|make `date humanize` use `human_time_from_now()`|[#15918](https://github.com/nushell/nushell/pull/15918)| +|[@flovilmart](https://github.com/flovilmart)|feat: Use reedline for input implementation|[#15369](https://github.com/nushell/nushell/pull/15369)| +|[@gmr458](https://github.com/gmr458)|feat(table): Add new 'single' table mode|[#15672](https://github.com/nushell/nushell/pull/15672)| +|[@gmr458](https://github.com/gmr458)|Add 'single' to supported table modes|[#15681](https://github.com/nushell/nushell/pull/15681)| +|[@hackeryarn](https://github.com/hackeryarn)|feat: make to nuon raw option remove all white space|[#15609](https://github.com/nushell/nushell/pull/15609)| +|[@hustcer](https://github.com/hustcer)|Fix Windows arm64 release binaries and winget related issues|[#15690](https://github.com/nushell/nushell/pull/15690)| +|[@hustcer](https://github.com/hustcer)|Add a lightweight MSI packages release workflow for winget|[#15800](https://github.com/nushell/nushell/pull/15800)| +|[@hustcer](https://github.com/hustcer)|Use nushell's fork for winget-pkgs publishing|[#15808](https://github.com/nushell/nushell/pull/15808)| +|[@hustcer](https://github.com/hustcer)|Bump dev version to 0.104.2|[#15809](https://github.com/nushell/nushell/pull/15809)| +|[@hustcer](https://github.com/hustcer)|Update comments of release-pkg.nu for building of MSI package|[#15815](https://github.com/nushell/nushell/pull/15815)| +|[@hustcer](https://github.com/hustcer)|Allow specifying MSI version via env var and workflow input|[#15828](https://github.com/nushell/nushell/pull/15828)| +|[@hustcer](https://github.com/hustcer)|Fix build failure of aarch64 and armv7 musl targets|[#15835](https://github.com/nushell/nushell/pull/15835)| +|[@hustcer](https://github.com/hustcer)|Try to fix PAT issue of winget publish account|[#15922](https://github.com/nushell/nushell/pull/15922)| +|[@jjflash95](https://github.com/jjflash95)|Fix #15571 panic on write to source parquet file|[#15601](https://github.com/nushell/nushell/pull/15601)| +|[@kamek-pf](https://github.com/kamek-pf)|fix(glob): Fix drive-letter glob expansion on Windows|[#15871](https://github.com/nushell/nushell/pull/15871)| +|[@kumarUjjawal](https://github.com/kumarUjjawal)|fix(which): remove required positional argument to allow spread input|[#15870](https://github.com/nushell/nushell/pull/15870)| +|[@kumarUjjawal](https://github.com/kumarUjjawal)|Better error handling for negative integer exponents in ** operator|[#15882](https://github.com/nushell/nushell/pull/15882)| +|[@lazenga](https://github.com/lazenga)|feat(to-md): add support for centering columns via CellPaths (#14552)|[#15861](https://github.com/nushell/nushell/pull/15861)| +|[@luismeyer95](https://github.com/luismeyer95)|fix(parser): don't parse closure in block position (fixes #15417)|[#15680](https://github.com/nushell/nushell/pull/15680)| +|[@luong-komorebi](https://github.com/luong-komorebi)|docs: update ubuntu version in PLATFORM_SUPPORT.md|[#15662](https://github.com/nushell/nushell/pull/15662)| +|[@musicinmybrain](https://github.com/musicinmybrain)|Update lscolors from 0.17 to 0.20|[#15737](https://github.com/nushell/nushell/pull/15737)| +|[@new-years-eve](https://github.com/new-years-eve)|Refactor `find` to handle regex search and non-regex search the same way|[#15839](https://github.com/nushell/nushell/pull/15839)| +|[@noahfraiture](https://github.com/noahfraiture)|feat: default http protocol when none used in http request|[#15804](https://github.com/nushell/nushell/pull/15804)| +|[@ofek](https://github.com/ofek)|Fix typo in example config.nu|[#15910](https://github.com/nushell/nushell/pull/15910)| +|[@ofek](https://github.com/ofek)|Enable `shell_integration.osc9_9` by default on Windows|[#15914](https://github.com/nushell/nushell/pull/15914)| +|[@pyz4](https://github.com/pyz4)|feat(polars): add `polars horizontal` aggregation command|[#15656](https://github.com/nushell/nushell/pull/15656)| +|[@pyz4](https://github.com/pyz4)|feat(polars): introducing new `polars replace`|[#15706](https://github.com/nushell/nushell/pull/15706)| +|[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars unique` to allow expressions inputs|[#15771](https://github.com/nushell/nushell/pull/15771)| +|[@pyz4](https://github.com/pyz4)|feat(polars): add `polars math` expression|[#15822](https://github.com/nushell/nushell/pull/15822)| +|[@pyz4](https://github.com/pyz4)|fix(polars): add Value::Record to `NuExpression::can_downcast` logic|[#15826](https://github.com/nushell/nushell/pull/15826)| +|[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars shift` to allow expressions inputs|[#15834](https://github.com/nushell/nushell/pull/15834)| +|[@pyz4](https://github.com/pyz4)|feat(polars): add `maintain-order` flag to `polars group-by` and allow expression inputs in `polars filter`|[#15865](https://github.com/nushell/nushell/pull/15865)| +|[@pyz4](https://github.com/pyz4)|fix(polars): swap out pivot for pivot_stable to suppress warning message|[#15913](https://github.com/nushell/nushell/pull/15913)| +|[@raoulkent](https://github.com/raoulkent)|reorder `cal`s `input_output_types`|[#15909](https://github.com/nushell/nushell/pull/15909)| +|[@rritik772](https://github.com/rritik772)|[FIX] #15813 passing infinity to random float generate causes error|[#15818](https://github.com/nushell/nushell/pull/15818)| +|[@sholderbach](https://github.com/sholderbach)|Clean public API of `EngineState` and friends|[#15636](https://github.com/nushell/nushell/pull/15636)| +|[@sholderbach](https://github.com/sholderbach)|Pull reedline development version|[#15912](https://github.com/nushell/nushell/pull/15912)| +|[@snickerdoodle2](https://github.com/snickerdoodle2)|(gstat): add config option to disable tag calculation|[#15893](https://github.com/nushell/nushell/pull/15893)| +|[@tindzk](https://github.com/tindzk)|docs: fix available fields in `history import` command|[#15686](https://github.com/nushell/nushell/pull/15686)| +|[@vivainio](https://github.com/vivainio)|std-rfc/kv: optimize kv get by only selecting one row from the stor db|[#15792](https://github.com/nushell/nushell/pull/15792)| +|[@weirdan](https://github.com/weirdan)|Environment-aware help for `open` and `save`|[#15651](https://github.com/nushell/nushell/pull/15651)| +|[@weirdan](https://github.com/weirdan)|Set content_type for `view span` output|[#15842](https://github.com/nushell/nushell/pull/15842)| +|[@ysthakur](https://github.com/ysthakur)|Bump to 0.104.1 dev version|[#15669](https://github.com/nushell/nushell/pull/15669)| +|[@ysthakur](https://github.com/ysthakur)|Use Default for making Suggestions in attribute_completions|[#15764](https://github.com/nushell/nushell/pull/15764)| +|[@ysthakur](https://github.com/ysthakur)|Handle multiple exact matches|[#15772](https://github.com/nushell/nushell/pull/15772)| +|[@zhiburt](https://github.com/zhiburt)|Fix table wrap emojie|[#15138](https://github.com/nushell/nushell/pull/15138)| +|[@zhiburt](https://github.com/zhiburt)|nu-table/ 1 refactoring + a few optimizations + small fix|[#15653](https://github.com/nushell/nushell/pull/15653)| +|[@zhiburt](https://github.com/zhiburt)|Fix #15653 regression with not counting padding properly|[#15704](https://github.com/nushell/nushell/pull/15704)| +|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| From 549cd75f549b24adea4a2ee7f972d94b0fa5e392 Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Mon, 9 Jun 2025 16:06:20 +0200 Subject: [PATCH 03/11] sorted PRs --- blog/2025-06-09-nushell_0_105_0.md | 174 ++++++++++++++++++++++++++++- 1 file changed, 173 insertions(+), 1 deletion(-) diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-09-nushell_0_105_0.md index ce059ef94b6..658998d150a 100644 --- a/blog/2025-06-09-nushell_0_105_0.md +++ b/blog/2025-06-09-nushell_0_105_0.md @@ -42,6 +42,73 @@ As part of this release, we also publish a set of optional [plugins](https://www for the list of available *containers* --> +- deprecation of `filter`, update of `where` + + |author|title|link| + |-|-|-| + |[@132ikl](https://github.com/132ikl)|Update where documentation|[#15467](https://github.com/nushell/nushell/pull/15467)| + |[@Bahex](https://github.com/Bahex)|feat(where): Support stored closure|[#15697](https://github.com/nushell/nushell/pull/15697)| +- deprecation system with `@deprecated` + + |author|title|link| + |-|-|-| + |[@132ikl](https://github.com/132ikl)|Add unified deprecation system and @deprecated attribute|[#15770](https://github.com/nushell/nushell/pull/15770)| +- new `one_of` for users + + |author|title|link| + |-|-|-| + |[@Bahex](https://github.com/Bahex)|Add `SyntaxShape::OneOf` syntax users can use|[#15646](https://github.com/nushell/nushell/pull/15646)| +- new cell-path syntax`!` + + |author|title|link| + |-|-|-| + |[@Bahex](https://github.com/Bahex)|feat!: Explicit cell-path case sensitivity syntax|[#15692](https://github.com/nushell/nushell/pull/15692)| +- bare word string interpolation + + |author|title|link| + |-|-|-| + |[@Bahex](https://github.com/Bahex)|fix parsing of bare word string interpolations that start with a sub expression|[#15735](https://github.com/nushell/nushell/pull/15735)| +- new `iter` module and `recurse` command + + |author|title|link| + |-|-|-| + |[@Bahex](https://github.com/Bahex)|feat(std-rfc): add `iter` module and `recurse` command|[#15840](https://github.com/nushell/nushell/pull/15840)| + |[@Cattle0Horse](https://github.com/Cattle0Horse)|fix(std/iter): align example descriptions with closure logic for find and find-index|[#15895](https://github.com/nushell/nushell/pull/15895)| +- use `rustls` instead of `openssl` + + |author|title|link| + |-|-|-| + |[@cptpiepmatz](https://github.com/cptpiepmatz)|Add `rustls` for TLS|[#15810](https://github.com/nushell/nushell/pull/15810)| + |[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix: use `ring` as a crypto provider instead of `aws_lc`|[#15812](https://github.com/nushell/nushell/pull/15812)| +- better Windows releases + + |author|title|link| + |-|-|-| + |[@hustcer](https://github.com/hustcer)|Fix Windows arm64 release binaries and winget related issues|[#15690](https://github.com/nushell/nushell/pull/15690)| + |[@hustcer](https://github.com/hustcer)|Add a lightweight MSI packages release workflow for winget|[#15800](https://github.com/nushell/nushell/pull/15800)| + |[@hustcer](https://github.com/hustcer)|Use nushell's fork for winget-pkgs publishing|[#15808](https://github.com/nushell/nushell/pull/15808)| + |[@hustcer](https://github.com/hustcer)|Allow specifying MSI version via env var and workflow input|[#15828](https://github.com/nushell/nushell/pull/15828)| + |[@hustcer](https://github.com/hustcer)|Fix build failure of aarch64 and armv7 musl targets|[#15835](https://github.com/nushell/nushell/pull/15835)| + |[@hustcer](https://github.com/hustcer)|Try to fix PAT issue of winget publish account|[#15922](https://github.com/nushell/nushell/pull/15922)| +- http by default + + |author|title|link| + |-|-|-| + |[@noahfraiture](https://github.com/noahfraiture)|feat: default http protocol when none used in http request|[#15804](https://github.com/nushell/nushell/pull/15804)| +- more polars commands + + |author|title|link| + |-|-|-| + |[@ayax79](https://github.com/ayax79)|Added `polars struct-encode-json`, providing the ability to encode structs as json|[#15678](https://github.com/nushell/nushell/pull/15678)| + |[@ayax79](https://github.com/ayax79)|Allow `polars first` to be used with `polars group-by`|[#15855](https://github.com/nushell/nushell/pull/15855)| + |[@pyz4](https://github.com/pyz4)|feat(polars): add `polars horizontal` aggregation command|[#15656](https://github.com/nushell/nushell/pull/15656)| + |[@pyz4](https://github.com/pyz4)|feat(polars): introducing new `polars replace`|[#15706](https://github.com/nushell/nushell/pull/15706)| + |[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars unique` to allow expressions inputs|[#15771](https://github.com/nushell/nushell/pull/15771)| + |[@pyz4](https://github.com/pyz4)|feat(polars): add `polars math` expression|[#15822](https://github.com/nushell/nushell/pull/15822)| + |[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars shift` to allow expressions inputs|[#15834](https://github.com/nushell/nushell/pull/15834)| + |[@pyz4](https://github.com/pyz4)|feat(polars): add `maintain-order` flag to `polars group-by` and allow expression inputs in `polars filter`|[#15865](https://github.com/nushell/nushell/pull/15865)| + + # Changes ## Additions @@ -49,12 +116,44 @@ As part of this release, we also publish a set of optional [plugins](https://www |author|title|link| |-|-|-| +|[@132ikl](https://github.com/132ikl)|Add unified deprecation system and @deprecated attribute|[#15770](https://github.com/nushell/nushell/pull/15770)| +|[@132ikl](https://github.com/132ikl)|Make `parse` simple patterns ignore fields with placeholder (`_`)|[#15873](https://github.com/nushell/nushell/pull/15873)| +|[@Bahex](https://github.com/Bahex)|Add `SyntaxShape::OneOf` syntax users can use|[#15646](https://github.com/nushell/nushell/pull/15646)| +|[@Bahex](https://github.com/Bahex)|feat(where): Support stored closure|[#15697](https://github.com/nushell/nushell/pull/15697)| +|[@Bahex](https://github.com/Bahex)|feat(std-rfc): add `iter` module and `recurse` command|[#15840](https://github.com/nushell/nushell/pull/15840)| +|[@Mrfiregem](https://github.com/Mrfiregem)|Add lazy closure evaluation to `default` (#14160)|[#15654](https://github.com/nushell/nushell/pull/15654)| +|[@Mrfiregem](https://github.com/Mrfiregem)|Allow `path join` to read ByteStream input (#15128)|[#15736](https://github.com/nushell/nushell/pull/15736)| +|[@Mrfiregem](https://github.com/Mrfiregem)|`run-external` spreads command if it's a list|[#15776](https://github.com/nushell/nushell/pull/15776)| +|[@Tyarel8](https://github.com/Tyarel8)|feat(std): add comparison support to `bench` command|[#15843](https://github.com/nushell/nushell/pull/15843)| +|[@Tyarel8](https://github.com/Tyarel8)|feat(std): further `bench` improvements|[#15856](https://github.com/nushell/nushell/pull/15856)| +|[@WindSoilder](https://github.com/WindSoilder)|overlay new: add `--reload(-r)` flag|[#15849](https://github.com/nushell/nushell/pull/15849)| +|[@ayax79](https://github.com/ayax79)|Added `polars struct-encode-json`, providing the ability to encode structs as json|[#15678](https://github.com/nushell/nushell/pull/15678)| +|[@ayax79](https://github.com/ayax79)|Allow `polars first` to be used with `polars group-by`|[#15855](https://github.com/nushell/nushell/pull/15855)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Add `debug env` command|[#15875](https://github.com/nushell/nushell/pull/15875)| +|[@fdncred](https://github.com/fdncred)|allow powershell scripts in the path to be executed|[#15760](https://github.com/nushell/nushell/pull/15760)| +|[@gmr458](https://github.com/gmr458)|feat(table): Add new 'single' table mode|[#15672](https://github.com/nushell/nushell/pull/15672)| +|[@lazenga](https://github.com/lazenga)|feat(to-md): add support for centering columns via CellPaths (#14552)|[#15861](https://github.com/nushell/nushell/pull/15861)| +|[@noahfraiture](https://github.com/noahfraiture)|feat: default http protocol when none used in http request|[#15804](https://github.com/nushell/nushell/pull/15804)| +|[@ofek](https://github.com/ofek)|Enable `shell_integration.osc9_9` by default on Windows|[#15914](https://github.com/nushell/nushell/pull/15914)| +|[@pyz4](https://github.com/pyz4)|feat(polars): add `polars horizontal` aggregation command|[#15656](https://github.com/nushell/nushell/pull/15656)| +|[@pyz4](https://github.com/pyz4)|feat(polars): introducing new `polars replace`|[#15706](https://github.com/nushell/nushell/pull/15706)| +|[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars unique` to allow expressions inputs|[#15771](https://github.com/nushell/nushell/pull/15771)| +|[@pyz4](https://github.com/pyz4)|feat(polars): add `polars math` expression|[#15822](https://github.com/nushell/nushell/pull/15822)| +|[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars shift` to allow expressions inputs|[#15834](https://github.com/nushell/nushell/pull/15834)| +|[@pyz4](https://github.com/pyz4)|feat(polars): add `maintain-order` flag to `polars group-by` and allow expression inputs in `polars filter`|[#15865](https://github.com/nushell/nushell/pull/15865)| +|[@snickerdoodle2](https://github.com/snickerdoodle2)|(gstat): add config option to disable tag calculation|[#15893](https://github.com/nushell/nushell/pull/15893)| +|[@weirdan](https://github.com/weirdan)|Environment-aware help for `open` and `save`|[#15651](https://github.com/nushell/nushell/pull/15651)| +|[@weirdan](https://github.com/weirdan)|Set content_type for `view span` output|[#15842](https://github.com/nushell/nushell/pull/15842)| + ## Breaking changes |author|title|link| |-|-|-| +|[@Bahex](https://github.com/Bahex)|feat!: Explicit cell-path case sensitivity syntax|[#15692](https://github.com/nushell/nushell/pull/15692)| +|[@ayax79](https://github.com/ayax79)|Creates col and nth expressions when using paths on lazy frames.|[#15891](https://github.com/nushell/nushell/pull/15891)| + ## Deprecations @@ -73,6 +172,39 @@ As part of this release, we also publish a set of optional [plugins](https://www |author|title|link| |-|-|-| +|[@Bahex](https://github.com/Bahex)|fix parsing of bare word string interpolations that start with a sub expression|[#15735](https://github.com/nushell/nushell/pull/15735)| +|[@Bahex](https://github.com/Bahex)|fix: implicitly running .ps1 scripts with spaces in path|[#15781](https://github.com/nushell/nushell/pull/15781)| +|[@CSharperMantle](https://github.com/CSharperMantle)|Correctly quote `nu.exe` and `nu.ico` path containing spaces in WiX|[#15881](https://github.com/nushell/nushell/pull/15881)| +|[@CSharperMantle](https://github.com/CSharperMantle)|Fixup: Fix regression caused by #15881|[#15889](https://github.com/nushell/nushell/pull/15889)| +|[@Cattle0Horse](https://github.com/Cattle0Horse)|fix(std/iter): align example descriptions with closure logic for find and find-index|[#15895](https://github.com/nushell/nushell/pull/15895)| +|[@LazyPluto](https://github.com/LazyPluto)|fix: empty tables now respect `$env.config.use_ansi_coloring` (closes #14896)|[#15751](https://github.com/nushell/nushell/pull/15751)| +|[@Tyarel8](https://github.com/Tyarel8)|fix duplicate short_name in `ansi` command|[#15767](https://github.com/nushell/nushell/pull/15767)| +|[@WindSoilder](https://github.com/WindSoilder)|`source`: make sure the block is compiled when parsing|[#15798](https://github.com/nushell/nushell/pull/15798)| +|[@atahabaki](https://github.com/atahabaki)|Numbers proceeded with the escape character ignored fix|[#15684](https://github.com/nushell/nushell/pull/15684)| +|[@ayax79](https://github.com/ayax79)|Fix for null handling #15788|[#15857](https://github.com/nushell/nushell/pull/15857)| +|[@blindFS](https://github.com/blindFS)|fix(parser): namespace pollution of constants by `use module.nu`|[#15518](https://github.com/nushell/nushell/pull/15518)| +|[@blindFS](https://github.com/blindFS)|fix: inefficient select with large row number|[#15730](https://github.com/nushell/nushell/pull/15730)| +|[@cablehead](https://github.com/cablehead)|fix: clear jobs _after_ traversing jobs for kill_all|[#15685](https://github.com/nushell/nushell/pull/15685)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Add `rustls` for TLS|[#15810](https://github.com/nushell/nushell/pull/15810)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix: use `ring` as a crypto provider instead of `aws_lc`|[#15812](https://github.com/nushell/nushell/pull/15812)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix: Downgrade calamine to 0.26 to fix build without `--locked`|[#15908](https://github.com/nushell/nushell/pull/15908)| +|[@fdncred](https://github.com/fdncred)|make sure new nul chars don't print in `char --list`|[#15858](https://github.com/nushell/nushell/pull/15858)| +|[@fdncred](https://github.com/fdncred)|make `date humanize` use `human_time_from_now()`|[#15918](https://github.com/nushell/nushell/pull/15918)| +|[@hustcer](https://github.com/hustcer)|Fix Windows arm64 release binaries and winget related issues|[#15690](https://github.com/nushell/nushell/pull/15690)| +|[@hustcer](https://github.com/hustcer)|Fix build failure of aarch64 and armv7 musl targets|[#15835](https://github.com/nushell/nushell/pull/15835)| +|[@hustcer](https://github.com/hustcer)|Try to fix PAT issue of winget publish account|[#15922](https://github.com/nushell/nushell/pull/15922)| +|[@jjflash95](https://github.com/jjflash95)|Fix #15571 panic on write to source parquet file|[#15601](https://github.com/nushell/nushell/pull/15601)| +|[@kamek-pf](https://github.com/kamek-pf)|fix(glob): Fix drive-letter glob expansion on Windows|[#15871](https://github.com/nushell/nushell/pull/15871)| +|[@kumarUjjawal](https://github.com/kumarUjjawal)|fix(which): remove required positional argument to allow spread input|[#15870](https://github.com/nushell/nushell/pull/15870)| +|[@luismeyer95](https://github.com/luismeyer95)|fix(parser): don't parse closure in block position (fixes #15417)|[#15680](https://github.com/nushell/nushell/pull/15680)| +|[@pyz4](https://github.com/pyz4)|fix(polars): add Value::Record to `NuExpression::can_downcast` logic|[#15826](https://github.com/nushell/nushell/pull/15826)| +|[@pyz4](https://github.com/pyz4)|fix(polars): swap out pivot for pivot_stable to suppress warning message|[#15913](https://github.com/nushell/nushell/pull/15913)| +|[@rritik772](https://github.com/rritik772)|[FIX] #15813 passing infinity to random float generate causes error|[#15818](https://github.com/nushell/nushell/pull/15818)| +|[@ysthakur](https://github.com/ysthakur)|Handle multiple exact matches|[#15772](https://github.com/nushell/nushell/pull/15772)| +|[@zhiburt](https://github.com/zhiburt)|Fix table wrap emojie|[#15138](https://github.com/nushell/nushell/pull/15138)| +|[@zhiburt](https://github.com/zhiburt)|nu-table/ 1 refactoring + a few optimizations + small fix|[#15653](https://github.com/nushell/nushell/pull/15653)| +|[@zhiburt](https://github.com/zhiburt)|Fix #15653 regression with not counting padding properly|[#15704](https://github.com/nushell/nushell/pull/15704)| +|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| # Notes for plugin developers @@ -86,7 +218,47 @@ Thanks to all the contributors below for helping us solve issues, improve docume | author | title | link | | ------------------------------------ | ----- | ------------------------------------------------------- | -| [@author](https://github.com/author) | ... | [#12345](https://github.com/nushell/nushell/pull/12345) | +|[@132ikl](https://github.com/132ikl)|Update where documentation|[#15467](https://github.com/nushell/nushell/pull/15467)| +|[@132ikl](https://github.com/132ikl)|Partial workaround and deprecation warning for breaking change usage of #15654|[#15806](https://github.com/nushell/nushell/pull/15806)| +|[@132ikl](https://github.com/132ikl)|Disable flaky killing_job_kills_pids test on macOS|[#15874](https://github.com/nushell/nushell/pull/15874)| +|[@Bahex](https://github.com/Bahex)|refactor `Value::follow_cell_path` to reduce clones and return `Cow`|[#15640](https://github.com/nushell/nushell/pull/15640)| +|[@Bahex](https://github.com/Bahex)|Update deprecation warnings|[#15867](https://github.com/nushell/nushell/pull/15867)| +|[@Dorumin](https://github.com/Dorumin)|Update job_recv.rs|[#15673](https://github.com/nushell/nushell/pull/15673)| +|[@FlippinBerger](https://github.com/FlippinBerger)|Correct `use-facing` to `user-facing` in CONTRIBUTING.md|[#15761](https://github.com/nushell/nushell/pull/15761)| +|[@Kissaki](https://github.com/Kissaki)|Add `match` examples for simple value and alternative values|[#15732](https://github.com/nushell/nushell/pull/15732)| +|[@LoicRiegel](https://github.com/LoicRiegel)|Remove legacy code in some core commands|[#15560](https://github.com/nushell/nushell/pull/15560)| +|[@LoicRiegel](https://github.com/LoicRiegel)|small refactoring around units and add tests|[#15746](https://github.com/nushell/nushell/pull/15746)| +|[@Tyarel8](https://github.com/Tyarel8)|change `http get` header example to use a record|[#15674](https://github.com/nushell/nushell/pull/15674)| +|[@Tyarel8](https://github.com/Tyarel8)|fix `kv set` examples|[#15769](https://github.com/nushell/nushell/pull/15769)| +|[@Villa01](https://github.com/Villa01)|Improve error handling for unsupported --theme in to html command|[#15787](https://github.com/nushell/nushell/pull/15787)| +|[@ayax79](https://github.com/ayax79)|Minor DataType refactor|[#15728](https://github.com/nushell/nushell/pull/15728)| +|[@ayax79](https://github.com/ayax79)|Rust 1.85, edition=2024|[#15741](https://github.com/nushell/nushell/pull/15741)| +|[@ayax79](https://github.com/ayax79)|Polars upgrade|[#15852](https://github.com/nushell/nushell/pull/15852)| +|[@ayax79](https://github.com/ayax79)|Add regex documentation/examples to `polars col`|[#15898](https://github.com/nushell/nushell/pull/15898)| +|[@colececil](https://github.com/colececil)|docs: Add vfox to list of tools supporting Nushell|[#15687](https://github.com/nushell/nushell/pull/15687)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Refactor: Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind`|[#15777](https://github.com/nushell/nushell/pull/15777)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Provide a better error for prefix-only path for PWD|[#15817](https://github.com/nushell/nushell/pull/15817)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Move job errors into `ShellError::Job` variant|[#15820](https://github.com/nushell/nushell/pull/15820)| +|[@fdncred](https://github.com/fdncred)|update nushell to use coreutils v0.1.0 crates|[#15896](https://github.com/nushell/nushell/pull/15896)| +|[@flovilmart](https://github.com/flovilmart)|feat: Use reedline for input implementation|[#15369](https://github.com/nushell/nushell/pull/15369)| +|[@hackeryarn](https://github.com/hackeryarn)|feat: make to nuon raw option remove all white space|[#15609](https://github.com/nushell/nushell/pull/15609)| +|[@hustcer](https://github.com/hustcer)|Add a lightweight MSI packages release workflow for winget|[#15800](https://github.com/nushell/nushell/pull/15800)| +|[@hustcer](https://github.com/hustcer)|Use nushell's fork for winget-pkgs publishing|[#15808](https://github.com/nushell/nushell/pull/15808)| +|[@hustcer](https://github.com/hustcer)|Bump dev version to 0.104.2|[#15809](https://github.com/nushell/nushell/pull/15809)| +|[@hustcer](https://github.com/hustcer)|Update comments of release-pkg.nu for building of MSI package|[#15815](https://github.com/nushell/nushell/pull/15815)| +|[@hustcer](https://github.com/hustcer)|Allow specifying MSI version via env var and workflow input|[#15828](https://github.com/nushell/nushell/pull/15828)| +|[@kumarUjjawal](https://github.com/kumarUjjawal)|Better error handling for negative integer exponents in ** operator|[#15882](https://github.com/nushell/nushell/pull/15882)| +|[@luong-komorebi](https://github.com/luong-komorebi)|docs: update ubuntu version in PLATFORM_SUPPORT.md|[#15662](https://github.com/nushell/nushell/pull/15662)| +|[@musicinmybrain](https://github.com/musicinmybrain)|Update lscolors from 0.17 to 0.20|[#15737](https://github.com/nushell/nushell/pull/15737)| +|[@new-years-eve](https://github.com/new-years-eve)|Refactor `find` to handle regex search and non-regex search the same way|[#15839](https://github.com/nushell/nushell/pull/15839)| +|[@ofek](https://github.com/ofek)|Fix typo in example config.nu|[#15910](https://github.com/nushell/nushell/pull/15910)| +|[@raoulkent](https://github.com/raoulkent)|reorder `cal`s `input_output_types`|[#15909](https://github.com/nushell/nushell/pull/15909)| +|[@sholderbach](https://github.com/sholderbach)|Clean public API of `EngineState` and friends|[#15636](https://github.com/nushell/nushell/pull/15636)| +|[@sholderbach](https://github.com/sholderbach)|Pull reedline development version|[#15912](https://github.com/nushell/nushell/pull/15912)| +|[@tindzk](https://github.com/tindzk)|docs: fix available fields in `history import` command|[#15686](https://github.com/nushell/nushell/pull/15686)| +|[@vivainio](https://github.com/vivainio)|std-rfc/kv: optimize kv get by only selecting one row from the stor db|[#15792](https://github.com/nushell/nushell/pull/15792)| +|[@ysthakur](https://github.com/ysthakur)|Bump to 0.104.1 dev version|[#15669](https://github.com/nushell/nushell/pull/15669)| +|[@ysthakur](https://github.com/ysthakur)|Use Default for making Suggestions in attribute_completions|[#15764](https://github.com/nushell/nushell/pull/15764)| # Full changelog From 878175a1bbc4e86124b496677039fe8b39a77200 Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Mon, 9 Jun 2025 16:07:49 +0200 Subject: [PATCH 04/11] typo fixes --- blog/2025-06-09-nushell_0_105_0.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-09-nushell_0_105_0.md index 658998d150a..83a7c33b181 100644 --- a/blog/2025-06-09-nushell_0_105_0.md +++ b/blog/2025-06-09-nushell_0_105_0.md @@ -204,7 +204,7 @@ As part of this release, we also publish a set of optional [plugins](https://www |[@zhiburt](https://github.com/zhiburt)|Fix table wrap emojie|[#15138](https://github.com/nushell/nushell/pull/15138)| |[@zhiburt](https://github.com/zhiburt)|nu-table/ 1 refactoring + a few optimizations + small fix|[#15653](https://github.com/nushell/nushell/pull/15653)| |[@zhiburt](https://github.com/zhiburt)|Fix #15653 regression with not counting padding properly|[#15704](https://github.com/nushell/nushell/pull/15704)| -|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| +|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnecessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| # Notes for plugin developers @@ -389,4 +389,4 @@ Afterwards, go through each PR and classify it as one of the following: |[@zhiburt](https://github.com/zhiburt)|Fix table wrap emojie|[#15138](https://github.com/nushell/nushell/pull/15138)| |[@zhiburt](https://github.com/zhiburt)|nu-table/ 1 refactoring + a few optimizations + small fix|[#15653](https://github.com/nushell/nushell/pull/15653)| |[@zhiburt](https://github.com/zhiburt)|Fix #15653 regression with not counting padding properly|[#15704](https://github.com/nushell/nushell/pull/15704)| -|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| +|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnecessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| From d3641e372500161f705164f65c935e8eb64d8dbe Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Tue, 10 Jun 2025 14:50:49 +0200 Subject: [PATCH 05/11] added plugin developer notes --- blog/2025-06-09-nushell_0_105_0.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-09-nushell_0_105_0.md index 83a7c33b181..a4efa8c108b 100644 --- a/blog/2025-06-09-nushell_0_105_0.md +++ b/blog/2025-06-09-nushell_0_105_0.md @@ -208,9 +208,10 @@ As part of this release, we also publish a set of optional [plugins](https://www # Notes for plugin developers - -|author|title|link| -|-|-|-| +## Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind` + +To give us better control over IO errors, [@cptpiepmatz](https://github.com/cptpiepmatz) changed in [#15777](https://github.com/nushell/nushell/pull/15777) how `IoError`s are created. Now they’re built directly from `std::io::Error` instead of just the `ErrorKind`. +Just remove the calls to `.kind()` and you're good to go. # Hall of fame @@ -236,7 +237,6 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@ayax79](https://github.com/ayax79)|Polars upgrade|[#15852](https://github.com/nushell/nushell/pull/15852)| |[@ayax79](https://github.com/ayax79)|Add regex documentation/examples to `polars col`|[#15898](https://github.com/nushell/nushell/pull/15898)| |[@colececil](https://github.com/colececil)|docs: Add vfox to list of tools supporting Nushell|[#15687](https://github.com/nushell/nushell/pull/15687)| -|[@cptpiepmatz](https://github.com/cptpiepmatz)|Refactor: Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind`|[#15777](https://github.com/nushell/nushell/pull/15777)| |[@cptpiepmatz](https://github.com/cptpiepmatz)|Provide a better error for prefix-only path for PWD|[#15817](https://github.com/nushell/nushell/pull/15817)| |[@cptpiepmatz](https://github.com/cptpiepmatz)|Move job errors into `ShellError::Job` variant|[#15820](https://github.com/nushell/nushell/pull/15820)| |[@fdncred](https://github.com/fdncred)|update nushell to use coreutils v0.1.0 crates|[#15896](https://github.com/nushell/nushell/pull/15896)| From dcda5c21b062b12602d8833737cf1b465ceaeaee Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Tue, 10 Jun 2025 14:50:55 +0200 Subject: [PATCH 06/11] added breaking changes --- blog/2025-06-09-nushell_0_105_0.md | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-09-nushell_0_105_0.md index a4efa8c108b..e9a6a098886 100644 --- a/blog/2025-06-09-nushell_0_105_0.md +++ b/blog/2025-06-09-nushell_0_105_0.md @@ -145,31 +145,20 @@ As part of this release, we also publish a set of optional [plugins](https://www |[@weirdan](https://github.com/weirdan)|Environment-aware help for `open` and `save`|[#15651](https://github.com/nushell/nushell/pull/15651)| |[@weirdan](https://github.com/weirdan)|Set content_type for `view span` output|[#15842](https://github.com/nushell/nushell/pull/15842)| - ## Breaking changes - -|author|title|link| -|-|-|-| -|[@Bahex](https://github.com/Bahex)|feat!: Explicit cell-path case sensitivity syntax|[#15692](https://github.com/nushell/nushell/pull/15692)| -|[@ayax79](https://github.com/ayax79)|Creates col and nth expressions when using paths on lazy frames.|[#15891](https://github.com/nushell/nushell/pull/15891)| +### Cell-paths with case-sensitivity and withou`!` +The new cell-path syntax `!`, introduced by [@Bahex](https://github.com/Bahex) in [#15692](https://github.com/nushell/nushell/pull/15692), may break some commands. +If your commands relied on case-insensitive paths, please check your code. -## Deprecations +### Paths on lazy frames now produce expressions - -|author|title|link| -|-|-|-| - -## Removals - - -|author|title|link| -|-|-|-| +Thanks to [@ayax79](https://github.com/ayax79) in [#15891](https://github.com/nushell/nushell/pull/15891), paths on lazy frames now generate expressions. +You will need to use `polar collect` to evaluate them. ## Bug fixes and other changes - |author|title|link| |-|-|-| |[@Bahex](https://github.com/Bahex)|fix parsing of bare word string interpolations that start with a sub expression|[#15735](https://github.com/nushell/nushell/pull/15735)| From 35fe5a22f58cf2868063e8feafb31dda0af27d43 Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Tue, 10 Jun 2025 17:49:30 +0200 Subject: [PATCH 07/11] added all text segments --- blog/2025-06-09-nushell_0_105_0.md | 350 +++++++++++++++++++++-------- 1 file changed, 252 insertions(+), 98 deletions(-) diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-09-nushell_0_105_0.md index e9a6a098886..4d1daf031ea 100644 --- a/blog/2025-06-09-nushell_0_105_0.md +++ b/blog/2025-06-09-nushell_0_105_0.md @@ -42,112 +42,260 @@ As part of this release, we also publish a set of optional [plugins](https://www for the list of available *containers* --> -- deprecation of `filter`, update of `where` - - |author|title|link| - |-|-|-| - |[@132ikl](https://github.com/132ikl)|Update where documentation|[#15467](https://github.com/nushell/nushell/pull/15467)| - |[@Bahex](https://github.com/Bahex)|feat(where): Support stored closure|[#15697](https://github.com/nushell/nushell/pull/15697)| -- deprecation system with `@deprecated` - - |author|title|link| - |-|-|-| - |[@132ikl](https://github.com/132ikl)|Add unified deprecation system and @deprecated attribute|[#15770](https://github.com/nushell/nushell/pull/15770)| -- new `one_of` for users - - |author|title|link| - |-|-|-| - |[@Bahex](https://github.com/Bahex)|Add `SyntaxShape::OneOf` syntax users can use|[#15646](https://github.com/nushell/nushell/pull/15646)| -- new cell-path syntax`!` - - |author|title|link| - |-|-|-| - |[@Bahex](https://github.com/Bahex)|feat!: Explicit cell-path case sensitivity syntax|[#15692](https://github.com/nushell/nushell/pull/15692)| -- bare word string interpolation - - |author|title|link| - |-|-|-| - |[@Bahex](https://github.com/Bahex)|fix parsing of bare word string interpolations that start with a sub expression|[#15735](https://github.com/nushell/nushell/pull/15735)| -- new `iter` module and `recurse` command - - |author|title|link| - |-|-|-| - |[@Bahex](https://github.com/Bahex)|feat(std-rfc): add `iter` module and `recurse` command|[#15840](https://github.com/nushell/nushell/pull/15840)| - |[@Cattle0Horse](https://github.com/Cattle0Horse)|fix(std/iter): align example descriptions with closure logic for find and find-index|[#15895](https://github.com/nushell/nushell/pull/15895)| -- use `rustls` instead of `openssl` - - |author|title|link| - |-|-|-| - |[@cptpiepmatz](https://github.com/cptpiepmatz)|Add `rustls` for TLS|[#15810](https://github.com/nushell/nushell/pull/15810)| - |[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix: use `ring` as a crypto provider instead of `aws_lc`|[#15812](https://github.com/nushell/nushell/pull/15812)| -- better Windows releases - - |author|title|link| - |-|-|-| - |[@hustcer](https://github.com/hustcer)|Fix Windows arm64 release binaries and winget related issues|[#15690](https://github.com/nushell/nushell/pull/15690)| - |[@hustcer](https://github.com/hustcer)|Add a lightweight MSI packages release workflow for winget|[#15800](https://github.com/nushell/nushell/pull/15800)| - |[@hustcer](https://github.com/hustcer)|Use nushell's fork for winget-pkgs publishing|[#15808](https://github.com/nushell/nushell/pull/15808)| - |[@hustcer](https://github.com/hustcer)|Allow specifying MSI version via env var and workflow input|[#15828](https://github.com/nushell/nushell/pull/15828)| - |[@hustcer](https://github.com/hustcer)|Fix build failure of aarch64 and armv7 musl targets|[#15835](https://github.com/nushell/nushell/pull/15835)| - |[@hustcer](https://github.com/hustcer)|Try to fix PAT issue of winget publish account|[#15922](https://github.com/nushell/nushell/pull/15922)| -- http by default - - |author|title|link| - |-|-|-| - |[@noahfraiture](https://github.com/noahfraiture)|feat: default http protocol when none used in http request|[#15804](https://github.com/nushell/nushell/pull/15804)| -- more polars commands - - |author|title|link| - |-|-|-| - |[@ayax79](https://github.com/ayax79)|Added `polars struct-encode-json`, providing the ability to encode structs as json|[#15678](https://github.com/nushell/nushell/pull/15678)| - |[@ayax79](https://github.com/ayax79)|Allow `polars first` to be used with `polars group-by`|[#15855](https://github.com/nushell/nushell/pull/15855)| - |[@pyz4](https://github.com/pyz4)|feat(polars): add `polars horizontal` aggregation command|[#15656](https://github.com/nushell/nushell/pull/15656)| - |[@pyz4](https://github.com/pyz4)|feat(polars): introducing new `polars replace`|[#15706](https://github.com/nushell/nushell/pull/15706)| - |[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars unique` to allow expressions inputs|[#15771](https://github.com/nushell/nushell/pull/15771)| - |[@pyz4](https://github.com/pyz4)|feat(polars): add `polars math` expression|[#15822](https://github.com/nushell/nushell/pull/15822)| - |[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars shift` to allow expressions inputs|[#15834](https://github.com/nushell/nushell/pull/15834)| - |[@pyz4](https://github.com/pyz4)|feat(polars): add `maintain-order` flag to `polars group-by` and allow expression inputs in `polars filter`|[#15865](https://github.com/nushell/nushell/pull/15865)| +## One `where` to rule them all +`where` used to support only row conditions and literal closures for filtering rows. +If you wanted to use stored closures, you had to use `filter`. + +In [#15697](https://github.com/nushell/nushell/pull/15697), [@Bahex](https://github.com/Bahex) added stored closure support to `where`, making `filter` obsolete. Because of this, `filter` was marked deprecated in [#15867](https://github.com/nushell/nushell/pull/15867). +[@132ikl](https://github.com/132ikl) updated the docs accordingly in [#15467](https://github.com/nushell/nushell/pull/15467). + +Now, `where` can be used as a drop-in replacement for `filter`. + +## Better deprecations + +You can now use the `@deprecated` attribute on custom commands to mark them as deprecated, thanks to [@132ikl](https://github.com/132ikl) in [#15770](https://github.com/nushell/nushell/pull/15770). Pass a string as the first argument to show a custom deprecation message. You can also add flags to give more details: + +- `--flag`: mark a flag as deprecated +- `--since`: specify when the deprecation started +- `--remove`: indicate when this command or flag will be removed +- `--report`: use `"first"` or `"every"` to control how often users see the warning + +For example: + +```nu +@deprecated "Use my-new-command instead." +@category deprecated +def my-old-command [] {} +``` + +## `oneof` the things + +Built-in commands have long used `SyntaxShape::OneOf` to accept multiple possible types. +Custom commands couldn’t do this until [#15646](https://github.com/nushell/nushell/pull/15646), when [@Bahex](https://github.com/Bahex) added the `oneof<...>` type to declare type alternatives. + +Example: + +```nu +def foo [ + param: oneof +] { .. } +``` + +## Case-sensitive cell-paths or not`!` + +Before, it wasn't clear if cell-paths were case-sensitive, so some commands expected case sensitivity while others didn't. +[@Bahex](https://github.com/Bahex) fixed this in [#15692](https://github.com/nushell/nushell/pull/15692). + +Now, all cell-paths are case-sensitive by default. +If you add a `!` after a path element, that element becomes case-insensitive. + +For example, `foo.bar!.baz` matches: + +* `foo.bar.baz` +* `foo.BAR.baz` +* `foo.BaR.baz` + +but not: + +* `FOO.bar.baz` +* `foo.BAR.BAZ` + +The `--sensitive` and `--insensitive` flags still work but some are now deprecated. +`$env` remains a special record with always case-insensitive cell-paths. + +You can also use the new syntax to say: get `"foo"` case-insensitively, or return nothing if not found: `get foo?!`. + +## `recurse`'ively explore nested values + +This release adds a new `recurse` command in `std-rfc/iter`, as an equivalent to jq's `recurse`/`..`. + +It recursively descends its input and returns a stream of all "descendant" values, along with their cell-path relative to the input value. +It is especially useful for exploring and searching through deep trees. + +```nu +{ + "foo": { + "egg": "X" + "spam": "Y" + } + "bar": { + "quox": ["A" "B"] + } +} +| recurse +| update item { to nuon } +# => ╭───┬──────────────┬───────────────────────────────────────────────╮ +# => │ # │ path │ item │ +# => ├───┼──────────────┼───────────────────────────────────────────────┤ +# => │ 0 │ $. │ {foo: {egg: X, spam: Y}, bar: {quox: [A, B]}} │ +# => │ 1 │ $.foo │ {egg: X, spam: Y} │ +# => │ 2 │ $.bar │ {quox: [A, B]} │ +# => │ 3 │ $.foo.egg │ "X" │ +# => │ 4 │ $.foo.spam │ "Y" │ +# => │ 5 │ $.bar.quox │ [A, B] │ +# => │ 6 │ $.bar.quox.0 │ "A" │ +# => │ 7 │ $.bar.quox.1 │ "B" │ +# => ╰───┴──────────────┴───────────────────────────────────────────────╯ +``` + + + +## No more `openssl` + +If you've built nushell on Linux, you probably had to install openssl libraries because we linked to it by default. +This version switches fully to [rustls](https://github.com/rustls/rustls), a pure Rust TLS library, making builds simpler. +The change was made by [@cptpiepmatz](https://github.com/cptpiepmatz) in [#15810](https://github.com/nushell/nushell/pull/15810), and [#15812](https://github.com/nushell/nushell/pull/15812) added support for older platforms. + +If you still need openssl, build with `--no-default-features --features plugin,trash-support,sqlite,native-tls`. + +## Better Windows releases + +Thanks to [@hustcer](https://github.com/hustcer) are our Windows release much better. +Check out the blog post for [nushell 0.104.1](https://www.nushell.sh/blog/2025-05-23-nushell_0_104_1.html) for more info on that. + +## HTTP by default + +Running `http get example.com` used to fail because the command needed a full URL. +[@noahfraiture](https://github.com/noahfraiture) fixed this in [#15804](https://github.com/nushell/nushell/pull/15804) by letting Nushell add `http://` when the scheme is missing. + +Now you can write: +- `http get example.com` +- `http get :8000` goes to [http://localhost:8000](http://localhost:8000) + +## More Polars + +This release adds several new `polars` commands: + +* `polars struct-encode-json` by [@ayax79](https://github.com/ayax79) in [#15678](https://github.com/nushell/nushell/pull/15678) +* `polars horizontal` by [@pyz4](https://github.com/pyz4) in [#15656](https://github.com/nushell/nushell/pull/15656) +* `polars replace` by [@pyz4](https://github.com/pyz4) in [#15706](https://github.com/nushell/nushell/pull/15706) + +Also, `polars first` now works with `polars group-by` thanks to [@ayax79](https://github.com/ayax79) in [#15855](https://github.com/nushell/nushell/pull/15855). + +Thanks to [@pyz4](https://github.com/pyz4), `polars unique` ([#15771](https://github.com/nushell/nushell/pull/15771)), `polars shift` ([#15834](https://github.com/nushell/nushell/pull/15834)), and `polars group-by --maintain-order` ([#15865](https://github.com/nushell/nushell/pull/15865)) now accept expression inputs. + +[@pyz4](https://github.com/pyz4) also added new `polars math` expressions in [#15822](https://github.com/nushell/nushell/pull/15822). # Changes ## Additions - -|author|title|link| -|-|-|-| -|[@132ikl](https://github.com/132ikl)|Add unified deprecation system and @deprecated attribute|[#15770](https://github.com/nushell/nushell/pull/15770)| -|[@132ikl](https://github.com/132ikl)|Make `parse` simple patterns ignore fields with placeholder (`_`)|[#15873](https://github.com/nushell/nushell/pull/15873)| -|[@Bahex](https://github.com/Bahex)|Add `SyntaxShape::OneOf` syntax users can use|[#15646](https://github.com/nushell/nushell/pull/15646)| -|[@Bahex](https://github.com/Bahex)|feat(where): Support stored closure|[#15697](https://github.com/nushell/nushell/pull/15697)| -|[@Bahex](https://github.com/Bahex)|feat(std-rfc): add `iter` module and `recurse` command|[#15840](https://github.com/nushell/nushell/pull/15840)| -|[@Mrfiregem](https://github.com/Mrfiregem)|Add lazy closure evaluation to `default` (#14160)|[#15654](https://github.com/nushell/nushell/pull/15654)| -|[@Mrfiregem](https://github.com/Mrfiregem)|Allow `path join` to read ByteStream input (#15128)|[#15736](https://github.com/nushell/nushell/pull/15736)| -|[@Mrfiregem](https://github.com/Mrfiregem)|`run-external` spreads command if it's a list|[#15776](https://github.com/nushell/nushell/pull/15776)| -|[@Tyarel8](https://github.com/Tyarel8)|feat(std): add comparison support to `bench` command|[#15843](https://github.com/nushell/nushell/pull/15843)| -|[@Tyarel8](https://github.com/Tyarel8)|feat(std): further `bench` improvements|[#15856](https://github.com/nushell/nushell/pull/15856)| -|[@WindSoilder](https://github.com/WindSoilder)|overlay new: add `--reload(-r)` flag|[#15849](https://github.com/nushell/nushell/pull/15849)| -|[@ayax79](https://github.com/ayax79)|Added `polars struct-encode-json`, providing the ability to encode structs as json|[#15678](https://github.com/nushell/nushell/pull/15678)| -|[@ayax79](https://github.com/ayax79)|Allow `polars first` to be used with `polars group-by`|[#15855](https://github.com/nushell/nushell/pull/15855)| -|[@cptpiepmatz](https://github.com/cptpiepmatz)|Add `debug env` command|[#15875](https://github.com/nushell/nushell/pull/15875)| -|[@fdncred](https://github.com/fdncred)|allow powershell scripts in the path to be executed|[#15760](https://github.com/nushell/nushell/pull/15760)| -|[@gmr458](https://github.com/gmr458)|feat(table): Add new 'single' table mode|[#15672](https://github.com/nushell/nushell/pull/15672)| -|[@lazenga](https://github.com/lazenga)|feat(to-md): add support for centering columns via CellPaths (#14552)|[#15861](https://github.com/nushell/nushell/pull/15861)| -|[@noahfraiture](https://github.com/noahfraiture)|feat: default http protocol when none used in http request|[#15804](https://github.com/nushell/nushell/pull/15804)| -|[@ofek](https://github.com/ofek)|Enable `shell_integration.osc9_9` by default on Windows|[#15914](https://github.com/nushell/nushell/pull/15914)| -|[@pyz4](https://github.com/pyz4)|feat(polars): add `polars horizontal` aggregation command|[#15656](https://github.com/nushell/nushell/pull/15656)| -|[@pyz4](https://github.com/pyz4)|feat(polars): introducing new `polars replace`|[#15706](https://github.com/nushell/nushell/pull/15706)| -|[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars unique` to allow expressions inputs|[#15771](https://github.com/nushell/nushell/pull/15771)| -|[@pyz4](https://github.com/pyz4)|feat(polars): add `polars math` expression|[#15822](https://github.com/nushell/nushell/pull/15822)| -|[@pyz4](https://github.com/pyz4)|feat(polars): expand `polars shift` to allow expressions inputs|[#15834](https://github.com/nushell/nushell/pull/15834)| -|[@pyz4](https://github.com/pyz4)|feat(polars): add `maintain-order` flag to `polars group-by` and allow expression inputs in `polars filter`|[#15865](https://github.com/nushell/nushell/pull/15865)| -|[@snickerdoodle2](https://github.com/snickerdoodle2)|(gstat): add config option to disable tag calculation|[#15893](https://github.com/nushell/nushell/pull/15893)| -|[@weirdan](https://github.com/weirdan)|Environment-aware help for `open` and `save`|[#15651](https://github.com/nushell/nushell/pull/15651)| -|[@weirdan](https://github.com/weirdan)|Set content_type for `view span` output|[#15842](https://github.com/nushell/nushell/pull/15842)| +### Ignore fields in simple `parse` patterns with `_` + +[@132ikl](https://github.com/132ikl) added the option to use the placeholder `_` to ignore fields in [#15873](https://github.com/nushell/nushell/pull/15873). + +```nu +"hello world" | parse "{foo} {_}" +# => ╭───┬───────╮ +# => │ # │ foo │ +# => ├───┼───────┤ +# => │ 0 │ hello │ +# => ╰───┴───────╯ +``` + +### Lazy closure evaluation for `default` + +`default` can now take a closure for a default value instead of a direct value thanks to [@Mrfiregem](https://github.com/Mrfiregem) in [#15654](https://github.com/nushell/nushell/pull/15654). +These closure are lazily evaluated and cached. + +```nu +ls | default { sleep 5sec; 'N/A' } name # => No-op since `name` column is never empty +ls | default { sleep 5sec; 'N/A' } foo bar # => creates columns `foo` and `bar`; only takes 5 seconds since closure result is cached +``` + +### `path join` can now read byte stream input + +When commands return a path, thanks to [@Mrfiregem](https://github.com/Mrfiregem) in [#15736](https://github.com/nushell/nushell/pull/15736), you can now call `path join` directly without having to use `collect`. + +```nu +^pwd | path join foo +``` + +### `run-external` spreads command if it's a list + +With the addition of [#15776](https://github.com/nushell/nushell/pull/15776) by [@Mrfiregem](https://github.com/Mrfiregem), `run-external` (or calling an external) can now use a list to support arguments. + +```nu +$env.config.buffer_editor = ["emacsclient", "-s", "light", "-t"] +run-external $env.config.buffer_editor foo.text +``` + +### Improvements to `bench` + +[@Tyarel8](https://github.com/Tyarel8) added some improvements to `bench` in [#15843](https://github.com/nushell/nushell/pull/15843) and [#15856](https://github.com/nushell/nushell/pull/15856). +It is now possible to pass multiple closures into `bench` to compare and added the flags: +- `--warmup` +- `--setup` +- `--prepare` +- `--cleanup` +- `--conclude` +- `--ignore-errors` + +### `overlay new -r` can now reset overlays + +[@WindSoilder](https://github.com/WindSoilder) added the option to reset new overlays via `overlay new -r` in [#15849](https://github.com/nushell/nushell/pull/15849). + +### See env variables as externals would + +In [#15875](https://github.com/nushell/nushell/pull/15875) did [@cptpiepmatz](https://github.com/cptpiepmatz) add the command `debug env` to get a record of how an external would get the environment variables. +This includes handling the `$env.PATH` and all env conversions. + +### Use PowerShell scripts from the `$env.PATH` + +[@fdncred](https://github.com/fdncred) made it possible in [#15760](https://github.com/nushell/nushell/pull/15760) to execute powershell scripts from anywhere if they are in the `$env.PATH`. + +### Make your table look like they are from neovim + +[@gmr458](https://github.com/gmr458) added the new table mode `"single"` to `$env.config.table.mode` in [#15672](https://github.com/nushell/nushell/pull/15672). +It looks like the `"default"` with sharp corners or `"heavy"` with thinner lines: + +```nu +$env.config.table.mode = "single" +scope commands | select name category | first 2 +# => ┌───┬───────┬──────────┐ +# => │ # │ name │ category │ +# => ├───┼───────┼──────────┤ +# => │ 0 │ alias │ core │ +# => │ 1 │ all │ filters │ +# => └───┴───────┴──────────┘ +``` + +### Center columns via `to md --center` + +[@lazenga](https://github.com/lazenga) added in [#15861](https://github.com/nushell/nushell/pull/15861) the flag `--center` to `to md`. +With it you can pass a list of cell-paths to center in the markdown output. + +```nu +version | select version build_time | transpose k v | to md --center [v] --pretty +# => | k | v | +# => | ---------- |:--------------------------:| +# => | version | 0.104.2 | +# => | build_time | 2025-06-08 23:31:40 +02:00 | +``` + +### Prefer OSC 9;9 on Windows over OSC 7 + +[@ofek](https://github.com/ofek) made `$env.config.shell_integration.osc7 = false` by default on Windows in favor of `$env.config.shell_integration.osc9_9 = true` in [#15914](https://github.com/nushell/nushell/pull/15914). + +### Disable expensive calculations with `gstat --disable-tag` + +In [#15893](https://github.com/nushell/nushell/pull/15893) did [@snickerdoodle2](https://github.com/snickerdoodle2) add the option `--disable-tag` to disable some of the heavy calculations of the `gstat` plugin. + +### Know what `open` and `save` can do with `std/help` + +`open` and `save` can use `from` and `to` to convert data types. +With the addition of [@weirdan](https://github.com/weirdan) in [#15651](https://github.com/nushell/nushell/pull/15651), +the `std/help` command can now show these conversions. + +### Content type of `view span` + +[@weirdan](https://github.com/weirdan) added in [#15842](https://github.com/nushell/nushell/pull/15842) a content type to `view span`. +If your display hook highlights content types, will this be a nice addition. ## Breaking changes -### Cell-paths with case-sensitivity and withou`!` +### Cell-paths with case-sensitivity and without`!` The new cell-path syntax `!`, introduced by [@Bahex](https://github.com/Bahex) in [#15692](https://github.com/nushell/nushell/pull/15692), may break some commands. If your commands relied on case-insensitive paths, please check your code. @@ -159,6 +307,7 @@ You will need to use `polar collect` to evaluate them. ## Bug fixes and other changes + |author|title|link| |-|-|-| |[@Bahex](https://github.com/Bahex)|fix parsing of bare word string interpolations that start with a sub expression|[#15735](https://github.com/nushell/nushell/pull/15735)| @@ -226,6 +375,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@ayax79](https://github.com/ayax79)|Polars upgrade|[#15852](https://github.com/nushell/nushell/pull/15852)| |[@ayax79](https://github.com/ayax79)|Add regex documentation/examples to `polars col`|[#15898](https://github.com/nushell/nushell/pull/15898)| |[@colececil](https://github.com/colececil)|docs: Add vfox to list of tools supporting Nushell|[#15687](https://github.com/nushell/nushell/pull/15687)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Refactor: Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind`|[#15777](https://github.com/nushell/nushell/pull/15777)| |[@cptpiepmatz](https://github.com/cptpiepmatz)|Provide a better error for prefix-only path for PWD|[#15817](https://github.com/nushell/nushell/pull/15817)| |[@cptpiepmatz](https://github.com/cptpiepmatz)|Move job errors into `ShellError::Job` variant|[#15820](https://github.com/nushell/nushell/pull/15820)| |[@fdncred](https://github.com/fdncred)|update nushell to use coreutils v0.1.0 crates|[#15896](https://github.com/nushell/nushell/pull/15896)| @@ -236,7 +386,9 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@hustcer](https://github.com/hustcer)|Bump dev version to 0.104.2|[#15809](https://github.com/nushell/nushell/pull/15809)| |[@hustcer](https://github.com/hustcer)|Update comments of release-pkg.nu for building of MSI package|[#15815](https://github.com/nushell/nushell/pull/15815)| |[@hustcer](https://github.com/hustcer)|Allow specifying MSI version via env var and workflow input|[#15828](https://github.com/nushell/nushell/pull/15828)| +|[@hustcer](https://github.com/hustcer)|Bump to 0.105.0|[#15930](https://github.com/nushell/nushell/pull/15930)| |[@kumarUjjawal](https://github.com/kumarUjjawal)|Better error handling for negative integer exponents in ** operator|[#15882](https://github.com/nushell/nushell/pull/15882)| +|[@liquid-dragons](https://github.com/liquid-dragons)|Fix typo in examples of the table command|[#15925](https://github.com/nushell/nushell/pull/15925)| |[@luong-komorebi](https://github.com/luong-komorebi)|docs: update ubuntu version in PLATFORM_SUPPORT.md|[#15662](https://github.com/nushell/nushell/pull/15662)| |[@musicinmybrain](https://github.com/musicinmybrain)|Update lscolors from 0.17 to 0.20|[#15737](https://github.com/nushell/nushell/pull/15737)| |[@new-years-eve](https://github.com/new-years-eve)|Refactor `find` to handle regex search and non-regex search the same way|[#15839](https://github.com/nushell/nushell/pull/15839)| @@ -343,11 +495,13 @@ Afterwards, go through each PR and classify it as one of the following: |[@hustcer](https://github.com/hustcer)|Allow specifying MSI version via env var and workflow input|[#15828](https://github.com/nushell/nushell/pull/15828)| |[@hustcer](https://github.com/hustcer)|Fix build failure of aarch64 and armv7 musl targets|[#15835](https://github.com/nushell/nushell/pull/15835)| |[@hustcer](https://github.com/hustcer)|Try to fix PAT issue of winget publish account|[#15922](https://github.com/nushell/nushell/pull/15922)| +|[@hustcer](https://github.com/hustcer)|Bump to 0.105.0|[#15930](https://github.com/nushell/nushell/pull/15930)| |[@jjflash95](https://github.com/jjflash95)|Fix #15571 panic on write to source parquet file|[#15601](https://github.com/nushell/nushell/pull/15601)| |[@kamek-pf](https://github.com/kamek-pf)|fix(glob): Fix drive-letter glob expansion on Windows|[#15871](https://github.com/nushell/nushell/pull/15871)| |[@kumarUjjawal](https://github.com/kumarUjjawal)|fix(which): remove required positional argument to allow spread input|[#15870](https://github.com/nushell/nushell/pull/15870)| |[@kumarUjjawal](https://github.com/kumarUjjawal)|Better error handling for negative integer exponents in ** operator|[#15882](https://github.com/nushell/nushell/pull/15882)| |[@lazenga](https://github.com/lazenga)|feat(to-md): add support for centering columns via CellPaths (#14552)|[#15861](https://github.com/nushell/nushell/pull/15861)| +|[@liquid-dragons](https://github.com/liquid-dragons)|Fix typo in examples of the table command|[#15925](https://github.com/nushell/nushell/pull/15925)| |[@luismeyer95](https://github.com/luismeyer95)|fix(parser): don't parse closure in block position (fixes #15417)|[#15680](https://github.com/nushell/nushell/pull/15680)| |[@luong-komorebi](https://github.com/luong-komorebi)|docs: update ubuntu version in PLATFORM_SUPPORT.md|[#15662](https://github.com/nushell/nushell/pull/15662)| |[@musicinmybrain](https://github.com/musicinmybrain)|Update lscolors from 0.17 to 0.20|[#15737](https://github.com/nushell/nushell/pull/15737)| @@ -378,4 +532,4 @@ Afterwards, go through each PR and classify it as one of the following: |[@zhiburt](https://github.com/zhiburt)|Fix table wrap emojie|[#15138](https://github.com/nushell/nushell/pull/15138)| |[@zhiburt](https://github.com/zhiburt)|nu-table/ 1 refactoring + a few optimizations + small fix|[#15653](https://github.com/nushell/nushell/pull/15653)| |[@zhiburt](https://github.com/zhiburt)|Fix #15653 regression with not counting padding properly|[#15704](https://github.com/nushell/nushell/pull/15704)| -|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnecessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| +|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| From 96e48c88966d09849cd13574640a83bd78984bc0 Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Tue, 10 Jun 2025 18:16:54 +0200 Subject: [PATCH 08/11] add excerpt and some example --- blog/2025-06-09-nushell_0_105_0.md | 35 ++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-09-nushell_0_105_0.md index 4d1daf031ea..da0f14ff1e3 100644 --- a/blog/2025-06-09-nushell_0_105_0.md +++ b/blog/2025-06-09-nushell_0_105_0.md @@ -3,18 +3,16 @@ title: Nushell 0.105.0 author: The Nu Authors author_site: https://www.nushell.sh/blog author_image: https://www.nushell.sh/blog/images/nu_logo.png -excerpt: Today, we're releasing version 0.105.0 of Nu. This release adds... +excerpt: Today, we're releasing version 0.105.0 of Nu. This release adds support for stored closures in the `where` command, making `filter` obsolete, improved deprecation tools for custom commands, case-sensitive cell-path handling with new syntax for case-insensitivity, a powerful new `recurse` command to explore nested data, a full switch from OpenSSL to Rustls for simpler Linux builds, smarter HTTP commands that add `http://` by default, and several new features and improvements to Polars integration. --- - - # Nushell 0.105.0 - +Today, we're releasing version 0.105.0 of Nu. This release adds support for stored closures in the `where` command, making `filter` obsolete, improved deprecation tools for custom commands, case-sensitive cell-path handling with new syntax for case-insensitivity, a powerful new `recurse` command to explore nested data, a full switch from OpenSSL to Rustls for simpler Linux builds, smarter HTTP commands that add `http://` by default, and several new features and improvements to Polars integration. -Today, we're releasing version 0.105.0 of Nu. This release adds... +Thank you to all those who have contributed to this release through the PRs below, issues and suggestions leading to those changes, and Discord discussions. # Where to get it @@ -72,7 +70,7 @@ def my-old-command [] {} ## `oneof` the things Built-in commands have long used `SyntaxShape::OneOf` to accept multiple possible types. -Custom commands couldn’t do this until [#15646](https://github.com/nushell/nushell/pull/15646), when [@Bahex](https://github.com/Bahex) added the `oneof<...>` type to declare type alternatives. +Custom commands couldn't do this until [#15646](https://github.com/nushell/nushell/pull/15646), when [@Bahex](https://github.com/Bahex) added the `oneof<...>` type to declare type alternatives. Example: @@ -139,7 +137,26 @@ It is especially useful for exploring and searching through deep trees. # => ╰───┴──────────────┴───────────────────────────────────────────────╯ ``` - +`recurse` can also take a cell-path (or even a closure) to limit how it descends through its input, making it well suited to dealing with document formats like XML. +Here's an example using it to extract titles from the Nushell RSS feed: +```nu +http get 'https://www.nushell.sh/rss.xml' +| recurse content +| get item +| where ($it | describe -d).type == record and $it.tag? == title +| get content.content +| flatten +# => Nushell +# => This Week in Nushell #302 +# => This Week in Nushell #301 +# => Nushell 0.104.1 +# => This Week in Nushell #300 +# => This Week in Nushell #299 +# => This Week in Nushell #298 +# => This Week in Nushell #297 +# => Nushell 0.104.0 +# => This week in Nushell #296 +``` ## No more `openssl` @@ -151,8 +168,8 @@ If you still need openssl, build with `--no-default-features --features plugin,t ## Better Windows releases -Thanks to [@hustcer](https://github.com/hustcer) are our Windows release much better. -Check out the blog post for [nushell 0.104.1](https://www.nushell.sh/blog/2025-05-23-nushell_0_104_1.html) for more info on that. +Thanks to [@hustcer](https://github.com/hustcer), our Windows releases are now much improved. +Check out the [Nushell 0.104.1 blog post](https://www.nushell.sh/blog/2025-05-23-nushell_0_104_1.html) for more details. ## HTTP by default From 204efb4976030fe56ccb1b7378b4c3daa7ca719c Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Tue, 10 Jun 2025 18:18:32 +0200 Subject: [PATCH 09/11] fix typo --- blog/2025-06-09-nushell_0_105_0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-09-nushell_0_105_0.md index da0f14ff1e3..540d9d0e257 100644 --- a/blog/2025-06-09-nushell_0_105_0.md +++ b/blog/2025-06-09-nushell_0_105_0.md @@ -549,4 +549,4 @@ Afterwards, go through each PR and classify it as one of the following: |[@zhiburt](https://github.com/zhiburt)|Fix table wrap emojie|[#15138](https://github.com/nushell/nushell/pull/15138)| |[@zhiburt](https://github.com/zhiburt)|nu-table/ 1 refactoring + a few optimizations + small fix|[#15653](https://github.com/nushell/nushell/pull/15653)| |[@zhiburt](https://github.com/zhiburt)|Fix #15653 regression with not counting padding properly|[#15704](https://github.com/nushell/nushell/pull/15704)| -|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| +|[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnecessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| From 4d3c31bfe596f123bb90cfcc5bdba3637bd03151 Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Tue, 10 Jun 2025 18:30:52 +0200 Subject: [PATCH 10/11] move the file to the correct date --- ...025-06-09-nushell_0_105_0.md => 2025-06-10-nushell_0_105_0.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename blog/{2025-06-09-nushell_0_105_0.md => 2025-06-10-nushell_0_105_0.md} (100%) diff --git a/blog/2025-06-09-nushell_0_105_0.md b/blog/2025-06-10-nushell_0_105_0.md similarity index 100% rename from blog/2025-06-09-nushell_0_105_0.md rename to blog/2025-06-10-nushell_0_105_0.md From 830e068bb6b8095aa9e5830075ec566f0798af5e Mon Sep 17 00:00:00 2001 From: Tim 'Piepmatz' Hesse Date: Tue, 10 Jun 2025 18:34:40 +0200 Subject: [PATCH 11/11] add toc --- blog/2025-06-10-nushell_0_105_0.md | 106 +++++++++++++++++++---------- 1 file changed, 70 insertions(+), 36 deletions(-) diff --git a/blog/2025-06-10-nushell_0_105_0.md b/blog/2025-06-10-nushell_0_105_0.md index 540d9d0e257..ca900908394 100644 --- a/blog/2025-06-10-nushell_0_105_0.md +++ b/blog/2025-06-10-nushell_0_105_0.md @@ -22,9 +22,43 @@ As part of this release, we also publish a set of optional [plugins](https://www # Table of contents +- [_Highlights and themes of this release_](#highlights-and-themes-of-this-release-toc) + - [_One `where` to rule them all_](#one-where-to-rule-them-all-toc) + - [_Better deprecations_](#better-deprecations-toc) + - [_`oneof` the things_](#oneof-the-things-toc) + - [_Case-sensitive cell-paths or not`!`_](#case-sensitive-cell-paths-or-not-toc) + - [_`recurse`'ively explore nested values_](#recurse-ively-explore-nested-values-toc) + - [_No more `openssl`_](#no-more-openssl-toc) + - [_Better Windows releases_](#better-windows-releases-toc) + - [_HTTP by default_](#http-by-default-toc) + - [_More Polars_](#more-polars-toc) +- [_Changes_](#changes-toc) + - [_Additions_](#additions-toc) + - [_Ignore fields in simple `parse` patterns with `_`_](#ignore-fields-in-simple-parse-patterns-with-toc) + - [_Lazy closure evaluation for `default`_](#lazy-closure-evaluation-for-default-toc) + - [_`path join` can now read byte stream input_](#path-join-can-now-read-byte-stream-input-toc) + - [_`run-external` spreads command if it's a list_](#run-external-spreads-command-if-it-s-a-list-toc) + - [_Improvements to `bench`_](#improvements-to-bench-toc) + - [_`overlay new -r` can now reset overlays_](#overlay-new-r-can-now-reset-overlays-toc) + - [_See env variables as externals would_](#see-env-variables-as-externals-would-toc) + - [_Use PowerShell scripts from the `$env.PATH`_](#use-powershell-scripts-from-the-env-path-toc) + - [_Make your table look like they are from neovim_](#make-your-table-look-like-they-are-from-neovim-toc) + - [_Center columns via `to md --center`_](#center-columns-via-to-md-center-toc) + - [_Prefer OSC 9;9 on Windows over OSC 7_](#prefer-osc-9-9-on-windows-over-osc-7-toc) + - [_Disable expensive calculations with `gstat --disable-tag`_](#disable-expensive-calculations-with-gstat-disable-tag-toc) + - [_Know what `open` and `save` can do with `std/help`_](#know-what-open-and-save-can-do-with-std-help-toc) + - [_Content type of `view span`_](#content-type-of-view-span-toc) + - [_Breaking changes_](#breaking-changes-toc) + - [_Cell-paths with case-sensitivity and without`!`_](#cell-paths-with-case-sensitivity-and-without-toc) + - [_Paths on lazy frames now produce expressions_](#paths-on-lazy-frames-now-produce-expressions-toc) + - [_Bug fixes and other changes_](#bug-fixes-and-other-changes-toc) +- [_Notes for plugin developers_](#notes-for-plugin-developers-toc) + - [_Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind`_](#construct-ioerror-from-std-io-error-instead-of-std-io-errorkind-toc) +- [_Hall of fame_](#hall-of-fame-toc) +- [_Full changelog_](#full-changelog-toc) -# Highlights and themes of this release +# Highlights and themes of this release [[toc](#table-of-contents)] -## One `where` to rule them all +## One `where` to rule them all [[toc](#table-of-contents)] `where` used to support only row conditions and literal closures for filtering rows. If you wanted to use stored closures, you had to use `filter`. @@ -50,7 +84,7 @@ In [#15697](https://github.com/nushell/nushell/pull/15697), [@Bahex](https://git Now, `where` can be used as a drop-in replacement for `filter`. -## Better deprecations +## Better deprecations [[toc](#table-of-contents)] You can now use the `@deprecated` attribute on custom commands to mark them as deprecated, thanks to [@132ikl](https://github.com/132ikl) in [#15770](https://github.com/nushell/nushell/pull/15770). Pass a string as the first argument to show a custom deprecation message. You can also add flags to give more details: @@ -67,7 +101,7 @@ For example: def my-old-command [] {} ``` -## `oneof` the things +## `oneof` the things [[toc](#table-of-contents)] Built-in commands have long used `SyntaxShape::OneOf` to accept multiple possible types. Custom commands couldn't do this until [#15646](https://github.com/nushell/nushell/pull/15646), when [@Bahex](https://github.com/Bahex) added the `oneof<...>` type to declare type alternatives. @@ -80,7 +114,7 @@ def foo [ ] { .. } ``` -## Case-sensitive cell-paths or not`!` +## Case-sensitive cell-paths or not`!` [[toc](#table-of-contents)] Before, it wasn't clear if cell-paths were case-sensitive, so some commands expected case sensitivity while others didn't. [@Bahex](https://github.com/Bahex) fixed this in [#15692](https://github.com/nushell/nushell/pull/15692). @@ -104,7 +138,7 @@ The `--sensitive` and `--insensitive` flags still work but some are now deprecat You can also use the new syntax to say: get `"foo"` case-insensitively, or return nothing if not found: `get foo?!`. -## `recurse`'ively explore nested values +## `recurse`'ively explore nested values [[toc](#table-of-contents)] This release adds a new `recurse` command in `std-rfc/iter`, as an equivalent to jq's `recurse`/`..`. @@ -158,20 +192,20 @@ http get 'https://www.nushell.sh/rss.xml' # => This week in Nushell #296 ``` -## No more `openssl` +## No more `openssl` [[toc](#table-of-contents)] -If you've built nushell on Linux, you probably had to install openssl libraries because we linked to it by default. -This version switches fully to [rustls](https://github.com/rustls/rustls), a pure Rust TLS library, making builds simpler. +If you've built nushell on Linux, you probably had to install openssl libraries because we linked to it by default. +This version switches fully to [rustls](https://github.com/rustls/rustls), a pure Rust TLS library, making builds simpler. The change was made by [@cptpiepmatz](https://github.com/cptpiepmatz) in [#15810](https://github.com/nushell/nushell/pull/15810), and [#15812](https://github.com/nushell/nushell/pull/15812) added support for older platforms. If you still need openssl, build with `--no-default-features --features plugin,trash-support,sqlite,native-tls`. -## Better Windows releases +## Better Windows releases [[toc](#table-of-contents)] Thanks to [@hustcer](https://github.com/hustcer), our Windows releases are now much improved. Check out the [Nushell 0.104.1 blog post](https://www.nushell.sh/blog/2025-05-23-nushell_0_104_1.html) for more details. -## HTTP by default +## HTTP by default [[toc](#table-of-contents)] Running `http get example.com` used to fail because the command needed a full URL. [@noahfraiture](https://github.com/noahfraiture) fixed this in [#15804](https://github.com/nushell/nushell/pull/15804) by letting Nushell add `http://` when the scheme is missing. @@ -180,7 +214,7 @@ Now you can write: - `http get example.com` - `http get :8000` goes to [http://localhost:8000](http://localhost:8000) -## More Polars +## More Polars [[toc](#table-of-contents)] This release adds several new `polars` commands: @@ -194,11 +228,11 @@ Thanks to [@pyz4](https://github.com/pyz4), `polars unique` ([#15771](https://gi [@pyz4](https://github.com/pyz4) also added new `polars math` expressions in [#15822](https://github.com/nushell/nushell/pull/15822). -# Changes +# Changes [[toc](#table-of-contents)] -## Additions +## Additions [[toc](#table-of-contents)] -### Ignore fields in simple `parse` patterns with `_` +### Ignore fields in simple `parse` patterns with `_` [[toc](#table-of-contents)] [@132ikl](https://github.com/132ikl) added the option to use the placeholder `_` to ignore fields in [#15873](https://github.com/nushell/nushell/pull/15873). @@ -211,7 +245,7 @@ Thanks to [@pyz4](https://github.com/pyz4), `polars unique` ([#15771](https://gi # => ╰───┴───────╯ ``` -### Lazy closure evaluation for `default` +### Lazy closure evaluation for `default` [[toc](#table-of-contents)] `default` can now take a closure for a default value instead of a direct value thanks to [@Mrfiregem](https://github.com/Mrfiregem) in [#15654](https://github.com/nushell/nushell/pull/15654). These closure are lazily evaluated and cached. @@ -221,7 +255,7 @@ ls | default { sleep 5sec; 'N/A' } name # => No-op since `name` column is never ls | default { sleep 5sec; 'N/A' } foo bar # => creates columns `foo` and `bar`; only takes 5 seconds since closure result is cached ``` -### `path join` can now read byte stream input +### `path join` can now read byte stream input [[toc](#table-of-contents)] When commands return a path, thanks to [@Mrfiregem](https://github.com/Mrfiregem) in [#15736](https://github.com/nushell/nushell/pull/15736), you can now call `path join` directly without having to use `collect`. @@ -229,7 +263,7 @@ When commands return a path, thanks to [@Mrfiregem](https://github.com/Mrfiregem ^pwd | path join foo ``` -### `run-external` spreads command if it's a list +### `run-external` spreads command if it's a list [[toc](#table-of-contents)] With the addition of [#15776](https://github.com/nushell/nushell/pull/15776) by [@Mrfiregem](https://github.com/Mrfiregem), `run-external` (or calling an external) can now use a list to support arguments. @@ -238,7 +272,7 @@ $env.config.buffer_editor = ["emacsclient", "-s", "light", "-t"] run-external $env.config.buffer_editor foo.text ``` -### Improvements to `bench` +### Improvements to `bench` [[toc](#table-of-contents)] [@Tyarel8](https://github.com/Tyarel8) added some improvements to `bench` in [#15843](https://github.com/nushell/nushell/pull/15843) and [#15856](https://github.com/nushell/nushell/pull/15856). It is now possible to pass multiple closures into `bench` to compare and added the flags: @@ -249,20 +283,20 @@ It is now possible to pass multiple closures into `bench` to compare and added t - `--conclude` - `--ignore-errors` -### `overlay new -r` can now reset overlays +### `overlay new -r` can now reset overlays [[toc](#table-of-contents)] [@WindSoilder](https://github.com/WindSoilder) added the option to reset new overlays via `overlay new -r` in [#15849](https://github.com/nushell/nushell/pull/15849). -### See env variables as externals would +### See env variables as externals would [[toc](#table-of-contents)] In [#15875](https://github.com/nushell/nushell/pull/15875) did [@cptpiepmatz](https://github.com/cptpiepmatz) add the command `debug env` to get a record of how an external would get the environment variables. This includes handling the `$env.PATH` and all env conversions. -### Use PowerShell scripts from the `$env.PATH` +### Use PowerShell scripts from the `$env.PATH` [[toc](#table-of-contents)] [@fdncred](https://github.com/fdncred) made it possible in [#15760](https://github.com/nushell/nushell/pull/15760) to execute powershell scripts from anywhere if they are in the `$env.PATH`. -### Make your table look like they are from neovim +### Make your table look like they are from neovim [[toc](#table-of-contents)] [@gmr458](https://github.com/gmr458) added the new table mode `"single"` to `$env.config.table.mode` in [#15672](https://github.com/nushell/nushell/pull/15672). It looks like the `"default"` with sharp corners or `"heavy"` with thinner lines: @@ -278,7 +312,7 @@ scope commands | select name category | first 2 # => └───┴───────┴──────────┘ ``` -### Center columns via `to md --center` +### Center columns via `to md --center` [[toc](#table-of-contents)] [@lazenga](https://github.com/lazenga) added in [#15861](https://github.com/nushell/nushell/pull/15861) the flag `--center` to `to md`. With it you can pass a list of cell-paths to center in the markdown output. @@ -291,38 +325,38 @@ version | select version build_time | transpose k v | to md --center [v] --prett # => | build_time | 2025-06-08 23:31:40 +02:00 | ``` -### Prefer OSC 9;9 on Windows over OSC 7 +### Prefer OSC 9;9 on Windows over OSC 7 [[toc](#table-of-contents)] [@ofek](https://github.com/ofek) made `$env.config.shell_integration.osc7 = false` by default on Windows in favor of `$env.config.shell_integration.osc9_9 = true` in [#15914](https://github.com/nushell/nushell/pull/15914). -### Disable expensive calculations with `gstat --disable-tag` +### Disable expensive calculations with `gstat --disable-tag` [[toc](#table-of-contents)] In [#15893](https://github.com/nushell/nushell/pull/15893) did [@snickerdoodle2](https://github.com/snickerdoodle2) add the option `--disable-tag` to disable some of the heavy calculations of the `gstat` plugin. -### Know what `open` and `save` can do with `std/help` +### Know what `open` and `save` can do with `std/help` [[toc](#table-of-contents)] `open` and `save` can use `from` and `to` to convert data types. With the addition of [@weirdan](https://github.com/weirdan) in [#15651](https://github.com/nushell/nushell/pull/15651), the `std/help` command can now show these conversions. -### Content type of `view span` +### Content type of `view span` [[toc](#table-of-contents)] [@weirdan](https://github.com/weirdan) added in [#15842](https://github.com/nushell/nushell/pull/15842) a content type to `view span`. If your display hook highlights content types, will this be a nice addition. -## Breaking changes +## Breaking changes [[toc](#table-of-contents)] -### Cell-paths with case-sensitivity and without`!` +### Cell-paths with case-sensitivity and without`!` [[toc](#table-of-contents)] The new cell-path syntax `!`, introduced by [@Bahex](https://github.com/Bahex) in [#15692](https://github.com/nushell/nushell/pull/15692), may break some commands. If your commands relied on case-insensitive paths, please check your code. -### Paths on lazy frames now produce expressions +### Paths on lazy frames now produce expressions [[toc](#table-of-contents)] Thanks to [@ayax79](https://github.com/ayax79) in [#15891](https://github.com/nushell/nushell/pull/15891), paths on lazy frames now generate expressions. You will need to use `polar collect` to evaluate them. -## Bug fixes and other changes +## Bug fixes and other changes [[toc](#table-of-contents)] |author|title|link| @@ -361,14 +395,14 @@ You will need to use `polar collect` to evaluate them. |[@zhiburt](https://github.com/zhiburt)|Fix #15653 regression with not counting padding properly|[#15704](https://github.com/nushell/nushell/pull/15704)| |[@zhiburt](https://github.com/zhiburt)|nu-table: (table --expand) Remove unnecessary use of truncate logic|[#15727](https://github.com/nushell/nushell/pull/15727)| -# Notes for plugin developers +# Notes for plugin developers [[toc](#table-of-contents)] -## Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind` +## Construct `IoError` from `std::io::Error` instead of `std::io::ErrorKind` [[toc](#table-of-contents)] To give us better control over IO errors, [@cptpiepmatz](https://github.com/cptpiepmatz) changed in [#15777](https://github.com/nushell/nushell/pull/15777) how `IoError`s are created. Now they’re built directly from `std::io::Error` instead of just the `ErrorKind`. Just remove the calls to `.kind()` and you're good to go. -# Hall of fame +# Hall of fame [[toc](#table-of-contents)] Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! :pray: @@ -418,7 +452,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@ysthakur](https://github.com/ysthakur)|Bump to 0.104.1 dev version|[#15669](https://github.com/nushell/nushell/pull/15669)| |[@ysthakur](https://github.com/ysthakur)|Use Default for making Suggestions in attribute_completions|[#15764](https://github.com/nushell/nushell/pull/15764)| -# Full changelog +# Full changelog [[toc](#table-of-contents)]