Skip to content

Commit 5949460

Browse files
committed
Start v1.17-dev
1 parent bb1f1af commit 5949460

File tree

6 files changed

+11
-139
lines changed

6 files changed

+11
-139
lines changed

Diff for: CHANGELOG.md

+2-130
Original file line numberDiff line numberDiff line change
@@ -1,143 +1,15 @@
11
# Changelog for Elixir v1.16
22

3-
## Code snippets in diagnostics
4-
5-
Elixir v1.15 introduced a new compiler diagnostic format and the ability to print multiple error diagnostics per compilation (in addition to multiple warnings).
6-
7-
With Elixir v1.16, we also include code snippets in exceptions and diagnostics raised by the compiler. For example, a syntax error now includes a pointer to where the error happened:
8-
9-
```
10-
** (SyntaxError) invalid syntax found on lib/my_app.ex:1:17:
11-
error: syntax error before: '*'
12-
13-
1 │ [1, 2, 3, 4, 5, *]
14-
│ ^
15-
16-
└─ lib/my_app.ex:1:17
17-
```
18-
19-
For mismatched delimiters, it now shows both delimiters:
20-
21-
```
22-
** (MismatchedDelimiterError) mismatched delimiter found on lib/my_app.ex:1:18:
23-
error: unexpected token: )
24-
25-
1 │ [1, 2, 3, 4, 5, 6)
26-
│ │ └ mismatched closing delimiter (expected "]")
27-
│ └ unclosed delimiter
28-
29-
└─ lib/my_app.ex:1:18
30-
```
31-
32-
Errors and warnings diagnostics also include code snippets. When possible, we will show precise spans, such as on undefined variables:
33-
34-
```
35-
error: undefined variable "unknown_var"
36-
37-
5 │ a - unknown_var
38-
│ ^^^^^^^^^^^
39-
40-
└─ lib/sample.ex:5:9: Sample.foo/1
41-
```
42-
43-
Otherwise the whole line is underlined:
44-
45-
```
46-
error: function names should start with lowercase characters or underscore, invalid name CamelCase
47-
48-
3 │ def CamelCase do
49-
│ ^^^^^^^^^^^^^^^^
50-
51-
└─ lib/sample.ex:3
52-
```
53-
54-
A huge thank you to Vinícius Muller for working on the new diagnostics.
55-
56-
## Revamped documentation
57-
58-
Elixir's Getting Started guided has been made part of the Elixir repository and incorporated into ExDoc. This was an opportunity to revisit and unify all official guides and references.
59-
60-
We have also incorporated and extended the work on [Understanding Code Smells in Elixir Functional Language](https://github.com/lucasvegi/Elixir-Code-Smells/blob/main/etc/2023-emse-code-smells-elixir.pdf), by Lucas Vegi and Marco Tulio Valente, from [ASERG/DCC/UFMG](http://aserg.labsoft.dcc.ufmg.br/), into the official document in the form of anti-patterns. The anti-patterns are divided into four categories: code-related, design-related, process-related, and meta-programming. Our goal is to give all developers with both positive and negative examples of Elixir code, with context and examples on how to improve their codebases.
61-
62-
Another [ExDoc](https://github.com/elixir-lang/ex_doc) feature we have incorporated in this release is the addition of cheatsheets, starting with [a cheatsheet for the Enum module](https://hexdocs.pm/elixir/main/enum-cheat.html). If you would like to contribute future cheatsheets to Elixir itself, feel free to start a discussion with an issue.
63-
64-
Finally, we have started enriching our documentation with [Mermaid.js](https://mermaid.js.org/) diagrams. You can find examples in the [GenServer](https://hexdocs.pm/elixir/main/GenServer.html) and [Supervisor](https://hexdocs.pm/elixir/main/Supervisor.html) docs.
65-
66-
## v1.16.0-dev
3+
## v1.17.0-dev
674

685
### 1. Enhancements
696

70-
#### EEx
71-
72-
* [EEx] Include relative file information in diagnostics
73-
74-
#### Elixir
75-
76-
* [Code] Automatically include columns in parsing options
77-
* [Code] Introduce `MismatchedDelimiterError` for handling mismatched delimiter exceptions
78-
* [Code.Fragment] Handle anonymous calls in fragments
79-
* [Kernel] Suggest module names based on suffix and casing errors when the module does not exist in `UndefinedFunctionError`
80-
* [Kernel.ParallelCompiler] Introduce `Kernel.ParallelCompiler.pmap/2` to compile multiple additional entries in parallel
81-
* [Kernel.SpecialForms] Warn if `True`/`False`/`Nil` are used as aliases and there is no such alias
82-
* [Macro] Add `Macro.compile_apply/4`
83-
* [Module] Add support for `@nifs` annotation from Erlang/OTP 25
84-
* [Module] Add support for missing `@dialyzer` configuration
85-
* [String] Update to Unicode 15.1.0
86-
* [Task] Add `:limit` option to `Task.yield_many/2`
87-
88-
#### Mix
89-
90-
* [mix] Add `MIX_PROFILE` to profile a list of comma separated tasks
91-
* [mix compile.elixir] Optimize scenario where there are thousands of files in `lib/` and one of them is changed
92-
* [mix test] Allow testing multiple file:line at once, such as `mix test test/foo_test.exs:13 test/bar_test.exs:27`
93-
947
### 2. Bug fixes
958

96-
#### Elixir
97-
98-
* [Code.Fragment] Fix crash in `Code.Fragment.surround_context/2` when matching on `->`
99-
* [IO] Raise when using `IO.binwrite/2` on terminated device (mirroring `IO.write/2`)
100-
* [Kernel] Do not expand aliases recursively (the alias stored in Macro.Env is already expanded)
101-
* [Kernel] Ensure `dbg` module is a compile-time dependency
102-
* [Kernel] Warn when a private function or macro uses `unquote/1` and the function/macro itself is unused
103-
* [Kernel] Do not define an alias for nested modules starting with `Elixir.` in their definition
104-
* [Kernel.ParallelCompiler] Consider a module has been defined in `@after_compile` callbacks to avoid deadlocks
105-
* [Path] Ensure `Path.relative_to/2` returns a relative path when the given argument does not share a common prefix with `cwd`
106-
107-
#### ExUnit
108-
109-
* [ExUnit] Raise on incorrectly dedented doctests
110-
111-
#### Mix
112-
113-
* [Mix] Ensure files with duplicate modules are recompiled whenever any of the files change
114-
1159
### 3. Soft deprecations (no warnings emitted)
11610

117-
#### Elixir
118-
119-
* [File] Deprecate `File.stream!(file, options, line_or_bytes)` in favor of keeping the options as last argument, as in `File.stream!(file, line_or_bytes, options)`
120-
* [Kernel.ParallelCompiler] Deprecate `Kernel.ParallelCompiler.async/1` in favor of `Kernel.ParallelCompiler.pmap/2`
121-
* [Path] Deprecate `Path.safe_relative_to/2` in favor of `Path.safe_relative/2`
122-
12311
### 4. Hard deprecations
12412

125-
#### Elixir
126-
127-
* [Date] Deprecate inferring a range with negative step, call `Date.range/3` with a negative step instead
128-
* [Enum] Deprecate passing a range with negative step on `Enum.slice/2`, give `first..last//1` instead
129-
* [Kernel] `~R/.../` is deprecated in favor of `~r/.../`. This is because `~R/.../` still allowed escape codes, which did not fit the definition of uppercase sigils
130-
* [String] Deprecate passing a range with negative step on `String.slice/2`, give `first..last//1` instead
131-
132-
#### ExUnit
133-
134-
* [ExUnit.Formatter] Deprecate `format_time/2`, use `format_times/1` instead
135-
136-
#### Mix
137-
138-
* [mix compile.leex] Require `:leex` to be added as a compiler to run the `leex` compiler
139-
* [mix compile.yecc] Require `:yecc` to be added as a compiler to run the `yecc` compiler
140-
14113
## v1.15
14214

143-
The CHANGELOG for v1.15 releases can be found [in the v1.15 branch](https://github.com/elixir-lang/elixir/blob/v1.15/CHANGELOG.md).
15+
The CHANGELOG for v1.16 releases can be found [in the v1.16 branch](https://github.com/elixir-lang/elixir/blob/v1.16/CHANGELOG.md).

Diff for: SECURITY.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ Elixir applies bug fixes only to the latest minor branch. Security patches are a
66

77
Elixir version | Support
88
:------------- | :-----------------------------
9-
1.16 | Development
10-
1.15 | Bug fixes and security patches
9+
1.17 | Development
10+
1.16 | Bug fixes and security patches
11+
1.15 | Security patches only
1112
1.14 | Security patches only
1213
1.13 | Security patches only
1314
1.12 | Security patches only
14-
1.11 | Security patches only
1515

1616
## Announcements
1717

Diff for: VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.16.0-dev
1+
1.17.0-dev

Diff for: bin/elixir

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/sh
22
set -e
33

4-
ELIXIR_VERSION=1.16.0-dev
4+
ELIXIR_VERSION=1.17.0-dev
55

66
if [ $# -eq 0 ] || { [ $# -eq 1 ] && { [ "$1" = "--help" ] || [ "$1" = "-h" ]; }; }; then
77
cat <<USAGE >&2

Diff for: bin/elixir.bat

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
@if defined ELIXIR_CLI_ECHO (@echo on) else (@echo off)
22

3-
set ELIXIR_VERSION=1.16.0-dev
3+
set ELIXIR_VERSION=1.17.0-dev
44

55
setlocal enabledelayedexpansion
66
if ""%1""=="""" if ""%2""=="""" goto documentation

Diff for: lib/elixir/pages/references/compatibility-and-deprecations.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ Elixir applies bug fixes only to the latest minor branch. Security patches are a
88

99
Elixir version | Support
1010
:------------- | :-----------------------------
11-
1.16 | Development
12-
1.15 | Bug fixes and security patches
11+
1.17 | Development
12+
1.16 | Bug fixes and security patches
13+
1.15 | Security patches only
1314
1.14 | Security patches only
1415
1.13 | Security patches only
1516
1.12 | Security patches only
16-
1.11 | Security patches only
1717

1818
New releases are announced in the read-only [announcements mailing list](https://groups.google.com/group/elixir-lang-ann). All security releases [will be tagged with `[security]`](https://groups.google.com/forum/#!searchin/elixir-lang-ann/%5Bsecurity%5D%7Csort:date).
1919

0 commit comments

Comments
 (0)