Closed renovate[bot] closed 3 weeks ago
Totals | |
---|---|
Change from base Build fd9b8f974bce55a58ba946398d5d804ddb6e25ae: | 0.0% |
Covered Lines: | 353 |
Relevant Lines: | 408 |
Totals | |
---|---|
Change from base Build fd9b8f974bce55a58ba946398d5d804ddb6e25ae: | 0.0% |
Covered Lines: | 353 |
Relevant Lines: | 408 |
This PR contains the following updates:
1.16.3
->1.17.1
Release Notes
elixir-lang/elixir (elixir)
### [`v1.17.1`](https://togithub.com/elixir-lang/elixir/releases/tag/v1.17.1) [Compare Source](https://togithub.com/elixir-lang/elixir/compare/v1.17.0...v1.17.1) ##### 1. Enhancements ##### Mix - \[mix compile.elixir] Do not run fixpoint computation on runtime dependencies. This should considerably improve compilation times for large projects when changing only one or two files ##### 2. Bug fixes ##### EEx - \[EEx] Do not warn for assignment with blocks in EEx ##### Elixir - \[Kernel] Fix bug when using pinned variables inside `with`'s `else` patterns - \[Kernel] Fix Dialyzer error when with else clause is calling a `no_return` function ##### ExUnit - \[ExUnit] Do not alternative sync/async suites on `--repeat-until-failure` ### [`v1.17.0`](https://togithub.com/elixir-lang/elixir/releases/tag/v1.17.0) [Compare Source](https://togithub.com/elixir-lang/elixir/compare/v1.16.3...v1.17.0) https://elixir-lang.org/blog/2024/06/12/elixir-v1-17-0-released/ This release includes type inference of patterns to provide warnings for an initial set of constructs (binaries, maps, and atoms) within the same function. It also includes a new Duration data type to interact with Calendar types, support for Erlang/OTP 27, and many other improvements. #### Warnings from gradual set-theoretic types This release introduces gradual set-theoretic types to infer types from patterns and use them to type check programs, enabling the Elixir compiler to find faults and bugs in codebases without requiring changes to existing software. The underlying principles, theory, and roadmap of our work have been outlined in ["The Design Principles of the Elixir Type System" by Giuseppe Castagna, Guillaume Duboc, José Valim](https://arxiv.org/abs/2306.06391). At the moment, Elixir developers will interact with set-theoretic types only through warnings found by the type system. The current implementation models all data types in the language: - `binary()`, `integer()`, `float()`, `pid()`, `port()`, `reference()` - these types are indivisible. This means both `1` and `13` get the same `integer()` type. - `atom()` - it represents all atoms and it is divisible. For instance, the atom `:foo` and `:hello_world` are also valid (distinct) types. - `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. - `tuple()`, `list()`, and `function()` - currently they are modelled as indivisible types. The next Elixir versions will also introduce fine-grained support to them. We focused on atoms and maps on this initial release as they are respectively the simplest and the most complex types representations, so we can stress the performance of the type system and quality of error messages. Modelling these types will also provide the most immediate benefits to Elixir developers. Assuming there is a variable named `user`, holding a `%User{}` struct with an `address` field, Elixir v1.17 will emit the following warnings at compile-time: - Pattern matching against a map or a struct that does not have the given key, such as `%{adress: ...} = user` (notice `address` vs `adress`) - Accessing a key on a map or a struct that does not have the given key, such as `user.adress` - Updating a struct or a map that does not define the given key, such as `%{user | adress: ...}` - Invoking a function on non-modules, such as `user.address()` - Capturing a function on non-modules, such as `&user.address/0` - Attempting to invoke to call an anonymous function without an actual function, such as `user.()` - Performing structural comparisons with structs, such as `my_date < ~D[2010-04-17]` - Performing structural comparisons between non-overlapping types, such as `integer >= string` - Building and pattern matching on binaries without the relevant specifiers, such as `<Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
â™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.