Version 0.14.0 has been released on 2020-07-05, 6 months after 0.13, bringing many new features and bugfixes.
As usual, prebuilt binaries are offered for most common platforms.
Breaking changes
The
type
field of the value written bysrc
have been removed.The
all
command no longer preserves byte inputs as is; instead it turns them into values, one each line. It also accepts an optional list argument, consistent with other value-taking commands.Output captures now strip trailing carriage returns from each line, effectively making
\r\n
accepted as a line separator (#970).Map-like values written by the
dir-history
andre:find
functions can no longer be assoc’ed.
Deprecated features
Elvish now has a deprecation mechanism to give advance notice for breaking changes. Deprecated features trigger warnings, and will be removed in the next release.
The following deprecated features trigger a warning whenever the code is parsed or compiled, even if it is not executed:
The
explode
command is now deprecated. Useall
instead.The
joins
,replaces
andsplits
commands are now deprecated. Usestr:join
,str:replace
andstr:split
instead.The
^
command is now deprecated. Usemath:pow
instead.The
-time
command has been promoted totime
. The-time
command is now a deprecated alias fortime
.Using
\
for line continuation is now deprecated. Use^
instead.
The following deprecated features trigger a warning when the code is evaluated:
- The
&display-suffix
option of theedit:complex-candidate
is now deprecated. Use the&display
option instead.
The following deprecated features, unfortunately, do not trigger any warnings:
- The
path
field of the value returned bysrc
is now deprecated. Use thename
field instead.
Notable new features
New features in the language:
Exceptions can now be introspected by accessing their fields (#208).
Two new wildcard modifiers,
type:dir
andtype:regular
are added, which restricts the wildcard pattern to only match directories or regular files, respectively.The printing of floating-point numbers has been tweaked to feel much more natural (#811).
Scripts may now use relative
use
to import modules outside~/.elvish/lib
.Dynamic strings may now be used as command as long as they contain slashes (#764).
Elvish now supports CRLF line endings in source files (#918).
Comments are now allowed anywhere newlines serve as separators, notably inside list and map literals (#924).
The
^
character can now be used for line continuation.
New features in the standard library:
A new
order
command for sorting values has been introduced #651.A new
platform:
module has been introduced.A new
unix:
module has been introduced.A new
math:
module has been introduced.The
fail
command now takes an argument of any type. In particular, if the argument is an exception, it rethrows the exception (#941).A new
show
command has been added, which is currently useful for printing the stack trace of an exception to the terminal.A new
make-map
command creates a map from a sequence of pairs (#943).A new
read-line
command can be used to read a single line from the byte input (#975).The
-time
command has been promoted totime
, and it now accepts an&on-end
callback to specify how to save the duration of the execution (#295).A new
one
command has been added.A new
read-upto
command can now be added to read byte inputs up to a delimiter (#831).
New features in the interactive editor:
When a callback of the interactive editor throws an exception, the exception is now saved in a
$edit:exceptions
variable for closer examination (#945).A new alternative abbreviation mechanism, “small word abbreviation”, is now available and configurable via
$edit:small-word-abbr
.The ratios of the column widths in navigation mode can now be configured with
$edit:navigation:width-ratio
(#464)A new
$edit:add-cmd-filters
variable is now available for controlling whether a command is added to the history.The default value of this variable filters out commands that start with a space.
The
edit:complex-candidate
now supports a&display
option to specify the full display text.
Other improvements:
Elvish now uses
$XDG_RUNTIME_DIR
to keep runtime files if possible.Elvish now increments the
$SHLVL
environment variable (#834).
Notable bugfixes
Invalid option names or values passed to builtin functions now correctly trigger an exception, instead of being silently ignored (#958).
Elvish no longer crashes when redirecting to a high FD (#788).
Indexing access to nonexistent variables now correctly triggers a compilation error (#889).
The interactive REPL no longer highlights complex commands as red (#881).
Glob patterns after
~username
now evaluate correctly (#793).On Windows, tab completions for directories no longer add superfluous quotes backslashes (#897).
The
edit:move-dot-left-small-word
command has been fixed to actually move by a small word instead of a word.