Path to this page:
Subject: CVS commit: pkgsrc/shells/nushell
From: pin
Date: 2023-07-26 21:36:37
Message id: 20230726193637.BB074FBDB@cvs.NetBSD.org
Log Message:
shells/nushell: update to 0.83.0
Themes of this release / New features
Since last release, some commands have changed and some have been created,
here is a list of some changes and what they mean:
- amtoine in #9646
: which returns the type of the command instead of only whether it is
builtin or not and uses more explicit column names
- atahabaki in #9750
: str expand now allows empty member in brace expansion, e.g. A{,B,C} would
expand to [A, AB, AC]
- fdncred in #9669
: keybinding listen gives more information about keys like home and end,
namely their kind and state
- NotLebedev in #9453
: input listen allows to query for a single key press, e.g. the following
will take a 4-char input 1..4 | each { input listen } |
where key_type == char | get code | str join
- kubouch in #9687
: path commands lose the -c flag; instead, use update to update table columns
Command set refinement efforts
Again with this new release, we are continuing refining our set of core
commands. As part of this, another set of commands have moved to extra.
Thanks to folks who are helping our efforts on the road to 1.0!
Note
No command has been removed completely, they have just been moved in the
extra feature of Nushell. simply use cargo ... --features extra to reenable
them.
Math commands have been moved by @stormasm in #9674, #9657 and #9647 and the
following commands have been moved in #9404
: fmt, each while, roll, roll down, roll left, roll right, roll up, rotate,
update cells, decode hex, encode hex, from url, to html, ansi gradient,
ansi linkand format
Language improvements
Since last release, a few changes have happened to the Nu language itself.
Declaration and assignment of variables
Until now, declaration keywords such as let and mut have required the use of
parentheses around pipelines to assign the output of a chain of command to a
variable. Thanks to @jntrnr in #9658 and #9589, this syntax has been relaxed
for let and mut.
Another parser improvement has to do with the use of if and match in variable
assignment. In #9650, @Windsoilder
Input / output type checking and annotations (@jntrnr)
Nushell as a language is more strictly typed than other shell languages.
However, not everything was type-checked nor possible to annotate and this
new release tries to fill this gap a bit more.
First, #9686 makes the input / output type signatures clearer in the help pages
of commands. Then, #9690 and #9680 enable input / output type annotations on
custom commands and enforce a strong type checking on the input and output of
commands. This means a few things:
- the input / output of custom commands can be annotated
- some type-invalid calls to commands are now parsed as an error,
e.g. 123 | get foo gives the an error.
This is still a work in progress, so some commands might have incorrect or
missing input / output type annotations 😮 This is expected and we worked and
are working on this to fix all incorrect signatures (#9755, #9749, #9707,
#9706, #9695, #9683, #9775, #9741, #9742, #9739 and #9778)!
Shoutouts
In between the two releases, @1Kinoti has worked on some nice improvements to
the language
- match guards have been added to the match command in #9621
- table types can now have parameters, just as records and lists can, thansk
to #9613
- structural subtyping has been improved in #9614 and allow to match
structured types regardless of the orders of the fields
Configuration tweaks
Contributions have been made to give a more consistent and sensible default
experience in Nushell, both when using the default_config.nu config file or
when not having a config, e.g. with nu -n. A better right prompt has been
written in #9585 and #9581 and the default configuration has been polished
in #9676
The standard library
The biggest topic in this 0.83 release for the standard library has been the
test runner!
Thanks to @Yethal, the test runner of the standard library can now use
annotations to decide whether or not to run a command as part of the test
suite of a project: #9628, #9622, #9611 and #9406
and std testing run-tests would successfully run the addition test, no need to
define tests with test_ in their names!
Thanks to @Hofer-Julian (#9607), the standard library now also comes with a
pwd command that tells you were you are in the filesystem.
Breaking changes
PLEASE NOTE: there are some big breaking changes in this release. These include:
- Removal of let-env (now use the $env.FOO = "BAR" form instead)
- Stricter checking of input/output types
- Transitioning of a set of commands to now be avialable via extra feature
rather than default
Files: