From c0bd8ad3e2bcc44b209937550b644f7dc5b4d0ad Mon Sep 17 00:00:00 2001 From: Ian Manske Date: Thu, 21 Nov 2024 19:35:15 -0800 Subject: [PATCH 1/8] Release notes for `0.101.0` Please add your new features and breaking changes to the release notes by opening PRs against the `release-notes-0.101.0` branch. ## TODO - [ ] look at interesting contributions - [ ] write all the sections - [ ] order the sections by interest - [ ] add the breaking changes - [ ] detail the breaking changes - [ ] add the full changelog - [ ] complete all the `TODO`s inside the release note - [ ] ... (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)) --- blog/2024-12-24-nushell_0_101_0.md | 77 ++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 blog/2024-12-24-nushell_0_101_0.md diff --git a/blog/2024-12-24-nushell_0_101_0.md b/blog/2024-12-24-nushell_0_101_0.md new file mode 100644 index 00000000000..6caa61d6385 --- /dev/null +++ b/blog/2024-12-24-nushell_0_101_0.md @@ -0,0 +1,77 @@ +--- +title: Nushell 0.101.0 +author: The Nu Authors +author_site: https://twitter.com/nu_shell +author_image: https://www.nushell.sh/blog/images/nu_logo.png +excerpt: Today, we're releasing version 0.101.0 of Nu. This release adds... +--- + + + + +# Nushell 0.101.0 + + +Today, we're releasing version 0.101.0 of Nu. This release adds... + +# Where to get it + +Nu 0.101.0 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.101.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 you can install and use with Nu. To install, use `cargo install nu_plugin_`. + +# 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 f10207e2f3c6ed92bb1aaf6d28d8eb9251f406ee Mon Sep 17 00:00:00 2001 From: Ian Manske Date: Sun, 15 Dec 2024 15:10:34 -0800 Subject: [PATCH 2/8] Start release notes for 0.101.0 (#1680) * Fix typo * Add PRs so far as todos in full changelog * Uncomment PRs doing version bumps * Add notes for (most) of my PRs * Add PRs to hall of fame and add missing PRs * Fix typos --- blog/2024-12-24-nushell_0_101_0.md | 251 ++++++++++++++++++++++++++++- 1 file changed, 247 insertions(+), 4 deletions(-) diff --git a/blog/2024-12-24-nushell_0_101_0.md b/blog/2024-12-24-nushell_0_101_0.md index 6caa61d6385..b3751b50fdb 100644 --- a/blog/2024-12-24-nushell_0_101_0.md +++ b/blog/2024-12-24-nushell_0_101_0.md @@ -5,6 +5,7 @@ author_site: https://twitter.com/nu_shell author_image: https://www.nushell.sh/blog/images/nu_logo.png excerpt: Today, we're releasing version 0.101.0 of Nu. This release adds... --- + @@ -12,6 +13,7 @@ excerpt: Today, we're releasing version 0.101.0 of Nu. This release adds... # Nushell 0.101.0 + Today, we're releasing version 0.101.0 of Nu. This release adds... # Where to get it @@ -46,8 +48,63 @@ As part of this release, we also publish a set of optional plugins you can insta ## Breaking changes +### `++` operator + +The `++` operator previously performed both appending and concatenation. + +```nu +# Appending +[1 2 3] ++ 4 == [1 2 3 4] + +# Concatenation +[1 2 3] ++ [4 5 6] == [1 2 3 4 5 6] +``` + +This created ambiguity when operating on nested lists: + +```nu +[[1 2] [3 4]] ++ [5 6] +# Should this be [[1 2] [3 4] [5 6]] or [[1 2] [3 4] 5 6] ? +``` + +Additionally, the `++=` operator was able to change the type of a mutable a due to its dual role: + +```nu +mut str: string = 'hello ' +($str | describe) == string + +$str ++= ['world'] +($str | describe) == list +``` + +After [#14344](https://github.com/nushell/nushell/pull/14344), the `++` operator now only performs concatenation (between lists, strings, or binary values). To append a value to a list, either wrap the value in a list or use the `append` command. + +```nu +mut list = [1 2] +$list ++= [3] +$list = $list | append 4 +``` + + + +### `timeit` + +The `timeit` command previously had a special behavior where expressions passed as arguments would have their evaluation deferred in order to later be timed. This lead to an interesting bug ([14401](https://github.com/nushell/nushell/issues/14401)) where the expression would be evaluated twice, since the new IR evaluator eagerly evaluates arguments passed to commands. + +To make the deferred evaluation more explicit, the `timeit` command can now only take a closure as an argument instead of any expression or value ([#14483](https://github.com/nushell/nushell/pull/14483)). Additionally, blocks are no longer supported by `timeit`, so any changes to the environment will be isolated to inside the closure. + +### `sys cpu` + +The `cpu_usage` column outputted by `sys cpu` works by sampling the CPU over a 400ms period. This wait long time is unhelpful if you are only interested in other information about the CPU like the number of cores (i.e., `sys cpu | length`). With [#14485](https://github.com/nushell/nushell/pull/14485), the `cpu_usage` column is now gated behind the `--long` flag. This way, `sys cpu` will take around 0-2ms instead of 400ms by default. + ## Deprecations +### `split-by` + +In [#14019](https://github.com/nushell/nushell/pull/14019), the `split-by` command was deprecated. Instead, please use `group-by` with multiple groupers. + ## Removals ## Bug fixes and other changes @@ -58,18 +115,204 @@ As part of this release, we also publish a set of optional plugins you can insta 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) | +| author | title | link | +| -------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------- | +| [@132ikl](https://github.com/132ikl) | Change tests which may invoke externals to use non-conflicting names | [#14516](https://github.com/nushell/nushell/pull/14516) | +| [@Bahex](https://github.com/Bahex) | docs(reduce): add example demonstrating accumulator as pipeline input | [#14593](https://github.com/nushell/nushell/pull/14593) | +| [@DziubaMaksym](https://github.com/DziubaMaksym) | fix: sample_config | [#14465](https://github.com/nushell/nushell/pull/14465) | +| [@Jasha10](https://github.com/Jasha10) | enable test_cp_recurse on macos | [#14358](https://github.com/nushell/nushell/pull/14358) | +| [@Kissaki](https://github.com/Kissaki) | Fix doc and code comment typos | [#14366](https://github.com/nushell/nushell/pull/14366) | +| [@PegasusPlusUS](https://github.com/PegasusPlusUS) | Fix unstable test case: One time my windows report drive letter as lowercase | [#14451](https://github.com/nushell/nushell/pull/14451) | +| [@alex-kattathra-johnson](https://github.com/alex-kattathra-johnson) | Shorten --max-time in tests and use a more stable error check | [#14494](https://github.com/nushell/nushell/pull/14494) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Fix missing `installed_plugins` field in `version` command | [#14488](https://github.com/nushell/nushell/pull/14488) | +| [@maxim-uvarov](https://github.com/maxim-uvarov) | rewrite error message to not use the word `function` | [#14533](https://github.com/nushell/nushell/pull/14533) | +| [@sgvictorino](https://github.com/sgvictorino) | skip `test_iteration_errors` if `/root` is missing | [#14299](https://github.com/nushell/nushell/pull/14299) | # Full changelog +| author | title | link | +| ------ | ----- | ---- | + + + + + + + +|[@132ikl](https://github.com/132ikl)|Change tests which may invoke externals to use non-conflicting names|[#14516](https://github.com/nushell/nushell/pull/14516)| + + + + + +|[@Bahex](https://github.com/Bahex)|fix(group-by): re #14337 name collision prevention|[#14360](https://github.com/nushell/nushell/pull/14360)| + + + + + + + +|[@Bahex](https://github.com/Bahex)|docs(reduce): add example demonstrating accumulator as pipeline input|[#14593](https://github.com/nushell/nushell/pull/14593)| + + + + +|[@DziubaMaksym](https://github.com/DziubaMaksym)|fix: sample_config|[#14465](https://github.com/nushell/nushell/pull/14465)| +|[@IanManske](https://github.com/IanManske)|Deprecate `split-by` command|[#14019](https://github.com/nushell/nushell/pull/14019)| +|[@IanManske](https://github.com/IanManske)|Change append operator to concatenation operator|[#14344](https://github.com/nushell/nushell/pull/14344)| + + + +|[@IanManske](https://github.com/IanManske)|Add `Filesize` type|[#14369](https://github.com/nushell/nushell/pull/14369)| +|[@IanManske](https://github.com/IanManske)|Remove `ListStream` type|[#14425](https://github.com/nushell/nushell/pull/14425)| +|[@IanManske](https://github.com/IanManske)|Make `timeit` take only closures as an argument|[#14483](https://github.com/nushell/nushell/pull/14483)| +|[@IanManske](https://github.com/IanManske)|Remove duplicate implementations of `CallExt::rest`|[#14484](https://github.com/nushell/nushell/pull/14484)| +|[@IanManske](https://github.com/IanManske)|Add `--long` flag for `sys cpu`|[#14485](https://github.com/nushell/nushell/pull/14485)| +|[@Jasha10](https://github.com/Jasha10)|enable test_cp_recurse on macos|[#14358](https://github.com/nushell/nushell/pull/14358)| +|[@Kissaki](https://github.com/Kissaki)|Fix doc and code comment typos|[#14366](https://github.com/nushell/nushell/pull/14366)| + + + + + + +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Fix small typos in std/dirs|[#14422](https://github.com/nushell/nushell/pull/14422)| + + + +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Remove long-unused `autoenv` tests|[#14436](https://github.com/nushell/nushell/pull/14436)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Add example for PROMPT_COMMAND_RIGHT|[#14439](https://github.com/nushell/nushell/pull/14439)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Bump reedline to current main|[#14455](https://github.com/nushell/nushell/pull/14455)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Update default-files README|[#14461](https://github.com/nushell/nushell/pull/14461)| + + + + + + + +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Update sample and scaffold files|[#14568](https://github.com/nushell/nushell/pull/14568)| + + + +|[@PegasusPlusUS](https://github.com/PegasusPlusUS)|Fix unstable test case: One time my windows report drive letter as lowercase|[#14451](https://github.com/nushell/nushell/pull/14451)| + + + + +|[@WindSoilder](https://github.com/WindSoilder)|Tests: add a test to make sure that function can't use mutable variable|[#14314](https://github.com/nushell/nushell/pull/14314)| +|[@WindSoilder](https://github.com/WindSoilder)|make std help more user friendly|[#14347](https://github.com/nushell/nushell/pull/14347)| + + + + + + + +|[@WindSoilder](https://github.com/WindSoilder)|update miette to 7.3|[#14454](https://github.com/nushell/nushell/pull/14454)| +|[@WindSoilder](https://github.com/WindSoilder)|update unicode-width to 0.2|[#14456](https://github.com/nushell/nushell/pull/14456)| +|[@WindSoilder](https://github.com/WindSoilder)|run `cargo update` manually to update dependencies|[#14569](https://github.com/nushell/nushell/pull/14569)| +|[@alex-kattathra-johnson](https://github.com/alex-kattathra-johnson)|Shorten --max-time in tests and use a more stable error check|[#14494](https://github.com/nushell/nushell/pull/14494)| +|[@amtoine](https://github.com/amtoine)|add `from ndnuon` and `to ndnuon` to stdlib|[#14334](https://github.com/nushell/nushell/pull/14334)| +|[@amtoine](https://github.com/amtoine)|fix multiline strings in NDNUON|[#14519](https://github.com/nushell/nushell/pull/14519)| + + + +|[@app/dependabot](https://github.com/app/dependabot)|Bump crate-ci/typos from 1.27.0 to 1.27.3|[#14321](https://github.com/nushell/nushell/pull/14321)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump serial_test from 3.1.1 to 3.2.0|[#14325](https://github.com/nushell/nushell/pull/14325)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump tempfile from 3.13.0 to 3.14.0|[#14326](https://github.com/nushell/nushell/pull/14326)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump mockito from 1.5.0 to 1.6.1|[#14336](https://github.com/nushell/nushell/pull/14336)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump terminal_size from 0.3.0 to 0.4.0|[#14393](https://github.com/nushell/nushell/pull/14393)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump thiserror from 1.0.69 to 2.0.3|[#14394](https://github.com/nushell/nushell/pull/14394)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump shadow-rs from 0.35.2 to 0.36.0|[#14396](https://github.com/nushell/nushell/pull/14396)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump crate-ci/typos from 1.27.3 to 1.28.1|[#14447](https://github.com/nushell/nushell/pull/14447)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump crate-ci/typos from 1.28.1 to 1.28.2|[#14503](https://github.com/nushell/nushell/pull/14503)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump indexmap from 2.6.0 to 2.7.0|[#14505](https://github.com/nushell/nushell/pull/14505)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump multipart-rs from 0.1.11 to 0.1.13|[#14506](https://github.com/nushell/nushell/pull/14506)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump ureq from 2.10.1 to 2.12.0|[#14507](https://github.com/nushell/nushell/pull/14507)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump bytes from 1.8.0 to 1.9.0|[#14508](https://github.com/nushell/nushell/pull/14508)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump scraper from 0.21.0 to 0.22.0|[#14557](https://github.com/nushell/nushell/pull/14557)| +|[@ayax79](https://github.com/ayax79)|Add support for converting polars decimal values to nushell values|[#14343](https://github.com/nushell/nushell/pull/14343)| +|[@ayax79](https://github.com/ayax79)|Upgrading to polars 0.44|[#14478](https://github.com/nushell/nushell/pull/14478)| +|[@ayax79](https://github.com/ayax79)|Convert Filesize to Int|[#14491](https://github.com/nushell/nushell/pull/14491)| +|[@ayax79](https://github.com/ayax79)|Documentation and error handling around `polars with-column --name`|[#14527](https://github.com/nushell/nushell/pull/14527)| +|[@ayax79](https://github.com/ayax79)|Improve handling of columns with null values|[#14588](https://github.com/nushell/nushell/pull/14588)| + + + + +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix missing `installed_plugins` field in `version` command|[#14488](https://github.com/nushell/nushell/pull/14488)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix `table` command when targeting WASM|[#14530](https://github.com/nushell/nushell/pull/14530)| + + + + +|[@devyn](https://github.com/devyn)|Turn compile errors into fatal errors|[#14388](https://github.com/nushell/nushell/pull/14388)| + + + + +|[@fdncred](https://github.com/fdncred)|update uutils crates|[#14371](https://github.com/nushell/nushell/pull/14371)| + + + + + +|[@fdncred](https://github.com/fdncred)|remove `terminal_size` crate everywhere it makes sense|[#14423](https://github.com/nushell/nushell/pull/14423)| +|[@fdncred](https://github.com/fdncred)|update rust toolchain to rust 1.81.0|[#14473](https://github.com/nushell/nushell/pull/14473)| + + + + + +|[@fdncred](https://github.com/fdncred)|update to reedline 9eb3c2d|[#14541](https://github.com/nushell/nushell/pull/14541)| + + + +|[@fdncred](https://github.com/fdncred)|tweak polars join for better cross joins|[#14586](https://github.com/nushell/nushell/pull/14586)| +|[@hustcer](https://github.com/hustcer)|Bump to dev version 0.100.1|[#14328](https://github.com/nushell/nushell/pull/14328)| +|[@maxim-uvarov](https://github.com/maxim-uvarov)|rewrite error message to not use the word `function`|[#14533](https://github.com/nushell/nushell/pull/14533)| +|[@michel-slm](https://github.com/michel-slm)|Bump quick-xml to 0.37.0|[#14354](https://github.com/nushell/nushell/pull/14354)| +|[@michel-slm](https://github.com/michel-slm)|Bump titlecase dependency|[#14502](https://github.com/nushell/nushell/pull/14502)| +|[@musicinmybrain](https://github.com/musicinmybrain)|Update rstest from 0.18 to 0.23 (the current version)|[#14350](https://github.com/nushell/nushell/pull/14350)| +|[@musicinmybrain](https://github.com/musicinmybrain)|Update procfs and which dependencies to their latest releases|[#14489](https://github.com/nushell/nushell/pull/14489)| +|[@musicinmybrain](https://github.com/musicinmybrain)|Update roxmltree from 0.19 to 0.20, the latest version|[#14513](https://github.com/nushell/nushell/pull/14513)| + + + + + + +|[@schrieveslaach](https://github.com/schrieveslaach)|Bump Calamine|[#14403](https://github.com/nushell/nushell/pull/14403)| +|[@sgvictorino](https://github.com/sgvictorino)|skip `test_iteration_errors` if `/root` is missing|[#14299](https://github.com/nushell/nushell/pull/14299)| + + + + + + + + +|[@sholderbach](https://github.com/sholderbach)|Cut down unnecessary lint allows|[#14335](https://github.com/nushell/nushell/pull/14335)| +|[@sholderbach](https://github.com/sholderbach)|Remove unused `FlatShape`s `And`/`Or`|[#14476](https://github.com/nushell/nushell/pull/14476)| +|[@sholderbach](https://github.com/sholderbach)|Add `remove` as a search term on `drop` commands|[#14493](https://github.com/nushell/nushell/pull/14493)| +|[@sholderbach](https://github.com/sholderbach)|Improve `sleep` example using multiple durations|[#14520](https://github.com/nushell/nushell/pull/14520)| + + + + +|[@ysthakur](https://github.com/ysthakur)|Avoid recomputing fuzzy match scores|[#13700](https://github.com/nushell/nushell/pull/13700)| + + + + -Today, we're releasing version 0.101.0 of Nu. This release adds... +Today, we're releasing version 0.101.0 of Nu. This release adds a simplified startup configuration, ... # Where to get it -Nu 0.101.0 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.101.0) or from [crates.io](https://crates.io/crates/nu). If you have Rust installed you can install it using `cargo install nu`. +Nushell 0.101.0 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.101.0) or from [crates.io](https://crates.io/crates/nu). If you have Rust installed, you can also install it using `cargo install nu`. -As part of this release, we also publish a set of optional plugins you can install and use with Nu. To install, use `cargo install nu_plugin_`. +As part of this release, we also publish a set of optional [plugins](/book/plugins.md) you can install and use with Nushell. # Table of contents @@ -28,6 +28,27 @@ As part of this release, we also publish a set of optional plugins you can insta # Highlights and themes of this release +## Simplified Startup Configuration + +With [#14249](https://github.com/nushell/nushell/pull/14249), Nushell now always loads its internal `default_env.nu` before the user `env.nu` is loaded, then loads the internal `default_config.nu` before the user's `config.nu` is loaded. This allows for a simpler user-configuration experience. Details are in [this blog entry](https://www.nushell.sh/blog/2024-12-04-configuration_preview.html) along with an updated [Configuration Chapter](https://www.nushell.sh/book/configuration.html) which should go live sometime today. + +### Related Startup Config Changes + +- [#14345](https://github.com/nushell/nushell/pull/14345): Hooks fields are non-optional +- [#14341](https://github.com/nushell/nushell/pull/14341): Hooks now default to an empty value of the proper type (e.g., `[]` or `{}`) when not otherwise specified. This means that you can always safely append or merge a new hook without first needing to check if it was a valid list/record. +- [#14435](https://github.com/nushell/nushell/pull/14435): An `$env.config` is always created at startup, populated with default values, even when no configuration files are loaded. +- [#14549](https://github.com/nushell/nushell/pull/14549): The `const` version of `NU_LIB_DIRS` is now populated by default instead of `$env.NU_LIB_DIRS`. +- [#14553](https://github.com/nushell/nushell/pull/14553): The `const` version of `NU_PLUGIN_DIRS` is now populated by default instead of `$env.NU_PLUGIN_DIRS`. +- [#14566](https://github.com/nushell/nushell/pull/14566): `ENV_CONVERSIONS` is now an empty record by default. The `PATH`/`Path` conversions are handled internally. +- [#14579](https://github.com/nushell/nushell/pull/14579): More defaults are set in Rust. Also sets a default, empty `TRANSIENT_PROMPT_COMMAND_RIGHT` and `TRANSIENT_PROMPT_MULTILINE_INDICATOR`. + +### Breaking Startup Config Changes + +There may be (hopefully) minor breaking changes due to the startup configuration handling. Known possible issues include: + +- Cannot merge changes to default menus since their definitions are no longer in `config.nu` by default. Instead, the entire menu should be redefined. +- Querying the `$env.NU_LIB_DIRS` will return an empty result by default. Query the constant `$NU_LIB_DIRS` instead. + - - +|[@Bahex](https://github.com/Bahex)|Add `path self` command for getting absolute paths to files at parse time|[#14303](https://github.com/nushell/nushell/pull/14303)| +|[@Bahex](https://github.com/Bahex)|add multiple grouper support to `group-by`|[#14337](https://github.com/nushell/nushell/pull/14337)| |[@Bahex](https://github.com/Bahex)|fix(group-by): re #14337 name collision prevention|[#14360](https://github.com/nushell/nushell/pull/14360)| - - - - - - - +|[@Bahex](https://github.com/Bahex)|truly flexible csv/tsv parsing|[#14399](https://github.com/nushell/nushell/pull/14399)| +|[@Bahex](https://github.com/Bahex)|Add `term query`, for querying information from terminals.|[#14427](https://github.com/nushell/nushell/pull/14427)| +|[@Bahex](https://github.com/Bahex)|`term query`: refactor, add `--prefix` flag|[#14446](https://github.com/nushell/nushell/pull/14446)| +|[@Bahex](https://github.com/Bahex)|Propagate existing errors in insert and merge|[#14453](https://github.com/nushell/nushell/pull/14453)| +|[@Bahex](https://github.com/Bahex)|lsp and --ide-check fix for `path self` related diagnostics|[#14538](https://github.com/nushell/nushell/pull/14538)| |[@Bahex](https://github.com/Bahex)|docs(reduce): add example demonstrating accumulator as pipeline input|[#14593](https://github.com/nushell/nushell/pull/14593)| +|[@Bahex](https://github.com/Bahex)|remove the deprecated index argument from filter commands' closure signature|[#14594](https://github.com/nushell/nushell/pull/14594)| +|[@Bahex](https://github.com/Bahex)|`std/iter scan`: change closure signature to be consistent with `reduce`|[#14596](https://github.com/nushell/nushell/pull/14596)| - |[@DziubaMaksym](https://github.com/DziubaMaksym)|fix: sample_config|[#14465](https://github.com/nushell/nushell/pull/14465)| From 375ab0e72d2fb7d3f552699b2766c163400910d7 Mon Sep 17 00:00:00 2001 From: Ian Manske Date: Sat, 21 Dec 2024 14:21:27 -0800 Subject: [PATCH 5/8] Add PRs for 0.101.0 release notes (#1693) * Add additional PRs * Fix typos --- blog/2024-12-24-nushell_0_101_0.md | 48 ++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/blog/2024-12-24-nushell_0_101_0.md b/blog/2024-12-24-nushell_0_101_0.md index ab7dcc87421..15a9e77925f 100644 --- a/blog/2024-12-24-nushell_0_101_0.md +++ b/blog/2024-12-24-nushell_0_101_0.md @@ -91,6 +91,7 @@ When using multiple groupers, the output is in the form of nested records. [vegetable orange pumpkin] ] | group-by color category ``` + ``` ╭────────┬───────────────────────────────────────────────────────╮ │ │ ╭───────────┬───────────────────────────────────────╮ │ @@ -128,6 +129,7 @@ Each column corresponding to a `grouper` is named after it. For closure groupers ```nu .. | group-by color category --to-table ``` + ``` ╭───┬────────┬───────────┬───────────────────────────────────────╮ │ # │ color │ category │ items │ @@ -168,6 +170,7 @@ const this_directory = path self . ``` ### `term query` + Thanks to [@Bahex](https://github.com/Bahex) in [#14427](https://github.com/nushell/nushell/pull/14427), this release adds the `term query` command. `term query` allows sending a query to your terminal emulator and reading the reply. @@ -236,6 +239,7 @@ To make the deferred evaluation more explicit, the `timeit` command can now only The `cpu_usage` column outputted by `sys cpu` works by sampling the CPU over a 400ms period. This wait long time is unhelpful if you are only interested in other information about the CPU like the number of cores (i.e., `sys cpu | length`). With [#14485](https://github.com/nushell/nushell/pull/14485), the `cpu_usage` column is now gated behind the `--long` flag. This way, `sys cpu` will take around 0-2ms instead of 400ms by default. ### `from csv` and `from tsv` + Thanks to [@Bahex](https://github.com/Bahex) in [#14399](https://github.com/nushell/nushell/pull/14399), parsing csv and tsv content with the `--flexible` flag is more flexible than before. Previously, the first row of csv or tsv content would determine the number of columns, and rows containing more values than the determined columns would be truncated, losing those extra values. @@ -250,9 +254,11 @@ value 4,ddd 5,eee,extra ``` + ```nu .. | from csv --flexible --noheaders ``` + ``` ╭─#─┬─column0─┬─column1─┬─column2─╮ │ 0 │ value │ ❎ │ ❎ │ @@ -301,12 +307,15 @@ Thanks to all the contributors below for helping us solve issues, improve docume | -------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------- | | [@132ikl](https://github.com/132ikl) | Change tests which may invoke externals to use non-conflicting names | [#14516](https://github.com/nushell/nushell/pull/14516) | | [@Bahex](https://github.com/Bahex) | docs(reduce): add example demonstrating accumulator as pipeline input | [#14593](https://github.com/nushell/nushell/pull/14593) | +| [@Bahex](https://github.com/Bahex) | test(path self): Add tests | [#14607](https://github.com/nushell/nushell/pull/14607) | | [@DziubaMaksym](https://github.com/DziubaMaksym) | fix: sample_config | [#14465](https://github.com/nushell/nushell/pull/14465) | | [@Jasha10](https://github.com/Jasha10) | enable test_cp_recurse on macos | [#14358](https://github.com/nushell/nushell/pull/14358) | | [@Kissaki](https://github.com/Kissaki) | Fix doc and code comment typos | [#14366](https://github.com/nushell/nushell/pull/14366) | | [@PegasusPlusUS](https://github.com/PegasusPlusUS) | Fix unstable test case: One time my windows report drive letter as lowercase | [#14451](https://github.com/nushell/nushell/pull/14451) | +| [@PerchunPak](https://github.com/PerchunPak) | Fix issues in the example configs | [#14601](https://github.com/nushell/nushell/pull/14601) | | [@alex-kattathra-johnson](https://github.com/alex-kattathra-johnson) | Shorten --max-time in tests and use a more stable error check | [#14494](https://github.com/nushell/nushell/pull/14494) | | [@cptpiepmatz](https://github.com/cptpiepmatz) | Fix missing `installed_plugins` field in `version` command | [#14488](https://github.com/nushell/nushell/pull/14488) | +| [@cptpiepmatz](https://github.com/cptpiepmatz) | Fix `commands::network::http::*::*_timeout` tests on non-english system | [#14640](https://github.com/nushell/nushell/pull/14640) | | [@maxim-uvarov](https://github.com/maxim-uvarov) | rewrite error message to not use the word `function` | [#14533](https://github.com/nushell/nushell/pull/14533) | | [@sgvictorino](https://github.com/sgvictorino) | skip `test_iteration_errors` if `/root` is missing | [#14299](https://github.com/nushell/nushell/pull/14299) | @@ -323,6 +332,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@132ikl](https://github.com/132ikl)|Change tests which may invoke externals to use non-conflicting names|[#14516](https://github.com/nushell/nushell/pull/14516)| + |[@Bahex](https://github.com/Bahex)|Add `path self` command for getting absolute paths to files at parse time|[#14303](https://github.com/nushell/nushell/pull/14303)| @@ -337,6 +347,10 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@Bahex](https://github.com/Bahex)|remove the deprecated index argument from filter commands' closure signature|[#14594](https://github.com/nushell/nushell/pull/14594)| |[@Bahex](https://github.com/Bahex)|`std/iter scan`: change closure signature to be consistent with `reduce`|[#14596](https://github.com/nushell/nushell/pull/14596)| + + +|[@Bahex](https://github.com/Bahex)|test(path self): Add tests|[#14607](https://github.com/nushell/nushell/pull/14607)| + |[@DziubaMaksym](https://github.com/DziubaMaksym)|fix: sample_config|[#14465](https://github.com/nushell/nushell/pull/14465)| @@ -375,10 +389,23 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Update sample and scaffold files|[#14568](https://github.com/nushell/nushell/pull/14568)| + + + +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Doc file fixes|[#14608](https://github.com/nushell/nushell/pull/14608)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Remove duplicate version line|[#14611](https://github.com/nushell/nushell/pull/14611)| + + + + +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Set `split-by` doc category to "deprecated"|[#14633](https://github.com/nushell/nushell/pull/14633)| + |[@PegasusPlusUS](https://github.com/PegasusPlusUS)|Fix unstable test case: One time my windows report drive letter as lowercase|[#14451](https://github.com/nushell/nushell/pull/14451)| +|[@PerchunPak](https://github.com/PerchunPak)|Fix issues in the example configs|[#14601](https://github.com/nushell/nushell/pull/14601)| + @@ -394,6 +421,10 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@WindSoilder](https://github.com/WindSoilder)|update miette to 7.3|[#14454](https://github.com/nushell/nushell/pull/14454)| |[@WindSoilder](https://github.com/WindSoilder)|update unicode-width to 0.2|[#14456](https://github.com/nushell/nushell/pull/14456)| |[@WindSoilder](https://github.com/WindSoilder)|run `cargo update` manually to update dependencies|[#14569](https://github.com/nushell/nushell/pull/14569)| +|[@WindSoilder](https://github.com/WindSoilder)|update shadow-rs to 0.37|[#14617](https://github.com/nushell/nushell/pull/14617)| + + + |[@alex-kattathra-johnson](https://github.com/alex-kattathra-johnson)|Shorten --max-time in tests and use a more stable error check|[#14494](https://github.com/nushell/nushell/pull/14494)| |[@amtoine](https://github.com/amtoine)|add `from ndnuon` and `to ndnuon` to stdlib|[#14334](https://github.com/nushell/nushell/pull/14334)| |[@amtoine](https://github.com/amtoine)|fix multiline strings in NDNUON|[#14519](https://github.com/nushell/nushell/pull/14519)| @@ -414,11 +445,13 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@app/dependabot](https://github.com/app/dependabot)|Bump ureq from 2.10.1 to 2.12.0|[#14507](https://github.com/nushell/nushell/pull/14507)| |[@app/dependabot](https://github.com/app/dependabot)|Bump bytes from 1.8.0 to 1.9.0|[#14508](https://github.com/nushell/nushell/pull/14508)| |[@app/dependabot](https://github.com/app/dependabot)|Bump scraper from 0.21.0 to 0.22.0|[#14557](https://github.com/nushell/nushell/pull/14557)| +|[@app/dependabot](https://github.com/app/dependabot)|Bump crate-ci/typos from 1.28.2 to 1.28.4|[#14614](https://github.com/nushell/nushell/pull/14614)| |[@ayax79](https://github.com/ayax79)|Add support for converting polars decimal values to nushell values|[#14343](https://github.com/nushell/nushell/pull/14343)| |[@ayax79](https://github.com/ayax79)|Upgrading to polars 0.44|[#14478](https://github.com/nushell/nushell/pull/14478)| |[@ayax79](https://github.com/ayax79)|Convert Filesize to Int|[#14491](https://github.com/nushell/nushell/pull/14491)| |[@ayax79](https://github.com/ayax79)|Documentation and error handling around `polars with-column --name`|[#14527](https://github.com/nushell/nushell/pull/14527)| |[@ayax79](https://github.com/ayax79)|Improve handling of columns with null values|[#14588](https://github.com/nushell/nushell/pull/14588)| +|[@ayax79](https://github.com/ayax79)|Added flag --coalesce-columns to allow columns to be coalesced on full joins|[#14578](https://github.com/nushell/nushell/pull/14578)| @@ -427,6 +460,9 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix `table` command when targeting WASM|[#14530](https://github.com/nushell/nushell/pull/14530)| + +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix `commands::network::http::*::*_timeout` tests on non-english system|[#14640](https://github.com/nushell/nushell/pull/14640)| + |[@devyn](https://github.com/devyn)|Turn compile errors into fatal errors|[#14388](https://github.com/nushell/nushell/pull/14388)| @@ -452,7 +488,16 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@fdncred](https://github.com/fdncred)|tweak polars join for better cross joins|[#14586](https://github.com/nushell/nushell/pull/14586)| + + + + + + + +|[@fdncred](https://github.com/fdncred)|tweaks to `config flatten`|[#14639](https://github.com/nushell/nushell/pull/14639)| |[@hustcer](https://github.com/hustcer)|Bump to dev version 0.100.1|[#14328](https://github.com/nushell/nushell/pull/14328)| +|[@hustcer](https://github.com/hustcer)|Fix the document CI error for `polars profile` command|[#14642](https://github.com/nushell/nushell/pull/14642)| |[@maxim-uvarov](https://github.com/maxim-uvarov)|rewrite error message to not use the word `function`|[#14533](https://github.com/nushell/nushell/pull/14533)| |[@michel-slm](https://github.com/michel-slm)|Bump quick-xml to 0.37.0|[#14354](https://github.com/nushell/nushell/pull/14354)| |[@michel-slm](https://github.com/michel-slm)|Bump titlecase dependency|[#14502](https://github.com/nushell/nushell/pull/14502)| @@ -479,6 +524,9 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@sholderbach](https://github.com/sholderbach)|Remove unused `FlatShape`s `And`/`Or`|[#14476](https://github.com/nushell/nushell/pull/14476)| |[@sholderbach](https://github.com/sholderbach)|Add `remove` as a search term on `drop` commands|[#14493](https://github.com/nushell/nushell/pull/14493)| |[@sholderbach](https://github.com/sholderbach)|Improve `sleep` example using multiple durations|[#14520](https://github.com/nushell/nushell/pull/14520)| +|[@sholderbach](https://github.com/sholderbach)|Remove unused `sample_login.nu` file|[#14632](https://github.com/nushell/nushell/pull/14632)| +|[@sholderbach](https://github.com/sholderbach)|Remove `pub` on some command internals|[#14636](https://github.com/nushell/nushell/pull/14636)| +|[@sholderbach](https://github.com/sholderbach)|Pin reedline to 0.38.0 release|[#14651](https://github.com/nushell/nushell/pull/14651)| From 84511068568a706ba2dbc13c43cb6371d22605ea Mon Sep 17 00:00:00 2001 From: Ian Manske Date: Sun, 22 Dec 2024 03:49:56 -0800 Subject: [PATCH 6/8] Continue 0.101.0 release notes (#1695) * Add additional PRs * Fix typos * Continue release notes --- blog/2024-12-24-nushell_0_101_0.md | 364 ++++++++++++++++++----------- 1 file changed, 233 insertions(+), 131 deletions(-) diff --git a/blog/2024-12-24-nushell_0_101_0.md b/blog/2024-12-24-nushell_0_101_0.md index 15a9e77925f..45c70759b16 100644 --- a/blog/2024-12-24-nushell_0_101_0.md +++ b/blog/2024-12-24-nushell_0_101_0.md @@ -67,21 +67,168 @@ There may be (hopefully) minor breaking changes due to the startup configuration ## Additions +### `path self` + +Thanks to [@Bahex](https://github.com/Bahex) in [#14303](https://github.com/nushell/nushell/pull/14303), this release adds the `path self` command. `path self` is a parse-time only command for getting the absolute path of the source file containing it, or any file relative to the source file. + +```nushell +const this_file = path self +const this_directory = path self . +``` + +### `chunk-by` + +This release adds a new `chunk-by` command which will split a list into chunks based on a closure. The closure is applied to each element of the input list, and adjacent elements that share the same closure result value will be chunked together. This command was added in [#14410](https://github.com/nushell/nushell/pull/14410) thanks to [@cosineblast](https://github.com/cosineblast). + +```nu +# chunk by a predicate +[1 3 -2 -2 0 1 2] | chunk-by {|x| $x >= 0 } +# [[1 3] [-2 -2] [0 1 2]] + +# chunk duplicate, adjacent elements together +[a b b c a a] | chunk-by { $in } +# [[a] [b b] [c] [a a]] +``` + +### `term query` + +Thanks to [@Bahex](https://github.com/Bahex) in [#14427](https://github.com/nushell/nushell/pull/14427), this release adds the `term query` command. +`term query` allows sending a query to your terminal emulator and reading the reply. + +```nushell +# Get cursor position +term query (ansi cursor_position) --prefix (ansi csi) --terminator 'R' + +# Get terminal background color. +term query $'(ansi osc)10;?(ansi st)' --prefix $'(ansi osc)10;' --terminator (ansi st) + +# Read clipboard content on terminals supporting OSC-52. +term query $'(ansi osc)52;c;?(ansi st)' --prefix $'(ansi osc)52;c;' --terminator (ansi st) +``` + +### `utouch` + +This release adds the new `utouch` command, utilizing uutils/coreutils! In addition to all the flags of `touch`, `utouch` also has a `--timestamp` and `--date` flag to specify the timestamp to use. Eventually, the `utouch` command will replace the `touch` command. + +### WASM support + +Nushell used to have WASM support a while back, but at some point became incompatible with WASM. Thanks to the amazing work of [@cptpiepmatz](https://github.com/cptpiepmatz) in [#14418](https://github.com/nushell/nushell/pull/14418), Nushell can now be compiled to WASM again! In order to do so, certain (cargo) features have to be disabled meaning certain commands (like filesystem commands) will not be available. + +### `sys net` columns + +Thanks to [@rfaulhaber](https://github.com/rfaulhaber) in [#14389](https://github.com/nushell/nushell/pull/14389), the `sys net` command now has two additional columns. One is the `mac` column which lists mac address. The other is the `ip` column which lists the address(es) for each network interface. + +### Raw string pattern matching + +With this release, raw strings can now be used as match patterns thanks to [@sgvictorino](https://github.com/sgvictorino) in [#14573](https://github.com/nushell/nushell/pull/14573). + +```nu +match 'foo' { + r#'foo'# => true + _ => false +} +``` + ### Duration/Date Arithmetic With [#14295](https://github.com/nushell/nushell/pull/14295), dates can now be added to durations. Previously only durations could be added to dates. -### `group-by` +### `explore` keybinds + +In [#14468](https://github.com/nushell/nushell/pull/14468) thanks to [@paulie4](https://github.com/paulie4), more default keybindings were added to `explore` to better match `less`. + +## Breaking changes + +### `++` operator + +The `++` operator previously performed both appending and concatenation. + +```nu +# Appending +[1 2 3] ++ 4 == [1 2 3 4] + +# Concatenation +[1 2 3] ++ [4 5 6] == [1 2 3 4 5 6] +``` + +This created ambiguity when operating on nested lists: + +```nu +[[1 2] [3 4]] ++ [5 6] +# Should this be [[1 2] [3 4] [5 6]] or [[1 2] [3 4] 5 6] ? +``` + +Additionally, the `++=` operator was able to change the type of a mutable a due to its dual role: + +```nu +mut str: string = 'hello ' +($str | describe) == string -::: warning Breaking change -See a full overview of the [breaking changes](#breaking-changes) -::: +$str ++= ['world'] +($str | describe) == list +``` -Thanks to [@Bahex](https://github.com/Bahex) in [#14337](https://github.com/nushell/nushell/pull/14337), the `group-by` command now supports grouping by multiple criteria (henceforth referred to as grouper). -When using multiple groupers, the output is in the form of nested records. +After [#14344](https://github.com/nushell/nushell/pull/14344), the `++` operator now only performs concatenation (between lists, strings, or binary values). To append a value to a list, either wrap the value in a list or use the `append` command. ```nu -[ +mut list = [1 2] +$list ++= [3] +$list = $list | append 4 +``` + + + +### Stricter command signature parsing + +#### Input/output types + +Previous versions of Nushell would fail to parse input/output types on custom commands in some cases. However, a parse error would not be shown, making these silent parse errors. + +```nu +# These input/output types are not valid, but no error would be shown: +def some_cmd [] -> string { '' } +def some_cmd [] : string { '' } + +# Since the input/output types failed to parse, then this code would fail only at runtime: +(some_cmd) + 1 +``` + +Thanks to [@ratherforky](https://github.com/ratherforky), this has been fixed in [#14510](https://github.com/nushell/nushell/pull/14510). Invalid input/output types will now cause an error to be shown at parse-time. + +``` +# The custom commands above will now cause a parse error and should instead be: +def some_cmd []: any -> string { '' } +def some_cmd [] : any -> string { '' } + +# This will now fail at parse-time due to type checking, before any user code is run: +(some_cmd) + 1 +``` + +#### Custom command arguments + +This release also makes the parsing for custom command arguments more strict thanks to +[@sgvictorino](https://github.com/sgvictorino) in [#14309](https://github.com/nushell/nushell/pull/14309). For example, a colon (`:`) without a corresponding type is now an error. Below are some more examples of code snippets which are now parse errors. + +``` +# expected parameter or flag +def foo [ bar: int: ] {} + +# expected type +def foo [ bar: = ] {} +def foo [ bar: ] {} + +# expected default value +def foo [ bar = ] {} +``` + +### `group-by` + +Thanks to [@Bahex](https://github.com/Bahex) in [#14337](https://github.com/nushell/nushell/pull/14337), the `group-by` command now supports grouping by multiple criteria (henceforth referred to as a grouper). When using multiple groupers, the output is in the form of nested records. + +```nu +let data = [ [category color name]; [fruit red apple] [fruit red strawberry] @@ -89,7 +236,9 @@ When using multiple groupers, the output is in the form of nested records. [fruit orange orange] [vegetable orange carrot] [vegetable orange pumpkin] -] | group-by color category +] + +$data | group-by color category ``` ``` @@ -127,7 +276,7 @@ With the `--to-table` flag, instead of nested records, the output is in the form Each column corresponding to a `grouper` is named after it. For closure groupers, the columns are named with the scheme `closure_{i}`. ```nu -.. | group-by color category --to-table +$data | group-by color category --to-table ``` ``` @@ -159,75 +308,6 @@ Each column corresponding to a `grouper` is named after it. For closure groupers ╰───┴────────┴───────────┴───────────────────────────────────────╯ ``` -### `path self` - -Thanks to [@Bahex](https://github.com/Bahex) in [#14303](https://github.com/nushell/nushell/pull/14303), this release adds the `path self` command. -`path self` is a parse-time only command for getting the absolute path of the source file containing it, or any file relative to the source file. - -```nushell -const this_file = path self -const this_directory = path self . -``` - -### `term query` - -Thanks to [@Bahex](https://github.com/Bahex) in [#14427](https://github.com/nushell/nushell/pull/14427), this release adds the `term query` command. -`term query` allows sending a query to your terminal emulator and reading the reply. - -```nushell -# Get cursor position -term query (ansi cursor_position) --prefix (ansi csi) --terminator 'R' - -# Get terminal background color. -term query $'(ansi osc)10;?(ansi st)' --prefix $'(ansi osc)10;' --terminator (ansi st) - -# Read clipboard content on terminals supporting OSC-52. -term query $'(ansi osc)52;c;?(ansi st)' --prefix $'(ansi osc)52;c;' --terminator (ansi st) -``` - -## Breaking changes - -### `++` operator - -The `++` operator previously performed both appending and concatenation. - -```nu -# Appending -[1 2 3] ++ 4 == [1 2 3 4] - -# Concatenation -[1 2 3] ++ [4 5 6] == [1 2 3 4 5 6] -``` - -This created ambiguity when operating on nested lists: - -```nu -[[1 2] [3 4]] ++ [5 6] -# Should this be [[1 2] [3 4] [5 6]] or [[1 2] [3 4] 5 6] ? -``` - -Additionally, the `++=` operator was able to change the type of a mutable a due to its dual role: - -```nu -mut str: string = 'hello ' -($str | describe) == string - -$str ++= ['world'] -($str | describe) == list -``` - -After [#14344](https://github.com/nushell/nushell/pull/14344), the `++` operator now only performs concatenation (between lists, strings, or binary values). To append a value to a list, either wrap the value in a list or use the `append` command. - -```nu -mut list = [1 2] -$list ++= [3] -$list = $list | append 4 -``` - - - ### `timeit` The `timeit` command previously had a special behavior where expressions passed as arguments would have their evaluation deferred in order to later be timed. This lead to an interesting bug ([14401](https://github.com/nushell/nushell/issues/14401)) where the expression would be evaluated twice, since the new IR evaluator eagerly evaluates arguments passed to commands. @@ -240,11 +320,9 @@ The `cpu_usage` column outputted by `sys cpu` works by sampling the CPU over a 4 ### `from csv` and `from tsv` -Thanks to [@Bahex](https://github.com/Bahex) in [#14399](https://github.com/nushell/nushell/pull/14399), parsing csv and tsv content with the `--flexible` flag is more flexible than before. -Previously, the first row of csv or tsv content would determine the number of columns, and rows containing more values than the determined columns would be truncated, losing those extra values. +Thanks to [@Bahex](https://github.com/Bahex) in [#14399](https://github.com/nushell/nushell/pull/14399), parsing csv and tsv content with the `--flexible` flag is more flexible than before. Previously, the first row of csv or tsv content would determine the number of columns, and rows containing more values than the determined columns would be truncated, losing those extra values. -With this release, that is no longer the case. -Now, `--flexible` flag means the number of columns aren't limited by the first row and can have not just less but also more values than the first row. +With this release, that is no longer the case. Now, `--flexible` flag means the number of columns aren't limited by the first row and can have not just less but also more values than the first row. ```csv value @@ -282,11 +360,23 @@ The closure now also receives the accumulator value as pipeline input as well. > [a b c d] | iter scan "" {|it| append $it | str join} -n ``` +### Completion sorting + +In [#14424](https://github.com/nushell/nushell/pull/14424), some changes were made to completion sorting. If you have a custom completer that returns a record with an `options` field, then this may affect you. + +- If `options` contains `sort: true`, then completions will be sorted according to `$env.config.completions.sort`. Previously, they would have been sorted in alphabetical order. +- If `options` contains `sort: false`, completions will not be sorted. +- If `options` does not have a `sort` column, then that will be treated as `sort: true`. Previously, this would have been treated as `sort: false`. + +### Import module naming + +Thanks to [@sgvictorino](https://github.com/sgvictorino) in [#14353](https://github.com/nushell/nushell/pull/14353), modules with special characters in their name will be normalized by converting these special characters to underscores (`_`). Previously, it was not possible to use these modules after importing them. + ## Deprecations ### `split-by` -In [#14019](https://github.com/nushell/nushell/pull/14019), the `split-by` command was deprecated. Instead, please use `group-by` with multiple groupers. +In [#14019](https://github.com/nushell/nushell/pull/14019), the `split-by` command was deprecated. Instead, please use `group-by` with multiple groupers [as shown above](#group-by-toc). ### `date to-record` and `date to-table` @@ -295,8 +385,42 @@ In [#14019](https://github.com/nushell/nushell/pull/14019), the `split-by` comma ## Removals +### `NU_DISABLE_IR` + +With [#14293](https://github.com/nushell/nushell/pull/14293), the `NU_DISABLE_IR` environment variable is no longer used. Nushell will now always use the new IR evaluator instead of previous AST based evaluator. + ## Bug fixes and other changes +### `ls` + +The `ls` command used to have deterministic output order, but this was broken in 0.94.0. Thanks to [@userwiths](https://github.com/userwiths) in [#13875](https://github.com/nushell/nushell/pull/13875), `ls` output will now be sorted by the `name` column. Future changes to the order of `ls` will be a breaking change. + +Additionally, thanks to [@sgvictorino](https://github.com/sgvictorino) in [#14310](https://github.com/nushell/nushell/pull/14310), `ls` will now error if there are insufficient permissions to list the current working directory. Previously, `ls` would return empty output. + +### `SHLVL` + +When starting Nushell as an interactive REPL, Nushell will now increment the `SHLVL` environment variable. This change was made in [#14404](https://github.com/nushell/nushell/pull/14404) thanks to [@rikukiix](https://github.com/rikukiix). (Note that it is a known issue that `SHLVL` is still incremented on `exec`.) + +### `from` commands + +After [#14602](https://github.com/nushell/nushell/pull/14602), the `from` commands now remove the `content_type` pipeline metadata thanks to [@Bahex](https://github.com/Bahex). + +### Completions on custom commands + +Thanks to [@RobbingDaHood](https://github.com/RobbingDaHood) in [#14481](https://github.com/nushell/nushell/pull/14481), file completions are now triggered once again on custom commands after the first parameter. This was a regression due to the 0.99.x release. + +### `seq char` + +Thanks to [@anomius](https://github.com/anomius) in [#14261](https://github.com/nushell/nushell/pull/14261), `seq char` now works on any ASCII characters instead of only alphabetical ASCII characters. + +### `http` multipart + +The `http` commands now use CRLF when joining headers to match the HTTP specification. This change was made in [#14417](https://github.com/nushell/nushell/pull/14417) thanks to [@Beinsezii](https://github.com/Beinsezii). + +### `scope variables` + +`scope variables` now lists constant variables in scope (when using the IR evaluator) thanks to [@sgvictorino](https://github.com/sgvictorino in [#14577](https://github.com/nushell/nushell/pull/14577). + # Notes for plugin developers # Hall of fame @@ -318,6 +442,8 @@ Thanks to all the contributors below for helping us solve issues, improve docume | [@cptpiepmatz](https://github.com/cptpiepmatz) | Fix `commands::network::http::*::*_timeout` tests on non-english system | [#14640](https://github.com/nushell/nushell/pull/14640) | | [@maxim-uvarov](https://github.com/maxim-uvarov) | rewrite error message to not use the word `function` | [#14533](https://github.com/nushell/nushell/pull/14533) | | [@sgvictorino](https://github.com/sgvictorino) | skip `test_iteration_errors` if `/root` is missing | [#14299](https://github.com/nushell/nushell/pull/14299) | +| [@sgvictorino](https://github.com/sgvictorino) | return accurate type errors from blocks/expressions in type unions | [#14420](https://github.com/nushell/nushell/pull/14420) | +| [@zhiburt](https://github.com/zhiburt) | nu-table/ Do footer_inheritance by accounting for rows rather then a f… | [#14380](https://github.com/nushell/nushell/pull/14380) | # Full changelog @@ -346,13 +472,9 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@Bahex](https://github.com/Bahex)|docs(reduce): add example demonstrating accumulator as pipeline input|[#14593](https://github.com/nushell/nushell/pull/14593)| |[@Bahex](https://github.com/Bahex)|remove the deprecated index argument from filter commands' closure signature|[#14594](https://github.com/nushell/nushell/pull/14594)| |[@Bahex](https://github.com/Bahex)|`std/iter scan`: change closure signature to be consistent with `reduce`|[#14596](https://github.com/nushell/nushell/pull/14596)| - - - +|[@Bahex](https://github.com/Bahex)|remove `content_type` metadata from pipeline after `from ...` commands|[#14602](https://github.com/nushell/nushell/pull/14602)| |[@Bahex](https://github.com/Bahex)|test(path self): Add tests|[#14607](https://github.com/nushell/nushell/pull/14607)| - - - +|[@Beinsezii](https://github.com/Beinsezii)|command/http/client use CRLF for headers join instead of LF|[#14417](https://github.com/nushell/nushell/pull/14417)| |[@DziubaMaksym](https://github.com/DziubaMaksym)|fix: sample_config|[#14465](https://github.com/nushell/nushell/pull/14465)| |[@IanManske](https://github.com/IanManske)|Deprecate `split-by` command|[#14019](https://github.com/nushell/nushell/pull/14019)| |[@IanManske](https://github.com/IanManske)|Change append operator to concatenation operator|[#14344](https://github.com/nushell/nushell/pull/14344)| @@ -399,16 +521,11 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Set `split-by` doc category to "deprecated"|[#14633](https://github.com/nushell/nushell/pull/14633)| - - - +|[@PegasusPlusUS](https://github.com/PegasusPlusUS)|Feature: PWD-per-drive to facilitate working on multiple drives at Windows|[#14411](https://github.com/nushell/nushell/pull/14411)| |[@PegasusPlusUS](https://github.com/PegasusPlusUS)|Fix unstable test case: One time my windows report drive letter as lowercase|[#14451](https://github.com/nushell/nushell/pull/14451)| - |[@PerchunPak](https://github.com/PerchunPak)|Fix issues in the example configs|[#14601](https://github.com/nushell/nushell/pull/14601)| - - - - +|[@RobbingDaHood](https://github.com/RobbingDaHood)|#14238 Now the file completion is triggered on a custom command after the first parameter.|[#14481](https://github.com/nushell/nushell/pull/14481)| +|[@RobbingDaHood](https://github.com/RobbingDaHood)|For `#` to start a comment, then it either need to be the first chara…|[#14562](https://github.com/nushell/nushell/pull/14562)| |[@WindSoilder](https://github.com/WindSoilder)|Tests: add a test to make sure that function can't use mutable variable|[#14314](https://github.com/nushell/nushell/pull/14314)| |[@WindSoilder](https://github.com/WindSoilder)|make std help more user friendly|[#14347](https://github.com/nushell/nushell/pull/14347)| @@ -428,9 +545,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@alex-kattathra-johnson](https://github.com/alex-kattathra-johnson)|Shorten --max-time in tests and use a more stable error check|[#14494](https://github.com/nushell/nushell/pull/14494)| |[@amtoine](https://github.com/amtoine)|add `from ndnuon` and `to ndnuon` to stdlib|[#14334](https://github.com/nushell/nushell/pull/14334)| |[@amtoine](https://github.com/amtoine)|fix multiline strings in NDNUON|[#14519](https://github.com/nushell/nushell/pull/14519)| - - - +|[@anomius](https://github.com/anomius)|Seq char update will work on all char|[#14261](https://github.com/nushell/nushell/pull/14261)| |[@app/dependabot](https://github.com/app/dependabot)|Bump crate-ci/typos from 1.27.0 to 1.27.3|[#14321](https://github.com/nushell/nushell/pull/14321)| |[@app/dependabot](https://github.com/app/dependabot)|Bump serial_test from 3.1.1 to 3.2.0|[#14325](https://github.com/nushell/nushell/pull/14325)| |[@app/dependabot](https://github.com/app/dependabot)|Bump tempfile from 3.13.0 to 3.14.0|[#14326](https://github.com/nushell/nushell/pull/14326)| @@ -452,19 +567,13 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@ayax79](https://github.com/ayax79)|Documentation and error handling around `polars with-column --name`|[#14527](https://github.com/nushell/nushell/pull/14527)| |[@ayax79](https://github.com/ayax79)|Improve handling of columns with null values|[#14588](https://github.com/nushell/nushell/pull/14588)| |[@ayax79](https://github.com/ayax79)|Added flag --coalesce-columns to allow columns to be coalesced on full joins|[#14578](https://github.com/nushell/nushell/pull/14578)| - - - - +|[@cosineblast](https://github.com/cosineblast)|Implement chunk_by operation|[#14410](https://github.com/nushell/nushell/pull/14410)| +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Start to Add WASM Support Again|[#14418](https://github.com/nushell/nushell/pull/14418)| |[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix missing `installed_plugins` field in `version` command|[#14488](https://github.com/nushell/nushell/pull/14488)| |[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix `table` command when targeting WASM|[#14530](https://github.com/nushell/nushell/pull/14530)| - - - +|[@cptpiepmatz](https://github.com/cptpiepmatz)|Expose "to html" command|[#14536](https://github.com/nushell/nushell/pull/14536)| |[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix `commands::network::http::*::*_timeout` tests on non-english system|[#14640](https://github.com/nushell/nushell/pull/14640)| - - - +|[@devyn](https://github.com/devyn)|Remove the `NU_DISABLE_IR` option|[#14293](https://github.com/nushell/nushell/pull/14293)| |[@devyn](https://github.com/devyn)|Turn compile errors into fatal errors|[#14388](https://github.com/nushell/nushell/pull/14388)| @@ -504,22 +613,18 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@musicinmybrain](https://github.com/musicinmybrain)|Update rstest from 0.18 to 0.23 (the current version)|[#14350](https://github.com/nushell/nushell/pull/14350)| |[@musicinmybrain](https://github.com/musicinmybrain)|Update procfs and which dependencies to their latest releases|[#14489](https://github.com/nushell/nushell/pull/14489)| |[@musicinmybrain](https://github.com/musicinmybrain)|Update roxmltree from 0.19 to 0.20, the latest version|[#14513](https://github.com/nushell/nushell/pull/14513)| - - - - - - +|[@paulie4](https://github.com/paulie4)|`explore`: add more `less` key bindings and add `Transition::None`|[#14468](https://github.com/nushell/nushell/pull/14468)| +|[@ratherforky](https://github.com/ratherforky)|Fix silent failure of parsing input output types|[#14510](https://github.com/nushell/nushell/pull/14510)| +|[@rfaulhaber](https://github.com/rfaulhaber)|Add mac and IP address entries to `sys net`|[#14389](https://github.com/nushell/nushell/pull/14389)| +|[@rikukiix](https://github.com/rikukiix)|Update SHLVL (only when interactive) on startup|[#14404](https://github.com/nushell/nushell/pull/14404)| |[@schrieveslaach](https://github.com/schrieveslaach)|Bump Calamine|[#14403](https://github.com/nushell/nushell/pull/14403)| |[@sgvictorino](https://github.com/sgvictorino)|skip `test_iteration_errors` if `/root` is missing|[#14299](https://github.com/nushell/nushell/pull/14299)| - - - - - - - - +|[@sgvictorino](https://github.com/sgvictorino)|make command signature parsing more strict|[#14309](https://github.com/nushell/nushell/pull/14309)| +|[@sgvictorino](https://github.com/sgvictorino)|make `ls` return "Permission denied" for CWD instead of empty results|[#14310](https://github.com/nushell/nushell/pull/14310)| +|[@sgvictorino](https://github.com/sgvictorino)|normalize special characters in module names to allow variable access|[#14353](https://github.com/nushell/nushell/pull/14353)| +|[@sgvictorino](https://github.com/sgvictorino)|return accurate type errors from blocks/expressions in type unions|[#14420](https://github.com/nushell/nushell/pull/14420)| +|[@sgvictorino](https://github.com/sgvictorino)|support raw strings in match patterns|[#14573](https://github.com/nushell/nushell/pull/14573)| +|[@sgvictorino](https://github.com/sgvictorino)|return const values from `scope variables`|[#14577](https://github.com/nushell/nushell/pull/14577)| |[@sholderbach](https://github.com/sholderbach)|Cut down unnecessary lint allows|[#14335](https://github.com/nushell/nushell/pull/14335)| |[@sholderbach](https://github.com/sholderbach)|Remove unused `FlatShape`s `And`/`Or`|[#14476](https://github.com/nushell/nushell/pull/14476)| |[@sholderbach](https://github.com/sholderbach)|Add `remove` as a search term on `drop` commands|[#14493](https://github.com/nushell/nushell/pull/14493)| @@ -527,14 +632,11 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@sholderbach](https://github.com/sholderbach)|Remove unused `sample_login.nu` file|[#14632](https://github.com/nushell/nushell/pull/14632)| |[@sholderbach](https://github.com/sholderbach)|Remove `pub` on some command internals|[#14636](https://github.com/nushell/nushell/pull/14636)| |[@sholderbach](https://github.com/sholderbach)|Pin reedline to 0.38.0 release|[#14651](https://github.com/nushell/nushell/pull/14651)| - - - - +|[@userwiths](https://github.com/userwiths)|Fix inconsistency in `ls` sort-order|[#13875](https://github.com/nushell/nushell/pull/13875)| +|[@ysthakur](https://github.com/ysthakur)|Add utouch command from uutils/coreutils|[#11817](https://github.com/nushell/nushell/pull/11817)| |[@ysthakur](https://github.com/ysthakur)|Avoid recomputing fuzzy match scores|[#13700](https://github.com/nushell/nushell/pull/13700)| - - - +|[@ysthakur](https://github.com/ysthakur)|fix: Respect sort in custom completions|[#14424](https://github.com/nushell/nushell/pull/14424)| +|[@zhiburt](https://github.com/zhiburt)|nu-table/ Do footer_inheritance by accounting for rows rather then a f…|[#14380](https://github.com/nushell/nushell/pull/14380)| - - - - +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Load `default_env.nu`/`default_config.nu` before user `env.nu`/`config.nu`|[#14249](https://github.com/nushell/nushell/pull/14249)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Allow date to be added to duration|[#14295](https://github.com/nushell/nushell/pull/14295)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Deprecate `date to-record` and `date to-table`|[#14319](https://github.com/nushell/nushell/pull/14319)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Add proper config defaults for hooks|[#14341](https://github.com/nushell/nushell/pull/14341)| |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Fix small typos in std/dirs|[#14422](https://github.com/nushell/nushell/pull/14422)| - - - +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Always populate config record during startup|[#14435](https://github.com/nushell/nushell/pull/14435) |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Remove long-unused `autoenv` tests|[#14436](https://github.com/nushell/nushell/pull/14436)| |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Add example for PROMPT_COMMAND_RIGHT|[#14439](https://github.com/nushell/nushell/pull/14439)| |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Bump reedline to current main|[#14455](https://github.com/nushell/nushell/pull/14455)| |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Update default-files README|[#14461](https://github.com/nushell/nushell/pull/14461)| - - - - - - - +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Allow inherited environment variables|[#14467](https://github.com/nushell/nushell/pull/14467)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Only run `from_string` conversion on strings|[#14509](https://github.com/nushell/nushell/pull/14509)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Use const NU_LIB_DIRS in startup|[#14549](https://github.com/nushell/nushell/pull/14549)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Allow both NU_PLUGIN_DIRS const and env at the same time|[#14553](https://github.com/nushell/nushell/pull/14553)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Set empty `ENV_CONVERSIONS` record by default|[#14566](https://github.com/nushell/nushell/pull/14566)| |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Update sample and scaffold files|[#14568](https://github.com/nushell/nushell/pull/14568)| - - - - +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Moves additional env vars out of default_env and updates some transient prompt vars|[#14579](https://github.com/nushell/nushell/pull/14579)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Add missing color_config settings|[#14603](https://github.com/nushell/nushell/pull/14603)| |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Doc file fixes|[#14608](https://github.com/nushell/nushell/pull/14608)| |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Remove duplicate version line|[#14611](https://github.com/nushell/nushell/pull/14611)| - - - - +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Add version info to startup banner|[#14625](https://github.com/nushell/nushell/pull/14625)| +|[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Add shape_garbage|[#14626](https://github.com/nushell/nushell/pull/14626)| |[@NotTheDr01ds](https://github.com/NotTheDr01ds)|Set `split-by` doc category to "deprecated"|[#14633](https://github.com/nushell/nushell/pull/14633)| |[@PegasusPlusUS](https://github.com/PegasusPlusUS)|Feature: PWD-per-drive to facilitate working on multiple drives at Windows|[#14411](https://github.com/nushell/nushell/pull/14411)| |[@PegasusPlusUS](https://github.com/PegasusPlusUS)|Fix unstable test case: One time my windows report drive letter as lowercase|[#14451](https://github.com/nushell/nushell/pull/14451)| @@ -528,20 +536,16 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@RobbingDaHood](https://github.com/RobbingDaHood)|For `#` to start a comment, then it either need to be the first chara…|[#14562](https://github.com/nushell/nushell/pull/14562)| |[@WindSoilder](https://github.com/WindSoilder)|Tests: add a test to make sure that function can't use mutable variable|[#14314](https://github.com/nushell/nushell/pull/14314)| |[@WindSoilder](https://github.com/WindSoilder)|make std help more user friendly|[#14347](https://github.com/nushell/nushell/pull/14347)| - - - - - - - +|[@WindSoilder](https://github.com/WindSoilder)|add `--default` flag to input command|[#14374](https://github.com/nushell/nushell/pull/14374) +|[@WindSoilder](https://github.com/WindSoilder)|deprecate --ignore-shell-errors and --ignore-program-errors in `do` |[#14385](https://github.com/nushell/nushell/pull/14385)| +|[@WindSoilder](https://github.com/WindSoilder)|remove deprecated warnings|[#14386](https://github.com/nushell/nushell/pull/14386)| +|[@WindSoilder](https://github.com/WindSoilder)|raise ParseError if assign to a non-variable or non-mutable-variable|[#14405](https://github.com/nushell/nushell/pull/14405)| +|[@WindSoilder](https://github.com/WindSoilder)|du: add `-l/--long` flag, remove `-a/--all` flag|[#14407](https://github.com/nushell/nushell/pull/14407)| |[@WindSoilder](https://github.com/WindSoilder)|update miette to 7.3|[#14454](https://github.com/nushell/nushell/pull/14454)| |[@WindSoilder](https://github.com/WindSoilder)|update unicode-width to 0.2|[#14456](https://github.com/nushell/nushell/pull/14456)| |[@WindSoilder](https://github.com/WindSoilder)|run `cargo update` manually to update dependencies|[#14569](https://github.com/nushell/nushell/pull/14569)| |[@WindSoilder](https://github.com/WindSoilder)|update shadow-rs to 0.37|[#14617](https://github.com/nushell/nushell/pull/14617)| - - - +|[@WindSoilder](https://github.com/WindSoilder)|Remove `-a/-all` flag in du.|[#14618](https://github.com/nushell/nushell/pull/14618)| |[@alex-kattathra-johnson](https://github.com/alex-kattathra-johnson)|Shorten --max-time in tests and use a more stable error check|[#14494](https://github.com/nushell/nushell/pull/14494)| |[@amtoine](https://github.com/amtoine)|add `from ndnuon` and `to ndnuon` to stdlib|[#14334](https://github.com/nushell/nushell/pull/14334)| |[@amtoine](https://github.com/amtoine)|fix multiline strings in NDNUON|[#14519](https://github.com/nushell/nushell/pull/14519)| From 2965ed77ea95e7d4fc8c780a150abed25721ba4b Mon Sep 17 00:00:00 2001 From: Stefan Holderbach Date: Sun, 22 Dec 2024 19:56:05 +0100 Subject: [PATCH 8/8] Stefan summarizing (#1702) * Rose's changes * Darren's changes * Excerpt * Plugin author notes too lazy to link * TOC --- blog/2024-12-24-nushell_0_101_0.md | 322 ++++++++++++++++++++--------- 1 file changed, 221 insertions(+), 101 deletions(-) diff --git a/blog/2024-12-24-nushell_0_101_0.md b/blog/2024-12-24-nushell_0_101_0.md index cf6c802ebbe..861a69657d5 100644 --- a/blog/2024-12-24-nushell_0_101_0.md +++ b/blog/2024-12-24-nushell_0_101_0.md @@ -3,18 +3,14 @@ title: Nushell 0.101.0 author: The Nu Authors author_site: https://twitter.com/nu_shell author_image: https://www.nushell.sh/blog/images/nu_logo.png -excerpt: Today, we're releasing version 0.101.0 of Nu. This release adds... +excerpt: Today, we're releasing version 0.101.0 of Nu. This release adds a simplified startup configuration, several new commands, and additional tools to introspect the Nushell engine. --- - - - # Nushell 0.101.0 - -Today, we're releasing version 0.101.0 of Nu. This release adds a simplified startup configuration, ... +Today, we're releasing version 0.101.0 of Nu. This release adds a simplified startup configuration, several new commands, and additional tools to introspect the Nushell engine. # Where to get it @@ -24,15 +20,66 @@ As part of this release, we also publish a set of optional [plugins](/book/plugi # Table of contents +- [_Highlights and themes of this release_](#Highlights-and-themes-of-this-release-toc) + - [_Simplified Startup Configuration_](#Simplified-Startup-Configuration-toc) + - [_Related Startup Config Changes_](#Related-Startup-Config-Changes-toc) + - [_Breaking Startup Config Changes_](#Breaking-Startup-Config-Changes-toc) +- [_Changes_](#Changes-toc) + - [_Additions_](#Additions-toc) + - [_`path self`_](#path-self-toc) + - [_`chunk-by`_](#chunk-by-toc) + - [_`term query`_](#term-query-toc) + - [_`merge deep`_](#merge-deep-toc) + - [_`utouch`_](#utouch-toc) + - [_WASM support_](#WASM-support-toc) + - [_`sys net` columns_](#sys-net-columns-toc) + - [_Raw string pattern matching_](#Raw-string-pattern-matching-toc) + - [_Duration/Date Arithmetic_](#Duration/Date-Arithmetic-toc) + - [_`explore` keybinds_](#explore-keybinds-toc) + - [_Version in Startup banner_](#Version-in-Startup-banner-toc) + - [_`input --default`_](#input-default-toc) + - [_PowerShell script invocation on Windows_](#PowerShell-script-invocation-on-Windows-toc) + - [_New introspection tools_](#New-introspection-tools-toc) + - [_Breaking changes_](#Breaking-changes-toc) + - [_`++` operator_](#++-operator-toc) + - [_Stricter command signature parsing_](#Stricter-command-signature-parsing-toc) + - [_`group-by`_](#group-by-toc) + - [_`timeit`_](#timeit-toc) + - [_`sys cpu`_](#sys-cpu-toc) + - [_`from csv` and `from tsv`_](#from-csv-and-from-tsv-toc) + - [_`std/iter scan`_](#std/iter-scan-toc) + - [_Completion sorting_](#Completion-sorting-toc) + - [_Import module naming_](#Import-module-naming-toc) + - [_`table` formatting and the `display_output` hook_](#table-formatting-and-the-display_output-hook-toc) + - [_`du` flag changes_](#du-flag-changes-toc) + - [_Code specific environment variables updated during `source`_](#Code-specific-environment-variables-updated-during-source-toc) + - [_Deprecations_](#Deprecations-toc) + - [_`split-by`_](#split-by-toc) + - [_`date to-record` and `date to-table`_](#date-to-record-and-date-to-table-toc) + - [_`do --ignore-shell-errors` and `--ignore-program-errors`_](#do-ignore-shell-errors-and-ignore-program-errors-toc) + - [_Removals_](#Removals-toc) + - [_`NU_DISABLE_IR`_](#NU_DISABLE_IR-toc) + - [_Bug fixes and other changes_](#Bug-fixes-and-other-changes-toc) + - [_`ls`_](#ls-toc) + - [_`SHLVL`_](#SHLVL-toc) + - [_`from` commands_](#from-commands-toc) + - [_Completions on custom commands_](#Completions-on-custom-commands-toc) + - [_`seq char`_](#seq-char-toc) + - [_`http` multipart_](#http-multipart-toc) + - [_`scope variables`_](#scope-variables-toc) + - [_`help` system_](#help-system-toc) +- [_Notes for plugin developers_](#Notes-for-plugin-developers-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-content)] -## Simplified Startup Configuration +## Simplified Startup Configuration [[toc](#table-of-content)] With [#14249](https://github.com/nushell/nushell/pull/14249), Nushell now always loads its internal `default_env.nu` before the user `env.nu` is loaded, then loads the internal `default_config.nu` before the user's `config.nu` is loaded. This allows for a simpler user-configuration experience. Details are in [this blog entry](https://www.nushell.sh/blog/2024-12-04-configuration_preview.html) along with an updated [Configuration Chapter](https://www.nushell.sh/book/configuration.html) which should go live sometime today. -### Related Startup Config Changes +### Related Startup Config Changes [[toc](#table-of-content)] - [#14345](https://github.com/nushell/nushell/pull/14345): Hooks fields are non-optional - [#14341](https://github.com/nushell/nushell/pull/14341): Hooks now default to an empty value of the proper type (e.g., `[]` or `{}`) when not otherwise specified. This means that you can always safely append or merge a new hook without first needing to check if it was a valid list/record. @@ -42,7 +89,7 @@ With [#14249](https://github.com/nushell/nushell/pull/14249), Nushell now always - [#14566](https://github.com/nushell/nushell/pull/14566): `ENV_CONVERSIONS` is now an empty record by default. The `PATH`/`Path` conversions are handled internally. - [#14579](https://github.com/nushell/nushell/pull/14579): More defaults are set in Rust. Also sets a default, empty `TRANSIENT_PROMPT_COMMAND_RIGHT` and `TRANSIENT_PROMPT_MULTILINE_INDICATOR`. -### Breaking Startup Config Changes +### Breaking Startup Config Changes [[toc](#table-of-content)] There may be (hopefully) minor breaking changes due to the startup configuration handling. Known possible issues include: @@ -63,11 +110,11 @@ There may be (hopefully) minor breaking changes due to the startup configuration for the list of available *containers* --> -# Changes +# Changes [[toc](#table-of-content)] -## Additions +## Additions [[toc](#table-of-content)] -### `path self` +### `path self` [[toc](#table-of-content)] Thanks to [@Bahex](https://github.com/Bahex) in [#14303](https://github.com/nushell/nushell/pull/14303), this release adds the `path self` command. `path self` is a parse-time only command for getting the absolute path of the source file containing it, or any file relative to the source file. @@ -76,7 +123,7 @@ const this_file = path self const this_directory = path self . ``` -### `chunk-by` +### `chunk-by` [[toc](#table-of-content)] This release adds a new `chunk-by` command which will split a list into chunks based on a closure. The closure is applied to each element of the input list, and adjacent elements that share the same closure result value will be chunked together. This command was added in [#14410](https://github.com/nushell/nushell/pull/14410) thanks to [@cosineblast](https://github.com/cosineblast). @@ -90,7 +137,7 @@ This release adds a new `chunk-by` command which will split a list into chunks b # [[a] [b b] [c] [a a]] ``` -### `term query` +### `term query` [[toc](#table-of-content)] Thanks to [@Bahex](https://github.com/Bahex) in [#14427](https://github.com/nushell/nushell/pull/14427), this release adds the `term query` command. `term query` allows sending a query to your terminal emulator and reading the reply. @@ -106,19 +153,65 @@ term query $'(ansi osc)10;?(ansi st)' --prefix $'(ansi osc)10;' --terminator (an term query $'(ansi osc)52;c;?(ansi st)' --prefix $'(ansi osc)52;c;' --terminator (ansi st) ``` -### `utouch` +### `merge deep` [[toc](#table-of-content)] + +To merge nested record structures we now have `merge deep` as a subcommand of `merge` which only operates on the flat structure of tables. + +Here you can see how it is used to update a record with fields from a given record, by either adding the fields or replacing those leaf nodes that share a common cellpath. +```nushell +{a: {foo: 123 bar: "overwrite me"}, b: [1, 2, 3]} | merge deep {a: {bar: 456, baz: 789}, b: [4, 5, 6]} +# => ╭───┬───────────────╮ +# => │ │ ╭─────┬─────╮ │ +# => │ a │ │ foo │ 123 │ │ +# => │ │ │ bar │ 456 │ │ +# => │ │ │ baz │ 789 │ │ +# => │ │ ╰─────┴─────╯ │ +# => │ │ ╭───┬───╮ │ +# => │ b │ │ 0 │ 4 │ │ +# => │ │ │ 1 │ 5 │ │ +# => │ │ │ 2 │ 6 │ │ +# => │ │ ╰───┴───╯ │ +# => ╰───┴───────────────╯ +``` + +While the record entries get updated based on the path, by default lists at a given path are updated by replacement. + +`merge deep` also has different strategies for merging inner lists and tables. For example, you can use the `append` strategy to _merge_ the inner `b` list instead of overwriting it. + +```nushell +{a: {foo: 123 bar: "overwrite me"}, b: [1, 2, 3]} | merge deep --strategy=append {a: {bar: 456, baz: 789}, b: [4, 5, 6]} +# => ╭───┬───────────────╮ +# => │ │ ╭─────┬─────╮ │ +# => │ a │ │ foo │ 123 │ │ +# => │ │ │ bar │ 456 │ │ +# => │ │ │ baz │ 789 │ │ +# => │ │ ╰─────┴─────╯ │ +# => │ │ ╭───┬───╮ │ +# => │ b │ │ 0 │ 1 │ │ +# => │ │ │ 1 │ 2 │ │ +# => │ │ │ 2 │ 3 │ │ +# => │ │ │ 3 │ 4 │ │ +# => │ │ │ 4 │ 5 │ │ +# => │ │ │ 5 │ 6 │ │ +# => │ │ ╰───┴───╯ │ +# => ╰───┴───────────────╯ +``` + +This command is the work of a productive collaboration by [@132ikl](https://github.com/132ikl) and [@Bahex](https://github.com/Bahex). + +### `utouch` [[toc](#table-of-content)] This release adds the new `utouch` command, utilizing uutils/coreutils! In addition to all the flags of `touch`, `utouch` also has a `--timestamp` and `--date` flag to specify the timestamp to use. Eventually, the `utouch` command will replace the `touch` command. -### WASM support +### WASM support [[toc](#table-of-content)] Nushell used to have WASM support a while back, but at some point became incompatible with WASM. Thanks to the amazing work of [@cptpiepmatz](https://github.com/cptpiepmatz) in [#14418](https://github.com/nushell/nushell/pull/14418), Nushell can now be compiled to WASM again! In order to do so, certain (cargo) features have to be disabled meaning certain commands (like filesystem commands) will not be available. -### `sys net` columns +### `sys net` columns [[toc](#table-of-content)] Thanks to [@rfaulhaber](https://github.com/rfaulhaber) in [#14389](https://github.com/nushell/nushell/pull/14389), the `sys net` command now has two additional columns. One is the `mac` column which lists mac address. The other is the `ip` column which lists the address(es) for each network interface. -### Raw string pattern matching +### Raw string pattern matching [[toc](#table-of-content)] With this release, raw strings can now be used as match patterns thanks to [@sgvictorino](https://github.com/sgvictorino) in [#14573](https://github.com/nushell/nushell/pull/14573). @@ -129,25 +222,45 @@ match 'foo' { } ``` -### Duration/Date Arithmetic +### Duration/Date Arithmetic [[toc](#table-of-content)] With [#14295](https://github.com/nushell/nushell/pull/14295), dates can now be added to durations. Previously only durations could be added to dates. -### `explore` keybinds +### `explore` keybinds [[toc](#table-of-content)] In [#14468](https://github.com/nushell/nushell/pull/14468) thanks to [@paulie4](https://github.com/paulie4), more default keybindings were added to `explore` to better match `less`. -### Version in Startup banner +### Version in Startup banner [[toc](#table-of-content)] With [#14625](https://github.com/nushell/nushell/pull/14625), the Nushell version now displays at startup in the banner. -### `input --default` +### `input --default` [[toc](#table-of-content)] Thanks to [@WindSoilder](https://github.com/WindSoilder) in [#14374](https://github.com/nushell/nushell/pull/14374), the `input` command now has a `--default` parameter to set a default value when none is provided in the input. -## Breaking changes +### PowerShell script invocation on Windows [[toc](#table-of-content)] + +With [#14379](https://github.com/nushell/nushell/pull/14379) by [@fdncred](https://github.com/fdncred) we now launch PowerShell scripts with a `.ps1` extension directly through `powershell.exe`. This behavior follows the same logic we offer for scripts launched by `cmd.exe`. -### `++` operator +### New introspection tools [[toc](#table-of-content)] + +[@fdncred](https://github.com/fdncred) added a series of new tools permitting you to inspect internals of Nushell's engine for better understanding or debugging. We hope you can put them to good use to drill down into bugs or to learn more how the Nushell engine understands a piece of code or represents your current state. As they refer to the engine internals we still want to actively evolve their output or behavior may change as we continue development. So don't depend on them in scripts but feel free to use them to diagnose issues or learn about the behavior of the current version. + +#### [`view source` now supports internal IDs](https://github.com/nushell/nushell/pull/14609) +To access the content of closures or other code `view source` can now accept an integer ID which represents the internal `BlockId` to access the code stored there. This is useful whenever our output provided you with ``. For closures stored in a variable you can still access it directly via `view source`. + +#### [`view blocks`](https://github.com/nushell/nushell/pull/14610) +This new commands lists the raw code blocks as stored in the engine after parsing including `block_id`, source code, and spans. + +#### [`ast --flatten`](https://github.com/nushell/nushell/pull/14400) +The `ast` command can now also output the flattened and simplified representation of the AST used by syntax highlighting and some of the completion logic. This is accessible through the `--flatten` flag. + +#### [`config flatten`](https://github.com/nushell/nushell/pull/14621) +To see the whole configuration in a simplified representation, especially to spot differences between different user configurations, `config flatten` provides a simplified view that is not nested like `$env.config`. Note that this output is not directly compatible with the config record and may not have the correct types. + +## Breaking changes [[toc](#table-of-content)] + +### `++` operator [[toc](#table-of-content)] The `++` operator previously performed both appending and concatenation. @@ -188,7 +301,7 @@ $list = $list | append 4 TODO: waiting on #14429 --> -### Stricter command signature parsing +### Stricter command signature parsing [[toc](#table-of-content)] #### Input/output types @@ -231,7 +344,7 @@ def foo [ bar: ] {} def foo [ bar = ] {} ``` -### `group-by` +### `group-by` [[toc](#table-of-content)] Thanks to [@Bahex](https://github.com/Bahex) in [#14337](https://github.com/nushell/nushell/pull/14337), the `group-by` command now supports grouping by multiple criteria (henceforth referred to as a grouper). When using multiple groupers, the output is in the form of nested records. @@ -316,17 +429,17 @@ $data | group-by color category --to-table ╰───┴────────┴───────────┴───────────────────────────────────────╯ ``` -### `timeit` +### `timeit` [[toc](#table-of-content)] The `timeit` command previously had a special behavior where expressions passed as arguments would have their evaluation deferred in order to later be timed. This lead to an interesting bug ([14401](https://github.com/nushell/nushell/issues/14401)) where the expression would be evaluated twice, since the new IR evaluator eagerly evaluates arguments passed to commands. To make the deferred evaluation more explicit, the `timeit` command can now only take a closure as an argument instead of any expression or value ([#14483](https://github.com/nushell/nushell/pull/14483)). Additionally, blocks are no longer supported by `timeit`, so any changes to the environment will be isolated to inside the closure. -### `sys cpu` +### `sys cpu` [[toc](#table-of-content)] The `cpu_usage` column outputted by `sys cpu` works by sampling the CPU over a 400ms period. This wait long time is unhelpful if you are only interested in other information about the CPU like the number of cores (i.e., `sys cpu | length`). With [#14485](https://github.com/nushell/nushell/pull/14485), the `cpu_usage` column is now gated behind the `--long` flag. This way, `sys cpu` will take around 0-2ms instead of 400ms by default. -### `from csv` and `from tsv` +### `from csv` and `from tsv` [[toc](#table-of-content)] Thanks to [@Bahex](https://github.com/Bahex) in [#14399](https://github.com/nushell/nushell/pull/14399), parsing csv and tsv content with the `--flexible` flag is more flexible than before. Previously, the first row of csv or tsv content would determine the number of columns, and rows containing more values than the determined columns would be truncated, losing those extra values. @@ -356,7 +469,7 @@ value ╰─#─┴─column0─┴─column1─┴─column2─╯ ``` -### `std/iter scan` +### `std/iter scan` [[toc](#table-of-content)] Thanks to [@Bahex](https://github.com/Bahex) in [#14596](https://github.com/nushell/nushell/pull/14596), the order of `scan`'s closure's parameters are flipped to be consistent with `reduce`. The closure now also receives the accumulator value as pipeline input as well. @@ -368,7 +481,7 @@ The closure now also receives the accumulator value as pipeline input as well. > [a b c d] | iter scan "" {|it| append $it | str join} -n ``` -### Completion sorting +### Completion sorting [[toc](#table-of-content)] In [#14424](https://github.com/nushell/nushell/pull/14424), some changes were made to completion sorting. If you have a custom completer that returns a record with an `options` field, then this may affect you. @@ -376,78 +489,113 @@ In [#14424](https://github.com/nushell/nushell/pull/14424), some changes were ma - If `options` contains `sort: false`, completions will not be sorted. - If `options` does not have a `sort` column, then that will be treated as `sort: true`. Previously, this would have been treated as `sort: false`. -### Import module naming +### Import module naming [[toc](#table-of-content)] Thanks to [@sgvictorino](https://github.com/sgvictorino) in [#14353](https://github.com/nushell/nushell/pull/14353), modules with special characters in their name will be normalized by converting these special characters to underscores (`_`). Previously, it was not possible to use these modules after importing them. -### `du` flag changes +### `table` formatting and the `display_output` hook [[toc](#table-of-content)] +With [#14361](https://github.com/nushell/nushell/pull/14361) by [@132ikl](https://github.com/132ikl) our machinery to format structured now follows a simpler logic. +If a `$env.config.hooks.display_output` hook is set, it is fully responsible for formatting the structured data, e.g. by invoking `table` with custom settings. Only if it is not set by `null` will `table` without arguments be run by default. +Previously the output logic would invoke `table` regardless on top of the formatting by your `display_output` hook. This avoids some spurious formatting attempts. + +### `du` flag changes [[toc](#table-of-content)] Thanks to [@WindSoilder](https://github.com/WindSoilder) in [#14407](https://github.com/nushell/nushell/pull/14407), the `du` command shows a more condensed output by default. The `files` and (recursive) `directories` are not shown by default. Use `du --long (-l)` to show these columns. The `--all (-a)` switch has been removed -- Files and directories will both be shown with `--long (-l)`. -## Deprecations +### Code specific environment variables updated during `source` [[toc](#table-of-content)] +The variables `$env.CURRENT_FILE` and `$env.FILE_PWD` had already been set to the respective file paths whenever a script was executed or module loaded. Similarly `$env.PROCESS_PATH` is set for the execution of a script or module but unset when a module is simply `use`d. + +With [#14486](https://github.com/nushell/nushell/pull/14486) by [@fdncred](https://github.com/fdncred) `$env.CURRENT_FILE` and `$env.FILE_PWD` will now also be updated when a particular file is included via `source`. Similarly `$env.PROCESS_PATH` will be unset. + +```nushell +# test_source.nu +print $"$env.CURRENT_FILE = ($env.CURRENT_FILE?)" +print $"$env.FILE_PWD = ($env.FILE_PWD?)" +print $"$env.PROCESS_PATH = ($env.PROCESS_PATH?)" +``` +``` nushell +source test_source.nu +# => $env.CURRENT_FILE = /Users/fdncred/src/nushell/test_source.nu +# => $env.FILE_PWD = /Users/fdncred/src/nushell +# => $env.PROCESS_PATH = +``` -### `split-by` +## Deprecations [[toc](#table-of-content)] + +### `split-by` [[toc](#table-of-content)] In [#14019](https://github.com/nushell/nushell/pull/14019), the `split-by` command was deprecated. Instead, please use `group-by` with multiple groupers [as shown above](#group-by-toc). -### `date to-record` and `date to-table` +### `date to-record` and `date to-table` [[toc](#table-of-content)] In [#14319](https://github.com/nushell/nushell/pull/14319): - `date to-record` has been deprecated and will be removed in a future release. Please use `into record` in its place. - `date to-table` has been deprecated and will be removed in a future release. Please use `into record | transpose | transpose -r` in its place. -### `do --ignore-shell-errors` and `--ignore-program-errors` +### `do --ignore-shell-errors` and `--ignore-program-errors` [[toc](#table-of-content)] Thanks to [@WindSoilder](https://github.com/WindSoilder) in [#14385](https://github.com/nushell/nushell/pull/14385), `--ignore-shell-errors` and `--ignore-program-errors` for the `do` command have been deprecated. Use `--ignore-errors (-i)` instead. -## Removals +## Removals [[toc](#table-of-content)] -### `NU_DISABLE_IR` +### `NU_DISABLE_IR` [[toc](#table-of-content)] With [#14293](https://github.com/nushell/nushell/pull/14293), the `NU_DISABLE_IR` environment variable is no longer used. Nushell will now always use the new IR evaluator instead of previous AST based evaluator. -## Bug fixes and other changes +## Bug fixes and other changes [[toc](#table-of-content)] -### `ls` +### `ls` [[toc](#table-of-content)] The `ls` command used to have deterministic output order, but this was broken in 0.94.0. Thanks to [@userwiths](https://github.com/userwiths) in [#13875](https://github.com/nushell/nushell/pull/13875), `ls` output will now be sorted by the `name` column. Future changes to the order of `ls` will be a breaking change. Additionally, thanks to [@sgvictorino](https://github.com/sgvictorino) in [#14310](https://github.com/nushell/nushell/pull/14310), `ls` will now error if there are insufficient permissions to list the current working directory. Previously, `ls` would return empty output. -### `SHLVL` +### `SHLVL` [[toc](#table-of-content)] When starting Nushell as an interactive REPL, Nushell will now increment the `SHLVL` environment variable. This change was made in [#14404](https://github.com/nushell/nushell/pull/14404) thanks to [@rikukiix](https://github.com/rikukiix). (Note that it is a known issue that `SHLVL` is still incremented on `exec`.) -### `from` commands +### `from` commands [[toc](#table-of-content)] After [#14602](https://github.com/nushell/nushell/pull/14602), the `from` commands now remove the `content_type` pipeline metadata thanks to [@Bahex](https://github.com/Bahex). -### Completions on custom commands +### Completions on custom commands [[toc](#table-of-content)] Thanks to [@RobbingDaHood](https://github.com/RobbingDaHood) in [#14481](https://github.com/nushell/nushell/pull/14481), file completions are now triggered once again on custom commands after the first parameter. This was a regression due to the 0.99.x release. -### `seq char` +### `seq char` [[toc](#table-of-content)] Thanks to [@anomius](https://github.com/anomius) in [#14261](https://github.com/nushell/nushell/pull/14261), `seq char` now works on any ASCII characters instead of only alphabetical ASCII characters. -### `http` multipart +### `http` multipart [[toc](#table-of-content)] The `http` commands now use CRLF when joining headers to match the HTTP specification. This change was made in [#14417](https://github.com/nushell/nushell/pull/14417) thanks to [@Beinsezii](https://github.com/Beinsezii). -### `scope variables` +### `scope variables` [[toc](#table-of-content)] `scope variables` now lists constant variables in scope (when using the IR evaluator) thanks to [@sgvictorino](https://github.com/sgvictorino in [#14577](https://github.com/nushell/nushell/pull/14577). -# Notes for plugin developers +### `help` system [[toc](#table-of-content)] + +[@132ikl](https://github.com/132ikl) fixed a long standing issue in the help system, where commands with the same name but different module paths clashed. Now the `help ` correctly refers to the name of a command like it is visible in the scope through the definitions or `use` imports thanks to [#14490](https://github.com/nushell/nushell/pull/14490). + +# Notes for plugin developers [[toc](#table-of-content)] + +As part of cleaning up we removed several enum variants actually unused in the core codebase: -# Hall of fame +- `Type::ListStream` as the engine represents `PipelineData::ListStream` more consistently as `Type::List` +- `FlatShape::And`/`FlatShape::Or` as they are never populated. + +Furthermore `Value::Filesize` now stores its value in its own `Filesize` type instead of a bare `i64` to avoid confusion about the particular unit. + +# Hall of fame [[toc](#table-of-content)] Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! :pray: | author | title | link | | -------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------- | | [@132ikl](https://github.com/132ikl) | Change tests which may invoke externals to use non-conflicting names | [#14516](https://github.com/nushell/nushell/pull/14516) | +| [@132ikl](https://github.com/132ikl) | Make `glob` stream | [#14495](https://github.com/nushell/nushell/pull/14495) | | [@Bahex](https://github.com/Bahex) | docs(reduce): add example demonstrating accumulator as pipeline input | [#14593](https://github.com/nushell/nushell/pull/14593) | | [@Bahex](https://github.com/Bahex) | test(path self): Add tests | [#14607](https://github.com/nushell/nushell/pull/14607) | | [@DziubaMaksym](https://github.com/DziubaMaksym) | fix: sample_config | [#14465](https://github.com/nushell/nushell/pull/14465) | @@ -463,22 +611,18 @@ Thanks to all the contributors below for helping us solve issues, improve docume | [@sgvictorino](https://github.com/sgvictorino) | return accurate type errors from blocks/expressions in type unions | [#14420](https://github.com/nushell/nushell/pull/14420) | | [@zhiburt](https://github.com/zhiburt) | nu-table/ Do footer_inheritance by accounting for rows rather then a f… | [#14380](https://github.com/nushell/nushell/pull/14380) | -# Full changelog +# Full changelog [[toc](#table-of-content)] | author | title | link | | ------ | ----- | ---- | - - - - - - - +|[@132ikl](https://github.com/132ikl)|Rely on `display_output` hook for formatting values from evaluations|[#14361](https://github.com/nushell/nushell/pull/14361)| +|[@132ikl](https://github.com/132ikl)|Make length only operate on supported input types|[#14475](https://github.com/nushell/nushell/pull/14475)| +|[@132ikl](https://github.com/132ikl)|Add label rendering to try/catch rendered errors|[#14477](https://github.com/nushell/nushell/pull/14477)| +|[@132ikl](https://github.com/132ikl)|Change `help commands` to use name from scope instead of the name from the declaration|[#14490](https://github.com/nushell/nushell/pull/14490)| +|[@132ikl](https://github.com/132ikl)|Make `glob` stream|[#14495](https://github.com/nushell/nushell/pull/14495)| |[@132ikl](https://github.com/132ikl)|Change tests which may invoke externals to use non-conflicting names|[#14516](https://github.com/nushell/nushell/pull/14516)| - - - - +|[@132ikl](https://github.com/132ikl)|Add `merge deep` command|[#14525](https://github.com/nushell/nushell/pull/14525)| +|[@132ikl](https://github.com/132ikl)|Remove grid icons deprecation warning|[#14526](https://github.com/nushell/nushell/pull/14526)| |[@Bahex](https://github.com/Bahex)|Add `path self` command for getting absolute paths to files at parse time|[#14303](https://github.com/nushell/nushell/pull/14303)| |[@Bahex](https://github.com/Bahex)|add multiple grouper support to `group-by`|[#14337](https://github.com/nushell/nushell/pull/14337)| |[@Bahex](https://github.com/Bahex)|fix(group-by): re #14337 name collision prevention|[#14360](https://github.com/nushell/nushell/pull/14360)| @@ -496,9 +640,7 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@DziubaMaksym](https://github.com/DziubaMaksym)|fix: sample_config|[#14465](https://github.com/nushell/nushell/pull/14465)| |[@IanManske](https://github.com/IanManske)|Deprecate `split-by` command|[#14019](https://github.com/nushell/nushell/pull/14019)| |[@IanManske](https://github.com/IanManske)|Change append operator to concatenation operator|[#14344](https://github.com/nushell/nushell/pull/14344)| - - - +|[@IanManske](https://github.com/IanManske)|Make `Hooks` fields non-optional to match the new config defaults|[#14345](https://github.com/nushell/nushell/pull/14345)| |[@IanManske](https://github.com/IanManske)|Add `Filesize` type|[#14369](https://github.com/nushell/nushell/pull/14369)| |[@IanManske](https://github.com/IanManske)|Remove `ListStream` type|[#14425](https://github.com/nushell/nushell/pull/14425)| |[@IanManske](https://github.com/IanManske)|Make `timeit` take only closures as an argument|[#14483](https://github.com/nushell/nushell/pull/14483)| @@ -579,35 +721,25 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@cptpiepmatz](https://github.com/cptpiepmatz)|Fix `commands::network::http::*::*_timeout` tests on non-english system|[#14640](https://github.com/nushell/nushell/pull/14640)| |[@devyn](https://github.com/devyn)|Remove the `NU_DISABLE_IR` option|[#14293](https://github.com/nushell/nushell/pull/14293)| |[@devyn](https://github.com/devyn)|Turn compile errors into fatal errors|[#14388](https://github.com/nushell/nushell/pull/14388)| - - - - +|[@fdncred](https://github.com/fdncred)|allow nuscripts to be run again on windows with assoc/ftype|[#14318](https://github.com/nushell/nushell/pull/14318)| +|[@fdncred](https://github.com/fdncred)|fix ansi bleed over on right prompt|[#14357](https://github.com/nushell/nushell/pull/14357)| |[@fdncred](https://github.com/fdncred)|update uutils crates|[#14371](https://github.com/nushell/nushell/pull/14371)| - - - - - +|[@fdncred](https://github.com/fdncred)|allow ps1 files to be executed without pwsh/powershell -c file.ps1|[#14379](https://github.com/nushell/nushell/pull/14379)| +|[@fdncred](https://github.com/fdncred)|add function to make env vars case-insensitive|[#14390](https://github.com/nushell/nushell/pull/14390)| +|[@fdncred](https://github.com/fdncred)|add new --flatten parameter to the ast command|[#14400](https://github.com/nushell/nushell/pull/14400)| |[@fdncred](https://github.com/fdncred)|remove `terminal_size` crate everywhere it makes sense|[#14423](https://github.com/nushell/nushell/pull/14423)| |[@fdncred](https://github.com/fdncred)|update rust toolchain to rust 1.81.0|[#14473](https://github.com/nushell/nushell/pull/14473)| - - - - - +|[@fdncred](https://github.com/fdncred)|Add environment variables for sourced files|[#14486](https://github.com/nushell/nushell/pull/14486)| +|[@fdncred](https://github.com/fdncred)|allow `select` to stream more|[#14492](https://github.com/nushell/nushell/pull/14492)| +|[@fdncred](https://github.com/fdncred)|add file column to `scope modules` output|[#14524](https://github.com/nushell/nushell/pull/14524)| |[@fdncred](https://github.com/fdncred)|update to reedline 9eb3c2d|[#14541](https://github.com/nushell/nushell/pull/14541)| - - - +|[@fdncred](https://github.com/fdncred)|fix 64-bit hex number parsing|[#14571](https://github.com/nushell/nushell/pull/14571)| |[@fdncred](https://github.com/fdncred)|tweak polars join for better cross joins|[#14586](https://github.com/nushell/nushell/pull/14586)| - - - - - - - +|[@fdncred](https://github.com/fdncred)|allow `view source` to take `int` as a parameter|[#14609](https://github.com/nushell/nushell/pull/14609)| +|[@fdncred](https://github.com/fdncred)|add `view blocks` command|[#14610](https://github.com/nushell/nushell/pull/14610)| +|[@fdncred](https://github.com/fdncred)|add `config flatten` command|[#14621](https://github.com/nushell/nushell/pull/14621)| +|[@fdncred](https://github.com/fdncred)|better error handling for `view source`|[#14624](https://github.com/nushell/nushell/pull/14624)| +|[@fdncred](https://github.com/fdncred)|lookup closures/blockids and get content in `config flatten`|[#14635](https://github.com/nushell/nushell/pull/14635)| |[@fdncred](https://github.com/fdncred)|tweaks to `config flatten`|[#14639](https://github.com/nushell/nushell/pull/14639)| |[@hustcer](https://github.com/hustcer)|Bump to dev version 0.100.1|[#14328](https://github.com/nushell/nushell/pull/14328)| |[@hustcer](https://github.com/hustcer)|Fix the document CI error for `polars profile` command|[#14642](https://github.com/nushell/nushell/pull/14642)| @@ -641,15 +773,3 @@ Thanks to all the contributors below for helping us solve issues, improve docume |[@ysthakur](https://github.com/ysthakur)|Avoid recomputing fuzzy match scores|[#13700](https://github.com/nushell/nushell/pull/13700)| |[@ysthakur](https://github.com/ysthakur)|fix: Respect sort in custom completions|[#14424](https://github.com/nushell/nushell/pull/14424)| |[@zhiburt](https://github.com/zhiburt)|nu-table/ Do footer_inheritance by accounting for rows rather then a f…|[#14380](https://github.com/nushell/nushell/pull/14380)| - -