github.com/elves/elvish@v0.15.0/website/blog/0.15.0-release-notes.md (about)

     1  Version 0.15.0 has been released on 2021-01-24, 6 months after 0.14.0, bringing
     2  many new features and bugfixes.
     3  
     4  As usual, [prebuilt binaries](https://elv.sh/get) are offered for most common
     5  platforms.
     6  
     7  # Breaking changes
     8  
     9  -   Builtin functions and subnamespaces of `edit:` are now read-only.
    10  
    11  -   Introspection for rest arguments has changed:
    12  
    13      -   The rest argument is now contained in the `arg-names` field of a
    14          closure.
    15  
    16      -   The `rest-arg` field now contains the index of the rest argument,
    17          instead of the name.
    18  
    19  -   The `-source` command now runs in a temporary namespace and can no longer
    20      affect the local scope of its caller.
    21  
    22  -   Key modifiers are no longer case insensitive. For example, `Alt` is still
    23      recognized but `alt` is not. This makes key modifier parsing consistent with
    24      key names. See [#1163](https://b.elv.sh/1163).
    25  
    26  # Deprecated features
    27  
    28  Deprecated features will be removed in 0.16.0.
    29  
    30  The following deprecated features trigger a warning whenever the code is parsed
    31  or compiled, even if it is not executed:
    32  
    33  -   Using the syntax of temporary assignment (`var=value`) for non-temporary
    34      assignment is now deprecated. The syntax is still valid for temporary
    35      assignment. For example, using `foo=bar` as a standalone command is
    36      deprecated, but using it as part of command, like `foo=bar ls`, is not
    37      deprecated.
    38  
    39  -   The `chr` command is now deprecated. Use `str:from-codepoints` instead.
    40  
    41  -   The `ord` command is now deprecated. Use `str:to-codepoints` instead.
    42  
    43  -   The `has-prefix` command is now deprecated. Use `str:has-prefix` instead.
    44  
    45  -   The `has-suffix` command is now deprecated. Use `str:has-suffix` instead.
    46  
    47  -   The `-source` command is now deprecated. Use `eval` instead.
    48  
    49  -   The undocumented `esleep` command is now deprecated. Use `sleep` instead.
    50  
    51  -   The `eval-symlinks` command is deprecated. Use `path:eval-symlinks` instead.
    52  
    53  -   The `path-abs` command is deprecated. Use `path:abs` instead.
    54  
    55  -   The `path-base` command is deprecated. Use `path:base` instead.
    56  
    57  -   The `path-clean` command is deprecated. Use `path:clean` instead.
    58  
    59  -   The `path-dir` command is deprecated. Use `path:dir` instead.
    60  
    61  -   The `path-ext` command is deprecated. Use `path:ext` instead.
    62  
    63  -   The `-is-dir` command is deprecated. Use `path:is-dir` instead.
    64  
    65  The following deprecated features trigger a warning when the code is evaluated:
    66  
    67  -   Using `:` in slice indices is deprecated. Use `..` instead.
    68  
    69  -   The mechanism of assigning to `$-exports-` in `rc.elv` to export variables
    70      to the REPL namespace is deprecated. Use `edit:add-vars` instead.
    71  
    72  # Notable new features
    73  
    74  New features in the language:
    75  
    76  -   A new `var` special command can be used to explicitly declare variables, and
    77      optionally assign them initial values.
    78  
    79  -   A new `set` special command can be used to set the values of variables or
    80      elements.
    81  
    82  -   Slice indices can now use `..` for left-closed, right-open ranges, and `..=`
    83      for closed ranges.
    84  
    85  -   Rest variables and rest arguments are no longer restricted to the last
    86      variable.
    87  
    88  -   Variables containing any character can now be assigned and used by quoting
    89      their name, for example `'name!' = foo; put $'name!'`.
    90  
    91  New features in the standard library:
    92  
    93  -   A new `eval` command supports evaluating a dynamic piece of code in a
    94      restricted namespace.
    95  
    96  -   A new `sleep` command.
    97  
    98  -   A new `path:` module has been introduced for manipulating and testing
    99      filesystem paths.
   100  
   101  -   A new `deprecate` command.
   102  
   103  New features in the interactive editor:
   104  
   105  -   The new commands `edit:add-var` and `edit:add-vars` provide an API for
   106      manipulating the REPL's namespace from anywhere.
   107  
   108  -   SGR escape sequences written from the prompt callback are now supported.
   109  
   110  New features in the main program:
   111  
   112  -   When using `-compileonly` to check Elvish sources that contain parse errors,
   113      Elvish will still try to compile the source code and print out compilation
   114      errors.
   115  
   116  # Notable bugfixes
   117  
   118  -   Using large lists that contain `$nil` no longer crashes Elvish.