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
docmodule provides access to the documentation of builtin modules.
conjcommand “appends” values to a list, and has a guaranteed time complexity independent of the size of the list.
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:
comparecommands now support boolean values (#1585).
compactcommand that replaces consecutive runs of equal values with a single copy, similar to the Unix
ordercommand has a new
benchmarkcommand has been added (#1586).
When checking compilation errors, Elvish no longer stops after the first error found. For example, if
$bare both not defined,
echo $a $bnow yields two errors. This applies to both the interactive REPL and
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-null. They are
/dev/nullon Unix, and
NULon Windows (#1633).
styled-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:regularin wildcard expansions.
Support for shared vars has been removed, along with its API (
trycommand no longer supports the
exceptkeyword. It has been superseded by the
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:
float64command is now deprecated. Use
numfor constructing a typed number, or
inexact-numfor constructing an inexact number.
The documentation has advertised it as deprecated since the 0.16.0 release, but deprecation warnings were never added.