Version 0.16.0 has been released on 2021-08-21, 6 months after 0.15.0, bringing many new features and bugfixes.
As usual, prebuilt binaries are offered for most common platforms.
Note: Versions 0.16.1, 0.16.2 and 0.16.3 were released to fix some packaging issues. They are otherwise identical to 0.16.0.
Breaking changes
-
Exceptions caused by a command trying to write to a closed pipe are now suppressed if the command is part of a pipeline and not the last command of the pipeline.
-
The
builtin:
namespace, useful for referring to builtin variables and commands explicitly, now requiresuse builtin
before use, consistent with other standard library modules. -
As a side effect of support for a integer numbers, contexts that require integers no longer accept floating point numbers with a zero fraction part (e.g.
$li[1.0]
is now illegal;$li[1]
is required). -
The following commands are now replaced by
edit:close-mode
:edit:close-listing
,edit:completion:close
,edit:history:close
,edit:listing:close
. -
The
edit:histlist:toggle-case-sensitivity
command has been removed. Instead, the history listing mode now applies smart-case matching by default. -
Declaring a variable with a
~
suffix, without an explicit initial value, now initializes its value to the builtinnop
function rather than$nil
(#1248).
Deprecated features
Deprecated features will be removed in 0.17.0.
The following deprecated features trigger a warning whenever the code is parsed or compiled, even if it is not executed:
-
The
fopen
andfclose
commands are deprecated. Usefile:open
andfile:close
instead. -
The
prclose
andpwclose
commands are deprecated. Usefile:close
instead.
The following deprecated features unfortunately doesn’t trigger any warnings:
-
The
math:pow10
command is deprecated. Usemath:pow 10 $exponent
instead.
Notable bugfixes
-
Iterating over certain list slices no longer crash Elvish (#1287).
-
Globbing no longer crashes when there are files whose names contain invalid UTF-8 sequences (#1220).
-
The
path:is-dir
andpath:is-regular
commands default behavior no longer follows a final symlink as advertised in the original documentation. A&follow-symlink
option has been added to get the old, undocumented, behavior since it can be useful and avoids the need to usepath:eval-symlinks
to transform the path in common use cases.
-
Evaluating
~username
no longer appends a slash (#1246).
Notable new features
New features in the language:
-
Elvish’s number type has been extended with support for arbitrary-precision integers and rationals. Many numerical commands in the builtin module and the
math:
module have been extended with support for them. -
Experimental support for importing modules written in Go with
use
.
New features in the standard library:
-
A new
file:
module contains utilities for manipulating files. -
Commands for creating temporary files and directories,
path:temp-file
andpath:temp-dir
(#1255). -
New options to the
edit:command-history
command:&dedup
,&newest-first
, and&cmd-only
(#1053). -
New
from-terminated
andto-terminated
commands to allow efficient streaming of byte sequences terminated by ASCII NUL or any other terminator (#1070).
New features in the interactive editor:
-
The editor now supports setting global bindings via
$edit:global-binding
. Global bindings are consulted for keys not present in mode-specific bindings. -
A new
edit:clear
builtin to clear the screen has been added. -
The editor now uses a DSL for filtering items in completion, history listing, location and navigation modes.
-
A new
edit:after-command
hook that is invoked after each interactive command line is run (#1029). -
A new
edit:command-duration
variable that is the number of seconds to execute the most recent interactive command line (#1029).
New features in the command behavior:
-
Elvish now follows the XDG directory spec for placing the database and searching for
rc.elv
and libraries (#383). The legacy directory~/.elvish
is still respected for now, but may issue deprecation warnings in a future version. The exact paths are documented in the page for the Elvish command.