Skip to content

Commit 78b7239

Browse files
committed
Update CHANGELOG
1 parent 021a698 commit 78b7239

File tree

1 file changed

+34
-6
lines changed

1 file changed

+34
-6
lines changed

CHANGELOG.md

+34-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ At the moment, Elixir developers will interact with set-theoretic types only thr
1212

1313
* `atom()` - it represents all atoms and it is divisible. For instance, the atom `:foo` and `:hello_world` are also valid (distinct) types.
1414

15-
* `map()` and structs - maps can be "closed" or "open". Closed maps only allow the specified allows keys, such as `%{key: atom(), value: integer()}`. Open maps support any other keys in addition to the ones listed and their definition starts with `...`, such as `%{..., key: atom(), value: integer()}`. Structs are closed maps with the `__struct__` key.
15+
* `map()` and structs - maps can be "closed" or "open". Closed maps only allow the specified keys, such as `%{key: atom(), value: integer()}`. Open maps support any other keys in addition to the ones listed and their definition starts with `...`, such as `%{..., key: atom(), value: integer()}`. Structs are closed maps with the `__struct__` key.
1616

1717
* `tuple()`, `list()`, and `function()` - currently they are modelled as indivisible types. The next Elixir versions will also introduce fine-grained support to them.
1818

@@ -28,19 +28,19 @@ We focused on atoms and maps on this initial release as they are respectively th
2828

2929
* Capturing a function on non-modules, such as `&user.address/0`
3030

31+
* Attempting to invoke to call an anonymous function without an actual function, such as `user.()`
32+
3133
* Performing structural comparisons with structs, such as `my_date < ~D[2010-04-17]`
3234

3335
* Performing structural comparisons between non-overlapping types, such as `integer >= string`
3436

35-
* Building and pattern matching on binaries without the relevant specifiers, such as `<<string>>` (this warns because by default it expects an integer)
37+
* Building and pattern matching on binaries without the relevant specifiers, such as `<<name>>` (this warns because by default it expects an integer, it should have been `<<name::binary>>` instead)
3638

37-
* Attempting to rescue an undefined exception or an exception that is not a struct
39+
* Attempting to rescue an undefined exception or a struct that is not an exception
3840

3941
* Accessing a field that is not defined in a rescued exception
4042

41-
These new warnings help Elixir developers find bugs earlier and give more confidence when refactoring code, especially around maps and structs. While some of these warnings were emitted in the past, they were discovered using syntax analysis. The new warnings are more reliable, precise, and with better error messages. Keep in mind that not all maps have statically known keys, and the Elixir typechecker at the moment only infers types from patterns within the same function.
42-
43-
Future Elixir versions will infer and type check more constructs, bringing Elixir developers more warnings and quality of life improvements without changes to code. For more details, see our new [reference document on gradual set-theoretic types](https://hexdocs.pm/elixir/main/gradual-set-theoretic-types.html).
43+
These new warnings help Elixir developers find bugs earlier and give more confidence when refactoring code, especially around maps and structs. While some of these warnings were emitted in the past, they were discovered using syntax analysis. The new warnings are more reliable, precise, and with better error messages. Keep in mind, however, that the Elixir typechecker only infers types from patterns within the same function at the moment. Analysis from guards and across function boundaries will be added in future relases. For more details, see our new [reference document on gradual set-theoretic types](https://hexdocs.pm/elixir/main/gradual-set-theoretic-types.html).
4444

4545
The type system was made possible thanks to a partnership between [CNRS](https://www.cnrs.fr/) and [Remote](https://remote.com/). The development work is currently sponsored by [Fresha](https://www.fresha.com/), [Starfish*](https://starfish.team/), and [Dashbit](https://dashbit.co/).
4646

@@ -72,6 +72,34 @@ Finally, a new `Kernel.to_timeout/1` function has been added, which helps develo
7272
Process.send_after(pid, :wake_up, to_timeout(hour: 1))
7373
```
7474

75+
## v1.17.0-rc.1 (2024-06-03)
76+
77+
### 1. Enhancements
78+
79+
#### Elixir
80+
81+
* [Duration] Add `Duration.to_iso8601/1` and `Duration.from_iso8601/1`
82+
* [Keyword] Add `Keyword.intersect/2-3` to mirror the `Map` API
83+
84+
#### Mix
85+
86+
* [mix profile.tprof] Add a new profiler, available on Erlang/OTP 27+, which can measure count, time, and heap usage
87+
* [mix test] Generate cover HTML files in parallel
88+
89+
### 2. Bug fixes
90+
91+
#### Elixir
92+
93+
* [Kernel] Avoid double tracing events when capturing a function
94+
* [Kernel] Fix a bug where captured arguments would conflict when a capture included a macro that also used captures
95+
96+
### 3. Soft deprecations
97+
98+
#### Mix
99+
100+
* [mix profile.cprof] Deprecated in favor of the new `mix profile.tprof`
101+
* [mix profile.eprof] Deprecated in favor of the new `mix profile.tprof`
102+
75103
## v1.17.0-rc.0 (2024-05-24)
76104

77105
### 1. Enhancements

0 commit comments

Comments
 (0)