From 0b8623a032555d77cbd7cba815736b0ca1335e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 12 Jun 2024 12:23:34 +0200 Subject: [PATCH] Release v1.17.0 --- CHANGELOG.md | 43 +++++++++++++------------------------------ VERSION | 2 +- bin/elixir | 2 +- bin/elixir.bat | 2 +- 4 files changed, 16 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1912a99bc89..b3918645740 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This release includes type inference of patterns to provide warnings for an init ## Warnings from gradual set-theoretic types -This release introduces gradual set-theoretic types to infer types from patterns and guards 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). +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: @@ -72,35 +72,7 @@ Finally, a new `Kernel.to_timeout/1` function has been added, which helps develo Process.send_after(pid, :wake_up, to_timeout(hour: 1)) ``` -## v1.17.0-rc.1 (2024-06-03) - -### 1. Enhancements - -#### Elixir - - * [Duration] Add `Duration.to_iso8601/1` and `Duration.from_iso8601/1` - * [Keyword] Add `Keyword.intersect/2-3` to mirror the `Map` API - -#### Mix - - * [mix profile.tprof] Add a new profiler, available on Erlang/OTP 27+, which can measure count, time, and heap usage - * [mix test] Generate cover HTML files in parallel - -### 2. Bug fixes - -#### Elixir - - * [Kernel] Avoid double tracing events when capturing a function - * [Kernel] Fix a bug where captured arguments would conflict when a capture included a macro that also used captures - -### 3. Soft deprecations - -#### Mix - - * [mix profile.cprof] Deprecated in favor of the new `mix profile.tprof` - * [mix profile.eprof] Deprecated in favor of the new `mix profile.tprof` - -## v1.17.0-rc.0 (2024-05-24) +## v1.17.0 (2024-06-12) ### 1. Enhancements @@ -118,6 +90,7 @@ Process.send_after(pid, :wake_up, to_timeout(hour: 1)) * [Kernel] Add `Kernel.to_timeout/1` * [Kernel] Emit warnings for undefined functions from modules defined within the same context as the caller code * [Kernel] Support integers in uppercase sigils + * [Keyword] Add `Keyword.intersect/2-3` to mirror the `Map` API * [Macro] Add `Macro.Env.define_alias/4`, `Macro.Env.define_import/4`, `Macro.Env.define_require/4`, `Macro.Env.expand_alias/4`, `Macro.Env.expand_import/5`, and `Macro.Env.expand_require/6` to aid the implementation of language servers and embedded languages * [NaiveDateTime] Add `NaiveDateTime.shift/2` to shift naive datetimes with duration and calendar-specific semantics * [Process] Add `Process.set_label/1` @@ -147,9 +120,12 @@ Process.send_after(pid, :wake_up, to_timeout(hour: 1)) * [mix deps] Warn if `:optional` is used in combination with `:in_umbrella` * [mix deps.get] Do not add optional dependency requirements if its parent dep was skipped * [mix deps.tree] Add `--umbrella-only` to `mix deps.tree` + * [mix profile.tprof] Add a new profiler, available on Erlang/OTP 27+, which can measure count, time, and heap usage * [mix test] Add `mix test --breakpoints` that sets up a breakpoint before each test that will run * [mix test] Add `mix test --repeat-until-failure` to rerun tests until a failure occurs * [mix test] Add `mix test --slowest-modules` to print slowest modules based on all of the tests they hold + * [mix test] Generate cover HTML files in parallel + ### 2. Bug fixes @@ -162,6 +138,8 @@ Process.send_after(pid, :wake_up, to_timeout(hour: 1)) * [Kernel] Do not expand code in `quote bind_quoted: ...` twice * [Kernel] Respect `:line` property when `:file` is given as option to `quote` * [Kernel] Do not crash on `Macro.escape/2` when passing a quote triplet without valid meta + * [Kernel] Avoid double tracing events when capturing a function + * [Kernel] Fix a bug where captured arguments would conflict when a capture included a macro that also used captures * [Module] Return default value in `Module.get_attribute/3` for persisted attributes which have not yet been written to #### IEx @@ -178,6 +156,11 @@ Process.send_after(pid, :wake_up, to_timeout(hour: 1)) * [GenServer] Deprecate `c:GenServer.format_status/2` callback to align with Erlang/OTP 25+ +#### Mix + + * [mix profile.cprof] Deprecated in favor of the new `mix profile.tprof` + * [mix profile.eprof] Deprecated in favor of the new `mix profile.tprof` + ### 4. Hard deprecations #### Elixir diff --git a/VERSION b/VERSION index b91f9c7f4d4..092afa15df4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.17.0-rc.1 +1.17.0 diff --git a/bin/elixir b/bin/elixir index 846eed2e16c..4604b23ee9d 100755 --- a/bin/elixir +++ b/bin/elixir @@ -1,7 +1,7 @@ #!/bin/sh set -e -ELIXIR_VERSION=1.17.0-rc.1 +ELIXIR_VERSION=1.17.0 if [ $# -eq 0 ] || { [ $# -eq 1 ] && { [ "$1" = "--help" ] || [ "$1" = "-h" ]; }; }; then cat <&2 diff --git a/bin/elixir.bat b/bin/elixir.bat index 638574870e3..bc7ceaa8811 100644 --- a/bin/elixir.bat +++ b/bin/elixir.bat @@ -1,6 +1,6 @@ @echo off -set ELIXIR_VERSION=1.17.0-rc.1 +set ELIXIR_VERSION=1.17.0 if ""%1""=="""" if ""%2""=="""" goto documentation if /I ""%1""==""--help"" if ""%2""=="""" goto documentation