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)| - -