diff --git a/blog/2024-05-30-nushell_0_94_1.md b/blog/2024-05-30-nushell_0_94_1.md new file mode 100644 index 0000000000..4477c0618b --- /dev/null +++ b/blog/2024-05-30-nushell_0_94_1.md @@ -0,0 +1,96 @@ +--- +title: Nushell 0.94.1 +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.94.1 of Nu. This is a patch release to fix issues introduced by 0.94.0. +--- + +# Nushell 0.94.1 + +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.94.1 of Nu. This is a patch release to fix issues introduced by 0.94.0, including path expansion for external commands, `path type` changes, shell integration, and more. + +# Where to get it + +Nu 0.94.1 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.94.1) 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 content + +- [_Highlights and themes of this release_](#highlights-and-themes-of-this-release-toc) + - [_Restore tilde expansion on external command names_](#restore-tilde-expansion-on-external-command-names-toc) + - [_Fix handling of rest args in `do`_](#fix-handling-of-rest-args-in-do-toc) + - [_Restore `path type` behavior_](#restore-path-type-behavior-toc) + - [_Fix incorrect path handling in OSC9;9 shell integration_](#fix-incorrect-path-handling-in-osc9-9-shell-integration-toc) + - [_Disallow more characters in arguments for internal `cmd.exe` commands_](#disallow-more-characters-in-arguments-for-internal-cmd-exe-commands-toc) +- [_Hall of fame_](#hall-of-fame-toc) +- [_Full changelog_](#full-changelog-toc) + +# Highlights and themes of this release [[toc](#table-of-content)] + +## Restore tilde expansion on external command names [[toc](#table-of-content)] + +Tilde expansion in the name of an external command was inadvertently removed from 0.94.0, so these no longer worked: + +```nushell +~/bin/foo +^~/bin/bar +run-external ~/bin/baz +``` + +This behavior has been restored by [#13001](https://github.com/nushell/nushell/pull/13001). We chose not to allow the following, for now (these still don't expand): + +```nushell +^"~/bin/foo" +^$"~/bin/($env.BIN_NAME)" +# and run-external with the same +``` + +This is to be consistent with our behavior in other places where quoted strings usually don't cause expansion of extra path features. It is possible to use `path expand` instead: + +```nushell +^("~/bin/foo" | path expand) +``` + +but we would like to make this more ergonomic somehow in a future release. + +## Fix handling of rest args in `do` [[toc](#table-of-content)] + +A bug has existed for a little while when using `do` with a closure that takes rest args and also takes required or optional args. + +```nushell +do { |a, b, ...c| print $a $b $c } 1 2 3 4 5 6 7 8 +``` + +Before the patch, this would print `1`, `2`, and then `[5 6 7 8]`, as the non-rest args were counted incorrectly. [@WindSoilder](https://github.com/WindSoilder) fixed this in [#13002](https://github.com/nushell/nushell/pull/13002), and that fix is included in this release. Thanks! + +## Restore `path type` behavior [[toc](#table-of-content)] + +In 0.94.0, we changed `path type` to return an error for non-existent paths rather than an empty string, but we didn't communicate this change thoroughly enough and it broke some tools like `zoxide`. We've decided to go back to the previous behavior for now and revisit this later. + +Fixed by [@IanManske](https://github.com/IanManske) in [#13006](https://github.com/nushell/nushell/pull/13006). + +## Fix incorrect path handling in OSC9;9 shell integration [[toc](#table-of-content)] + +This escape sequence is used to tell terminals where the current directory is. This is helpful for terminals that open new tabs in the same directory, e.g. "Duplicate Tab" in Windows Terminal. A slash was being added incorrectly to the beginning here, which broke Windows. + +Fixed by [@fdncred](https://github.com/fdncred) in [#12994](https://github.com/nushell/nushell/pull/12994). + +## Disallow more characters in arguments for internal `cmd.exe` commands [[toc](#table-of-content)] + +Properly escaping command arguments on Windows is [complicated](https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/), and we weren't correctly rejecting certain potentially unsafe arguments to the `cmd.exe` builtins we support (such as `mklink`). As we would prefer that you only have to learn one set of escaping rules to use Nushell properly, this is undesirable behavior, so [@IanManske](https://github.com/IanManske) has fixed it in [#13009](https://github.com/nushell/nushell/pull/13009). + +# Full changelog [[toc](#table-of-content)] + +- [IanManske](https://github.com/IanManske) created + - [Disallow more characters in arguments for internal `cmd` commands](https://github.com/nushell/nushell/pull/13009) + - [Restore `path type` behavior](https://github.com/nushell/nushell/pull/13006) +- [WindSoilder](https://github.com/WindSoilder) created + - [fix do closure with both required, options, and rest args](https://github.com/nushell/nushell/pull/13002) +- [devyn](https://github.com/devyn) created + - [Restore tilde expansion on external command names](https://github.com/nushell/nushell/pull/13001) +- [fdncred](https://github.com/fdncred) created + - [fixes a bug in OSC9;9 execution](https://github.com/nushell/nushell/pull/12994)