Nushell 0.71

Nushell, or Nu for short, is a new shell that takes a modern, structured approach to your commandline. 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 commandline pipelines.

Today, we're releasing version 0.71 of Nu. This release includes new operators, better consistency, improved completions, and more.

Where to get it

Nu 0.71 is available as pre-built binariesopen in new window or from crates.ioopen in new window. If you have Rust installed you can install it using cargo install nu.

If you want all the built-in goodies, such as support for dataframes and SQLite databases, you can install it via cargo install nu --features=extra.

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

Themes of this release

New ++ operator (merelymyself)

In this release, you can now use the ++ operator to append lists togetheropen in new window.

For example, you can combine two lists into a new lists made up of the both lists:

> [1, 2] ++ [3, 4]

Note: Currently, this operator cannot be used to join two tables. This functionality is still being worked on and will likely be present in the next version.

Improved consistency across commands and types

Nushell continues improve quality of the language and shell with a set of consistency improvements in this release. These include:

Right prompts can now be on the last line (nibon7)

Previously the right prompt appeared only on the same line where the user input started. Now you can choose to place the right prompt part on the last line of user inputopen in new window. This feature is not enabled by default, you can enable it using the config nu command to modify the config.nu file, just set render_right_prompt_on_last_line to true:

let-env config {
  render_right_prompt_on_last_line : true
  ...
}

Default

Default right prompt

Right prompt at bottom

Right prompt on the last line

Configuring the default value viewer via display_output hook (perbothner)

You're now able to configure a new hook, called display_outputopen in new window, which will become the default way that you view data.

Using this, you can for example, use table --expand to always see fully expanded tables.

If your terminal supports it, you can this to render a more full-featured output. For example, DomTerm could be used by setting the display_output hook to: to html --partial --no-color | domterm hcat, sending html to the terminal to be rendered when displaying values.

Updated PR Review Process

Recently, we have been fortunate to see a rise in submitted pull requests (PRs) and we are super grateful for this growing desire to improve Nushell. Unfortunately, in some cases, a well-intended PR does not match the direction Nushell is going, forcing us to close it which leads to wasted time and effort. To help focus PRs in the future, we kindly ask potential contributors to first reach out to us before making a substantial change to Nushell, especially if the change will affect user experience. We updated our contributing guideopen in new window as well as the PR template to reflect this policy. To summarize:

  1. If you want to make some change to Nushell that is more involved than simple bug-fixing, please go to Discordopen in new window or a GitHub issueopen in new window and chat with some core team members and/or other contributors about it.
  2. After getting a green light from the core team, implement the feature, open a pull request (PR) and write a full description of the change.
  3. If your PR includes any user-facing features (such as adding a flag to a command), clearly list them in the PR description.
  4. Then, core team members and other regular contributors will review the PR and suggest changes.
  5. When we all agree, the PR will be merged.
  6. If your PR includes any user-facing features, make sure the changes are also reflected in the documentationopen in new window after the PR is merged.
  7. Congratulate yourself, you just improved Nushell! 😃

We hope the new policy will help us make the PR review process smoother.

Completion actions now more familiar (dandavison)

We've also recently improved how completions work in Nushell to feel closer to how other shells work. Specifically:

  • Completion goes "as far as possible". So, the entire word if there's a unique completion, or else up to the shared prefix of possible completions.
  • Removes the quick completion behavior whereby a word was completed automatically as soon as the input came to have a unique completion.
  • Tab now completes instead of selecting the next menu item (this can be configured)

Breaking changes

  • New --force (-f) flag for the mv command. This change alters mv default behavior. By default overwriting existing files is now prevented (You can use alias mv = mv -f in you config to get the old defaults back). (#6904open in new window)
  • The column name for the command name in $nu.scope.commands has been changed from command to name. Thus, $nu.scope.commands | where name =~ zip would give you specific command info. (#7007open in new window)
  • The str distance command now directly returns an Int instead of a record {"distance": <Int>} (#6963open in new window)
  • The argument order of format filesize was made consistent with other commands that accept a CellPath to specify fields that should be affected by it. Now the string specifying the format is the first positional argument and the cell path is specified in the following positional argument(s). ([#6879]https://github.com/nushell/nushell/pull/6879)
  • The --perf flag for Nu was removed as part of an effort to simplify diagnostics logging #6834open in new window

Next Steps

We've drafted a version of the design philosophy for 0.80open in new window, and would love to get your feedback. If you'd like to become part of the effort, please join the discordopen in new window.

Full changelog

Nushell

Extension

Documentation

Nu scripts

Reedline