elvish/NEXT-RELEASE.md
Kurtis Rader be712d5405
Introduce the path: module (#1203)
* Introduce the `path:` module

This is based on https://github.com/elves/elvish/pull/1084 by @kolbycrouch
submitted five months ago. It addresses all of the feedback on that
change and includes other documentation and unit test improvements. It
also includes a couple of extensions to the original P.R., such as a
`path:is-abs` command.

I decided to resurrect that change because I want better support for
filesystem path manipulation so that users can replace non-portable
external commands such as `realpath` and `find` with Elvish builtins. This
is a baby step towards that goal.

Related #849

* Add a `path:is-regular` command

This adds a `path:is-regular` command.  This is for symmetry with the
`path:is-dir` command and the glob `[type:regular]` modifier.

It also adds support for symlinks in the `testutil.Applydir` function
and change the path unit test to use it.

* Rename path:real to path:eval-symlinks
2021-01-16 23:21:33 +00:00

100 lines
3.2 KiB
Markdown

This is the draft release notes for 0.15.0, scheduled to be released on
2021-01-01.
# Breaking changes
- Builtin functions and subnamespaces of `edit:` are now read-only.
- Introspection for rest arguments has changed:
- The rest argument is now contained in the `arg-names` field of a
closure.
- The `rest-arg` field now contains the index of the rest argument,
instead of the name.
- The `-source` command now runs in a temporary namespace and can no longer
affect the local scope of its caller.
- Key modifiers are no longer case insensitive. For example, `Alt` is still
recognized but `alt` is not. This makes key modifier parsing consistent with
key names. See [#1163](https://b.elv.sh/1163).
# Deprecated features
The following deprecated features trigger a warning whenever the code is parsed
or compiled, even if it is not executed:
- The `chr` command is now deprecated. Use `str:from-codepoints` instead.
- The `ord` command is now deprecated. Use `str:to-codepoints` instead.
- The `has-prefix` command is now deprecated. Use `str:has-prefix` instead.
- The `has-suffix` command is now deprecated. Use `str:has-suffix` instead.
- The `-source` command is now deprecated. Use `eval` instead.
- The undocumented `esleep` command is now deprecated. Use `sleep` instead.
- The `eval-symlinks` command is deprecated. Use `path:eval-symlinks` instead.
- The `path-abs` command is deprecated. Use `path:abs` instead.
- The `path-base` command is deprecated. Use `path:base` instead.
- The `path-clean` command is deprecated. Use `path:clean` instead.
- The `path-dir` command is deprecated. Use `path:dir` instead.
- The `path-ext` command is deprecated. Use `path:ext` instead.
- The `-is-dir` command is deprecated. Use `path:is-dir` instead.
The following deprecated features trigger a warning when the code is evaluated:
- Using `:` in slice indices is deprecated. Use `..` instead.
# Notable new features
New features in the language:
- A new `var` special command can be used to explicitly declare variables, and
optionally assign them initial values.
- A new `set` special command can be used to set the values of variables or
elements.
- Slice indices can now use `..` for left-closed, right-open ranges, and `..=`
for closed ranges.
- Rest variables and rest arguments are no longer restricted to the last
variable.
- Variables containing any character can now be assigned and used by quoting
their name, for example `'name!' = foo; put $'name!'`.
New features in the standard library:
- A new `eval` command supports evaluating a dynamic piece of code in a
restricted namespace.
- A new `sleep` command.
- A new `path:` module has been introduced for manipulating and testing
filesystem paths.
New features in the interactive editor:
- SGR escape sequences written from the prompt callback are now supported.
New features in the main program:
- When using `-compileonly` to check Elvish sources that contain parse errors,
Elvish will still try to compile the source code and print out compilation
errors.
# Notable bugfixes
- Using large lists that contain `$nil` no longer crashes Elvish.