Version 0.18.0 has been released on 2022-03-20, 4 months after 0.17.0, bringing
new features and bugfixes.

As usual, [prebuilt binaries](https://elv.sh/get) are offered for most common
platforms.

# Breaking changes

-   All features deprecated in 0.17.0 have been removed.

-   Within double quotes, `\x` followed by two hexadecimal digits and `\`
    followed by three octal digits now encode an individual byte, rather than a
    codepoint.

-   Using a lone `try` without `except` or `finally` is now forbidden; this does
    not do anything useful and is almost certainly an incorrect attempt to
    suppress an exception.

# Deprecated features

Deprecated features will be removed in 0.19.0.

The following deprecated features trigger a warning whenever the code is parsed
or compiled, even if it is not executed:

-   The legacy temporary assignment syntax (e.g. `a=foo echo $a`) is deprecated.
    Use the new `tmp` command instead (e.g. `tmp a = foo; echo $a`).

-   The clause to catch exceptions in the `try` special command is now spelt
    with `catch`; the old keyword `except` is deprecated.

# Notable bugfixes

-   The output longer than terminal width is now shown fully on Windows
    Terminal.

-   Changing directories in the navigation mode now correctly runs hooks and
    updates `$E:PWD`.

# Notable new features

-   Elvish now ships a builtin language server that can be started with
    `elvish -lsp`.

-   A new `flag:` module for parsing command-line flags.

-   A new `tmp` special command for doing temporary assignments.

-   A new `defer` command to schedule a function to be run when the current
    closure finishes execution.

-   A new `call` command to call a command, using a list for and a map for
    options.

-   A new `$unix:rlimits` variable allows manipulation of resource limits.
