Skip to content


Choose a tag to compare
@xiaq xiaq released this 23 Sep 00:23
· 4327 commits to master since this release

Breaking changes

  • The println builtin is now known as echo, shadowing the external echo.
  • Changes on comparison builtins:
    • A family of string comparison builtins have been added, <s, <=s, ==s, !=s, >s and >=s (#238).
    • The is builtin is the new generic (shallow) equality predicate. The deep equality predicate deepeq is now known simply as eq.
    • The == builtin now compares numbers -- == 1 1.0 is true, while == a a throws an exception. To compare strings, use either ==s or is.
  • Automatic use'ing has been removed. All modules must be used before use.
  • The into-lines builtin is now known as to-lines.
  • The history builtin has been removed; use $le:history instead (#267).

Other notable changes

  • When run interactively, predicates that return false are now indicated with a ✗ sign.
  • Completion listing now has black text over a light background (#184), and is no longer unnecessarily tall (
  • Strings can now be indexed to obtain substrings (#243).
  • The peach command, a parallel version of each has been added (#244).
  • Multi-level modules are supported. For instance, the a:b module is the file ~/.elvish/a/b.elv (#249).
  • When exceptions are thrown, a full stack trace is now displayed (#207,
  • An unstable builtin -time has been added that shows the time to run a function.
  • An unstable builtin -override-wcwidth has been added to override wcwidth.
  • The navigation mode now supports previewing UTF-8-encoded text files (
  • A variable $le:after-readline has been added. It is a list of functions to be called just after the line editor completes reading input, with the input as the sole argument.
  • The auxiliary elvish-stub program has been removed, and elvish now always runs in foreground. As a nice side effect, elvish is go-gettable again.