You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
excerpt: Today, we're releasing version 0.96.0 of Nu. This release adds...
7
7
---
8
+
8
9
<!-- TODO: complete the excerpt above -->
9
10
10
11
# Nushell 0.96.0
11
12
12
13
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.
13
14
14
15
<!-- TODO: write this excerpt -->
16
+
15
17
Today, we're releasing version 0.96.0 of Nu. This release adds...
16
18
17
19
# Where to get it
@@ -21,6 +23,7 @@ Nu 0.96.0 is available as [pre-built binaries](https://github.com/nushell/nushel
21
23
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>`.
22
24
23
25
# Table of content
26
+
24
27
-[_Highlights and themes of this release_](#highlights-and-themes-of-this-release-toc)
25
28
-[_Changes to commands_](#changes-to-commands-toc)
26
29
-[_Additions_](#additions-toc)
@@ -51,6 +54,7 @@ As part of this release, we also publish a set of optional plugins you can insta
51
54
-->
52
55
53
56
# Highlights and themes of this release [[toc](#table-of-content)]
57
+
54
58
<!-- NOTE: if you wanna write a section about a breaking change, when it's a very important one,
55
59
please add the following snippet to have a "warning" banner :)
56
60
> 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
69
73
70
74
## Additions [[toc](#table-of-content)]
71
75
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`.
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
+
74
141
### `std path add`[[toc](#table-of-content)]
75
142
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`).
77
166
78
167
## Deprecations [[toc](#table-of-content)]
79
168
169
+
### `group`[[toc](#table-of-content)]
170
+
171
+
See the notes for the new [`chunks` command](#chunks-toc) above.
172
+
80
173
## Removals [[toc](#table-of-content)]
81
174
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
+
82
183
## Other changes [[toc](#table-of-content)]
83
184
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
+
84
193
## Bug fixes [[toc](#table-of-content)]
85
194
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.
`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
+
86
224
<!-- NOTE: to start investigating the contributions of last release, i like to list them all in a raw table.
87
225
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)
88
226
as follows:
@@ -111,6 +249,7 @@ To be less surprising, [#13258](https://github.com/nushell/nushell/pull/13258) m
111
249
-->
112
250
113
251
# All breaking changes [[toc](#table-of-content)]
252
+
114
253
<!-- TODO:
115
254
paste the output of
116
255
```nu
@@ -125,15 +264,16 @@ To be less surprising, [#13258](https://github.com/nushell/nushell/pull/13258) m
125
264
126
265
Thanks to all the contributors below for helping us solve issues and improve documentation :pray:
0 commit comments