Elvish 0.19.1 has been released on 2023-03-05, almost a year after 0.18.0, bringing new features and bugfixes.
As usual, prebuilt binaries are offered for most common platforms.
Note: The 0.19.0 version was tagged prematurely by mistake, but it has been picked up by some package managers. As a result, the 0.19.0 version is considered to be “skipped” officially. If your package manager provides a 0.19.0 version, it is probably identical to 0.19.1 in functionalities.
Note 2: The commit tagged 0.19.1 would advertise itself as 0.19.0 when built. To fix this inconsistency, 0.19.2 was tagged with the correct version information.
Notable new features
-
A new
docmodule provides access to the documentation of builtin modules. -
A new
conjcommand “appends” values to a list, and has a guaranteed time complexity independent of the size of the list. -
A new
inexact-numconverts its argument to an inexact number.It is functionally identical to the now deprecated
float64command since the Go float64 type is the only underlying inexact number type for now. Its behavior may change in future if there are more underlying types for inexact numbers. -
A new type of interactive abbreviation:
edit:command-abbr(#1472). -
The
orderandcomparecommands now support boolean values (#1585). -
A new
path:joincommand andpath:separatorandpath:list-separatorvariables (#1562). -
A new
runtime:module that contains paths important for the Elvish runtime (#1385, #1423). -
A new
compactcommand that replaces consecutive runs of equal values with a single copy, similar to the Unixuniqcommand. -
The
ordercommand has a new&keyoption (#1570). -
A new
benchmarkcommand has been added (#1586). -
When checking compilation errors, Elvish no longer stops after the first error found. For example, if
$aand$bare both not defined,echo $a $bnow yields two errors. This applies to both the interactive REPL andelvish -compile-only. -
When using an unimported builtin modules from the REPL, the REPL now shows the
usecommand needed to import it, which can be executed from a key binding. This functionality is bound to Ctrl-A by default. -
New variables exposing the terminal and null device in an OS-agnostic fashion:
$path:dev-ttyand$path:dev-null. They are/dev/ttyand/dev/nullon Unix, andCONandNULon Windows (#1633).
Breaking changes
-
When a
styledorstyled-segmentis printed to terminal, the resulting sequence will now always ignore any existing SGR state. -
Symbolic links are now always treated as ordinary files by the global modifiers
type:dirandtype:regularin wildcard expansions. -
Support for shared vars has been removed, along with its API (
store:shared-var,store:set-shared-varandstore:del-shared-var). -
The
trycommand no longer supports theexceptkeyword. It has been superseded by thecatchkeyword.
Deprecated features
Deprecated features will be removed in 0.20.0.
The following deprecated features trigger a warning whenever the code is parsed and compiled, even if it is not executed:
-
The
float64command is now deprecated. Usenumfor constructing a typed number, orinexact-numfor constructing an inexact number.The documentation has advertised it as deprecated since the 0.16.0 release, but deprecation warnings were never added.