Nushell
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub

Nushell 0.89.0

Nushell, or Nu for short, is a new shell that takes a modern, structured approach to your command line. It works seamlessly with the data from your filesystem, operating system, and a growing number of file formats to make it easy to build powerful command line pipelines.

Today, we're releasing version 0.89.0 of Nu. This release adds spreading of argument lists to command calls, better editor integration, and many bugfixes.

Where to get it

Nu 0.89.0 is available as pre-built binaries or from crates.io. If you have Rust installed you can install it using cargo install nu.

Note

The optional dataframe functionality is available by cargo install nu --features=dataframe.

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_<plugin name>.

Table of content

  • Nushell 0.89.0
  • Where to get it
  • Table of content
  • Themes of this release / New features [toc]
    • Removal of directory module auto-exports
    • Spread operator for commands
    • Editor Improvements
    • Deprecation of --flag: bool
    • Our set of commands is evolving [toc]
      • New commands [toc]
        • ulimit for Unix-based systems
  • Breaking changes [toc]
  • Full changelog [toc]
    • Nushell
    • Documentation
    • Nu_Scripts
    • Reedline
  • Breaking changes
  • Full changelog

Themes of this release / New features [toc]

(Update 19.01.2024, Breaking change!) Removal of directory module auto-exports [toc]

Release note gremlin hid this note from us and we forgot to add it. We're sorry!

@amtoine in #11157 removed the directory module autoexport of all .nu files inside the directory. This removes the ability to "dump .nu files into a directory" and have them automatically exported. Previously, if you had the following file structure:

spam
├── bar.nu
├── baz.nu
├── foo.nu
└── mod.nu

all you had to do was to call use spam and the .nu files would be added as submodules of spam. Now, to achieve the same effect, you would need to put

export module foo.nu
export module bar.nu
export module baz.nu

to the mod.nu.

This change adds one manual step you need to perform to export submodules from modules, but it gives you more control and confidence. In the previous system, .nu files would be auto-exported even if you didn't want to! For example, to prevent baz.nu from being auto-exported, you would need to put it inside a new directory that doesn't contain mod.nu (and thus is not considered a Nushell module), like this:

spam
├── bar.nu
├── foo.nu
└── utils
    └── baz.nu

We felt like this workaround was quite cumbersome, and the implicit behavior wasn't in the disciplined spirit of Nushell. Rather than having this auto-exporting as an implicit feature of use, we're currently exploring ways to allow doing it explicitly, for example with a separate command.

Spread operator for commands

In #11289, @ysthakur implemented a spread operator for calling commands (previously, it could only be used in list and record literals).

Now, if you have a command with a rest parameter:

def foo [ ...args ] { $args | to nuon }

You can spread arguments to it like this:

> let x = [foo bar baz]
> foo ...[1 2] ...$x
[1, 2, foo, bar, baz]

See the docs for more information.

Editor Improvements

Thanks to @AucaCoyan's #11284 and #11320, Nushell's VSCode extension and builtin LSP server now show the same command's message on hover as abtained with help in Nushell.

Deprecation of --flag: bool

In the last release, we allowed passing flags dynamically:

def spam [--foo] {
    print $foo
}

let value = false
spam --foo=$value
# prints false

However, it is easy to confuse with --foo: bool. To disambiguate, we are deprecating the setting optional parameters with boolean type (--flag: bool). Doing so will trigger a warning:

