Skip to content

Commit dd6d84e

Browse files
committed
Start 0.96.0 release notes
1 parent 7795d0b commit dd6d84e

File tree

1 file changed

+145
-5
lines changed

1 file changed

+145
-5
lines changed

blog/2024-07-23-nushell_0_96_0.md

Lines changed: 145 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ author_site: https://twitter.com/nu_shell
55
author_image: https://www.nushell.sh/blog/images/nu_logo.png
66
excerpt: Today, we're releasing version 0.96.0 of Nu. This release adds...
77
---
8+
89
<!-- TODO: complete the excerpt above -->
910

1011
# Nushell 0.96.0
1112

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

1415
<!-- TODO: write this excerpt -->
16+
1517
Today, we're releasing version 0.96.0 of Nu. This release adds...
1618

1719
# Where to get it
@@ -21,6 +23,7 @@ Nu 0.96.0 is available as [pre-built binaries](https://github.com/nushell/nushel
2123
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>`.
2224

2325
# Table of content
26+
2427
- [_Highlights and themes of this release_](#highlights-and-themes-of-this-release-toc)
2528
- [_Changes to commands_](#changes-to-commands-toc)
2629
- [_Additions_](#additions-toc)
@@ -51,6 +54,7 @@ As part of this release, we also publish a set of optional plugins you can insta
5154
-->
5255

5356
# Highlights and themes of this release [[toc](#table-of-content)]
57+
5458
<!-- NOTE: if you wanna write a section about a breaking change, when it's a very important one,
5559
please add the following snippet to have a "warning" banner :)
5660
> see [an example](https://www.nushell.sh/blog/2023-09-19-nushell_0_85_0.html#pythonesque-operators-removal)
@@ -69,20 +73,154 @@ As part of this release, we also publish a set of optional plugins you can insta
6973

7074
## Additions [[toc](#table-of-content)]
7175

76+
### `str deunicode` [[toc](#table-of-content)]
77+
78+
This release adds the `str deunicode` command which will convert unicode characters in a string to ASCII characters ([#13270](https://github.com/nushell/nushell/pull/13270)).
79+
80+
```nushell
81+
> "A…B" | str deunicode
82+
A...B
83+
```
84+
85+
### `chunks` [[toc](#table-of-content)]
86+
87+
The `group` command has been deprecated in favor of the new `chunks` command in [#13377](https://github.com/nushell/nushell/pull/13377). The hope is that the name "chunks" is more descriptive or intuitive compared to "group" so that users can more easily find the command they are looking for. `chunks` behaves exactly like `group` except that it will error if provided a chunk size of zero.
88+
89+
### `char nul` [[toc](#table-of-content)]
90+
91+
Thanks to [@weirdan](https://github.com/weirdan) in [#13241](https://github.com/nushell/nushell/pull/13241), the NUL character (0x0) is now available via `char nul`, `char null_byte`, or `char zero_byte`.
92+
7293
## Breaking changes [[toc](#table-of-content)]
7394

95+
### Default column numbering [[toc](#table-of-content)]
96+
97+
The naming for default columns in `from csv`, `from tsv`, and `from ssv` was changed from 1-based indexing to 0-based indexing in [#13209](https://github.com/nushell/nushell/pull/13209) thanks to [@ito-hiroki](https://github.com/ito-hiroki). I.e., instead of:
98+
99+
```nushell
100+
> "foo,bar,baz" | from csv -n
101+
╭───┬─────────┬─────────┬─────────╮
102+
│ # │ column1 │ column2 │ column3 │
103+
├───┼─────────┼─────────┼─────────┤
104+
│ 0 │ foo │ bar │ baz │
105+
╰───┴─────────┴─────────┴─────────╯
106+
```
107+
108+
the columns will now be named:
109+
110+
```nushell
111+
> "foo,bar,baz" | from csv -n
112+
╭───┬─────────┬─────────┬─────────╮
113+
│ # │ column0 │ column1 │ column2 │
114+
├───┼─────────┼─────────┼─────────┤
115+
│ 0 │ foo │ bar │ baz │
116+
╰───┴─────────┴─────────┴─────────╯
117+
```
118+
119+
### `select` [[toc](#table-of-content)]
120+
121+
When providing cell paths with multiple members (e.g., `outer.inner`), the `select` command would name the output column by concatenating each cell path member with an underscore (e.g., `outer_inner`). After [#13361](https://github.com/nushell/nushell/pull/13361), instead of an underscore, a period will be used to concatenate the cell path members (e.g., `outer.inner`).
122+
123+
Before:
124+
125+
```nushell
126+
> { a: { b: 1 } } | select a.b
127+
╭─────┬───╮
128+
│ a_b │ 1 │
129+
╰─────┴───╯
130+
```
131+
132+
After:
133+
134+
```nushell
135+
> { a: { b: 1 } } | select a.b
136+
╭─────┬───╮
137+
│ a.b │ 1 │
138+
╰─────┴───╯
139+
```
140+
74141
### `std path add` [[toc](#table-of-content)]
75142

76-
To be less surprising, [#13258](https://github.com/nushell/nushell/pull/13258) made the `std path add` function no longer resolve symlinks in either the newly added paths, nor expand paths already in the variable. To mimic the previous resolving behavior, you can use, for example, `std path add ("foo/bar" | path expand)`.
143+
To be less surprising, [@t-mart](https://github.com/t-mart) made the `std path add` function no longer resolve symlinks in either the newly added paths, nor expand paths already in the variable ([#13258](https://github.com/nushell/nushell/pull/13258)). To mimic the previous resolving behavior, you can use `path expand`:
144+
145+
```nushell
146+
std path add ("foo/bar" | path expand)
147+
```
148+
149+
### `default` [[toc](#table-of-content)]
150+
151+
Previously, when given a list as input, the `default` command would replace `null` values inside of the list with the default value. This made it impossible to keep input lists intact while also replacing input nulls with a default value. I.e., the transformation from `null | list<null | string>` to `list<null | string>` is now possible after [#13386](https://github.com/nushell/nushell/pull/13386) thanks to [@weirdan](https://github.com/weirdan).
152+
153+
To replace nulls in a list with a default value, you can now use `each` instead:
154+
155+
```nushell
156+
[null, "a", null] | each { default "b" } # [b a b]
157+
```
158+
159+
### `window` [[toc](#table-of-content)]
160+
161+
With [#13401](https://github.com/nushell/nushell/pull/13401), the `window` command will now error if the provided window size is zero. Similarly, `window` will also error if `--stride` is zero.
162+
163+
### `break` and `continue` [[toc](#table-of-content)]
164+
165+
After [#13398](https://github.com/nushell/nushell/pull/13398), `break` and `continue` are no longer allowed inside the `each` and `items` commands. This means `break` and `continue` are now only allowed inside loops (`for`, `while`, and `loop`).
77166

78167
## Deprecations [[toc](#table-of-content)]
79168

169+
### `group` [[toc](#table-of-content)]
170+
171+
See the notes for the new [`chunks` command](#chunks-toc) above.
172+
80173
## Removals [[toc](#table-of-content)]
81174

175+
### `register` [[toc](#table-of-content)]
176+
177+
The long deprecated `register` command has been finally removed in [#13297](https://github.com/nushell/nushell/pull/13297). Instead, please use the `plugin add` command. For more information, see the [release notes for 0.93.0](https://www.nushell.sh/blog/2024-04-30-nushell_0_93_0.html#redesigned-plugin-management-commands-toc).
178+
179+
### `for --numbered` [[toc](#table-of-content)]
180+
181+
The `--numbered` flag on `for` has been removed in [#13239](https://github.com/nushell/nushell/pull/13239) following its deprecation in the last release. See the [previous release notes](https://www.nushell.sh/blog/2024-06-25-nushell_0_95_0.html#for-numbered-toc) for more information.
182+
82183
## Other changes [[toc](#table-of-content)]
83184

185+
### `to json` [[toc](#table-of-content)]
186+
187+
Thanks to [@drmason13](https://github.com/drmason13) in [#133523](https://github.com/nushell/nushell/pull/13352), `to json` now places braces on the same line instead of on a new line.
188+
189+
### `into bits` [[toc](#table-of-content)]
190+
191+
With [#13310](https://github.com/nushell/nushell/pull/13310), `into bits` now streams its output if provided a streaming input.
192+
84193
## Bug fixes [[toc](#table-of-content)]
85194

195+
### `find` [[toc](#table-of-content)]
196+
197+
Thanks to [@suimong](https://github.com/suimong) in [#13246](https://github.com/nushell/nushell/pull/13246), the `find` command now preserves the casing of its input. Before, it would output only lower cased text.
198+
199+
### `detect columns --guess` [[toc](#table-of-content)]
200+
201+
`detect columns --guess` would sometimes panic when handling multi-byte unicode characters. This has been fixed in [#13272](https://github.com/nushell/nushell/pull/13272) thanks to [@alex-tdrn](https://github.com/alex-tdrn).
202+
203+
### `do` [[toc](#table-of-content)]
204+
205+
The signature of the `do` command has been fixed in [#13216](https://github.com/nushell/nushell/pull/13216) thanks to [@NotTheDr01ds](https://github.com/NotTheDr01ds). The first parameter is now correctly typed as a `closure` instead of `any`, and this should allow for
206+
better compile-time checks/safety.
207+
208+
### `from toml` [[toc](#table-of-content)]
209+
210+
Thanks to [@ito-hiroki](https://github.com/ito-hiroki) in [#13315](https://github.com/nushell/nushell/pull/13315), `from toml` now correctly handles toml date values in more cases.
211+
212+
### `help operators` [[toc](#table-of-content)]
213+
214+
With [#13307](https://github.com/nushell/nushell/pull/13307), the output of `help operators` has been updated and fixed. Some of precedence values were previously out of date.
215+
216+
### `into binary` [[toc](#table-of-content)]
217+
218+
In [#13305](https://github.com/nushell/nushell/pull/13305), an issue has been fixed where external command output would still be treated as raw bytes after being passed through `into binary`.
219+
220+
### `take until` [[toc](#table-of-content)]
221+
222+
The input/output types were edited in [#13356](https://github.com/nushell/nushell/pull/13356) to prevent type checking false positives.
223+
86224
<!-- NOTE: to start investigating the contributions of last release, i like to list them all in a raw table.
87225
to achieve this, one can use the [`list-merged-prs` script from `nu_scripts`](https://github.com/nushell/nu_scripts/blob/main/make_release/release-note/list-merged-prs)
88226
as follows:
@@ -111,6 +249,7 @@ To be less surprising, [#13258](https://github.com/nushell/nushell/pull/13258) m
111249
-->
112250

113251
# All breaking changes [[toc](#table-of-content)]
252+
114253
<!-- TODO:
115254
paste the output of
116255
```nu
@@ -125,15 +264,16 @@ To be less surprising, [#13258](https://github.com/nushell/nushell/pull/13258) m
125264

126265
Thanks to all the contributors below for helping us solve issues and improve documentation :pray:
127266

128-
| author | title | url |
129-
| ------------------------------------ | ----------- | ------------------------------------------------------- |
130-
| [@author](https://github.com/author) | ... | [#12345](https://github.com/nushell/nushell/pull/12345) |
267+
| author | title | url |
268+
| ------------------------------------ | ----- | ------------------------------------------------------- |
269+
| [@author](https://github.com/author) | ... | [#12345](https://github.com/nushell/nushell/pull/12345) |
131270

132271
# Full changelog [[toc](#table-of-content)]
272+
133273
<!-- TODO:
134274
paste the output of
135275
```nu
136276
./make_release/release-note/get-full-changelog
137277
```
138278
here
139-
-->
279+
-->

0 commit comments

Comments
 (0)