def spam [--foo: bool] { $foo }
Error:   × Deprecated: --flag: bool
   ╭─[entry #3:1:1]
 1 │ def spam [--foo: bool] { $foo }
   ·                  ──┬─
   ·                    ╰── `--flag: bool` is deprecated and will be removed in 0.90. Please use `--flag` instead, more info: https://www.nushell.sh/book/custom_commands.html
   ╰────

Our set of commands is evolving [toc]

As usual, new release rhyms with changes to commands!

New commands [toc]

ulimit for Unix-based systems

The new ulimit command added by @nibon7 can now be used on Unix-based systems for setting or checking the resource limits, such as the stack size or virtual memory size, for the current user.

To list the current limits:

ulimit -a

Setting the limits is done via flags available in help ulimit.

Breaking changes [toc]

  • #11131 remove std clip
  • #11414 Lock out new direct construction of Record
  • #11367 Remove Expr::MatchPattern
  • #11355 Rename extra's format to format pattern
  • #11356 Remove Value::MatchPattern
  • #11313 Bubble up errors passed to complete
  • #11157 disable directory submodule auto export

Full changelog [toc]

Nushell

  • amtoine created
    • remove std clip
    • improve completions of use and overlay use
    • disable directory submodule auto export
  • abusch created
    • fix: closure captures can also be constants
  • WindSoilder created
    • update reedline version to latest main
    • Deprecate --flag: bool in custom command
    • enable flag value type checking
    • Fix piping output logic
  • NotLebedev created
    • Xml errors fix
  • nibon7 created
    • Bump terminal_size to 0.3
    • Fix cross building for target x86_64-pc-windows-gnu on linux
    • Bump sysinfo from 0.29 to 0.30
    • Replace winapi with windows
    • Don't panic when http_client fails
    • Don't create a thread if stderr_stream is None
    • Fix an infinite loop if the input stream and output stream are the same
    • Bump windows from 0.48.0 to 0.52.0
    • Fix build for BSDs
    • Allow filesize type as a valid limit value
    • Allow int type as a valid limit value
    • Add ulimit command
  • yukitomoda created
    • Refactor tests (using cococo instead of ^echo)
    • Fix the test which fails on windows
    • Fix rm for symlinks pointing to directory on windows (issue #11461)
  • hustcer created
    • Try to fix riscv64 building by using ubuntu-latest
    • Downgrade openssl-src to fix riscv64 build target, close #11345
  • rsteube created
    • Revert "Return external file completions if not empty (#10898)"
  • fdncred created
    • bump rust toolchain to 1.73.0
    • Revert "Bump reedline development version"
    • add special emoji handling for debug --raw
    • Revert "Only run $env.PROMPT_COMMAND once per prompt"
    • update reedline to latest + include PR 675 for testing
  • ysthakur created
    • Allow spreading arguments to commands
    • More specific errors for missing values in records
    • Only run $env.PROMPT_COMMAND once per prompt (copy of #10986)
    • Don't redraw prompt when transient prompt disabled
  • cyradotpink created
    • Allow http commands' automatic redirect-following to be disabled
  • SebastianIonel created
    • Fix the bug for "bytes remove --end" .
  • IanManske created
    • Remove unnecessary replace_in_variable
    • Simplify SIGQUIT handling
    • Make Call::get_flag_expr return &Expression instead of owned value
    • Remove Expr::MatchPattern
    • Refactor group-by with closure grouper
    • Remove Value::MatchPattern
    • Satisfy clippy lint in benchmark
  • sholderbach created
    • Simplify the feature gates for stor commands
    • Make polars deps optional for cargo test --all
    • Lock out new direct construction of Record
    • Check for clean repo after tests
    • Bump reedline development version
    • Fix sandboxing of redirection tests
    • Bump fancy-regex to single 0.12.0 version
    • Construct Records only through checked helpers
    • Expand the workspace members in Cargo.toml
    • Properly update to the reedline repo patch
    • Bump version to 0.88.2
    • Bump version to 0.88.1
    • Revert lock file changes due to openssl build fail
    • Bump version for 0.88.0 release
  • lavafroth created
    • fix: prevent greedy matching of directory names
  • AucaCoyan created
    • 📝 Update str trim CLI help doc
    • ✨ Make hover equal to help command
    • ♻️ Match --ide-hover with help command
  • hardfau1t created
    • fix(cd): on android/termux fails to cd into /sdcard
  • 0323pin created
    • Fix build on NetBSD
  • stormasm created
    • nu-cli repl get_command_finished_marker() does not need to be pub
  • KAAtheWiseGit created
    • Rename extra's format to format pattern
    • Bubble up errors passed to complete
    • Add format meta command
    • Replace bash with POSIX sh in tests
  • crides created
    • fix shell integration markers
  • CAD97 created
    • Only run $env.PROMPT_COMMAND once per prompt
  • Hofer-Julian created
    • Move history into their own module
    • Move stor commands to category Database
  • ayax79 created
    • Polars Struct support without unsafe blocks
  • drbrain created
    • Enforce required, optional, and rest positional arguments start with an uppercase and end with a period.
  • AntoineSebert created
    • fix-open-is-ambiguous
  • sophiajt created
    • bump reedline dep to 0.27

Documentation

  • amtoine created
    • mark feature-gated commands more clearly
    • logo contest announcement
    • Release notes for 0.88.0
  • TWSiO created
    • Adding warning to nu_plugin_formats commands
  • yukitomoda created
    • JA update installation.md
    • JA update shells_in_shells.md
    • fix a description of usage scenario
    • Update shells_in_shells.md
    • update the list of commands which are interpreted by CMD
  • hustcer created
    • Upgrade Vuepress, some Vuepress plugins and shiki syntax highlighter
    • Refresh command docs for Nu v0.88
  • aserowy created
    • external completer: fixed cookbook example to exchange the first span entry only
  • YukiOnodera created
    • I've revised the Japanese translation
  • zolodev created
    • Update aliases adding new section
  • ysthakur created
    • Add info on spread operator in commands for 0.89 release notes
    • Add information on spread operator
  • frogshead created
    • fix typo
  • Trent-Fellbootman created
    • Update types_of_data.md
    • Update thinking_in_nu.md
  • WindSoilder created
    • add information about switches
  • app/github-actions created
    • Compressed Images
  • MediosZ created
    • Sync zh-CN shells_in_shells.
  • braddunbar created
    • Typo in history menu section
  • IndigoLily created
    • Fix various spelling/grammar issues in release notes for 0.88.0
  • Tamnac created
    • Add time command to nushell_map.md
  • mb21 created
    • Extend globbing section in moving_around.md
  • RGBCube created
    • Update background_task.md

Nu_Scripts

  • fj0r created
    • comma: upgrade template
    • kubernetes to docker-compose
    • comma test runner
    • merge container-inspect into container-process-list
    • comma: support filter, watch, poll
    • new module comma and some updates
  • bobhy created
    • Show activated python VE at beginning of prompt.
  • AucaCoyan created
    • 🐛 fix (default) and (installed) on rustup completions
    • 🐛 rename yarn for yarn-v4 and add run cmpl
    • ✨ code completions
    • ✨ add completion to gh pr checkout <tab>
    • ✨ add more gh completions
    • ✨ Add the first layer of depth to the cmds
    • ✨ First gh completions
    • 🐛 Fix rustup use completions and modify README
  • edhowland created
    • Adds Modules/recursion : Examples of Fun with Recursive functions in Nu
  • frogshead created
    • fix broken links in modules readme
    • fix broken link on README.md
  • robbienohra created
    • fix: missing regex flag
  • adrian5 created
    • Add tokyo-moon theme variant
  • kjelly created
    • fix git-v2 and kubernetes
  • zyfmix created
    • Fix: nushell at 0.88.0 start and end are deprecated
  • RGBCube created
    • Rewrite and expand background task module
  • TeaDrinkingProgrammer created
    • Added updated and improved version of the conda scripts

Reedline

  • WindSoilder created
    • Try fix prompt_start_row reset to 0 when opening a file without newline in Nushell
    • fix clippy, add typo dict
  • sholderbach created
    • Fix clippy from the future
    • Bump itertools to 0.12.0 from 0.10.x
    • Bump version to 0.27.1
    • Try to fix the docs.rs build
    • Bump version for 0.27 release
  • nibon7 created
    • Fix prompt_start_row reset to 0 when opening a file without newline in Nushell
  • danielsomerfield created
    • Better behaviour on resize
Edit this page on GitHub
Contributors: amtoine, ysthakur, Jakub Žádník, Ian Manske, Bruce Weirdan, Solomon, NotTheDr01ds