Elixir v1.17.0-rc.1 released

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
25 Likes

Everyone, please give this a try. It should be the last stop before v1.17.0 final.

24 Likes

Is livebook and itā€™s dependencies ready for Erlang 27? Iā€™m getting an error when trying to call escript.install task, see:

Running mix escript.install hex livebook --force... 
Resolving Hex dependencies...
Resolution completed in 0.61s
New:
  aws_credentials 0.1.11
  aws_signature 0.3.1
  bandit 1.1.0
  castore 1.0.7
  decimal 2.1.1
  dns_cluster 0.1.1
  earmark_parser 1.4.37
  ecto 3.10.3
  eini_beam 2.2.4
  finch 0.18.0
  hpax 0.1.2
  iso8601 1.3.3
  jason 1.4.1
  jose 1.11.6
  jsx 3.0.0
  livebook 0.12.1
  mime 2.0.5
  mint 1.6.0
  mint_web_socket 1.0.3
  nimble_options 1.1.1
  nimble_pool 1.1.0
  phoenix 1.7.10
  phoenix_ecto 4.4.2
  phoenix_html 3.3.2
  phoenix_live_dashboard 0.8.2
  phoenix_live_view 0.20.2
  phoenix_pubsub 2.1.3
  phoenix_template 1.0.4
  plug 1.16.0
  plug_crypto 2.0.0
  protobuf 0.8.0
  req 0.4.4
  telemetry 1.2.1
  telemetry_metrics 0.6.1
  telemetry_poller 1.0.0
  thousand_island 1.3.5
  websock 0.5.3
  websock_adapter 0.5.6
* Getting livebook (Hex package)
* Getting aws_credentials (Hex package)
* Getting aws_signature (Hex package)
* Getting bandit (Hex package)
* Getting dns_cluster (Hex package)
* Getting earmark_parser (Hex package)
* Getting ecto (Hex package)
* Getting jason (Hex package)
* Getting jose (Hex package)
* Getting mint_web_socket (Hex package)
* Getting phoenix (Hex package)
* Getting phoenix_ecto (Hex package)
* Getting phoenix_html (Hex package)
* Getting phoenix_live_dashboard (Hex package)
* Getting phoenix_live_view (Hex package)
* Getting plug_crypto (Hex package)
* Getting protobuf (Hex package)
* Getting req (Hex package)
* Getting telemetry_metrics (Hex package)
* Getting telemetry_poller (Hex package)
* Getting telemetry (Hex package)
* Getting finch (Hex package)
* Getting mime (Hex package)
* Getting castore (Hex package)
* Getting mint (Hex package)
* Getting nimble_options (Hex package)
* Getting nimble_pool (Hex package)
* Getting hpax (Hex package)
* Getting phoenix_template (Hex package)
* Getting plug (Hex package)
* Getting phoenix_pubsub (Hex package)
* Getting websock_adapter (Hex package)
* Getting websock (Hex package)
* Getting decimal (Hex package)
* Getting thousand_island (Hex package)
* Getting eini (Hex package)
* Getting iso8601 (Hex package)
* Getting jsx (Hex package)
Resolving Hex dependencies...
Resolution completed in 0.061s
Unchanged:
  aws_credentials 0.1.11
  aws_signature 0.3.1
  bandit 1.1.0
  castore 1.0.7
  decimal 2.1.1
  dns_cluster 0.1.1
  earmark_parser 1.4.37
  ecto 3.10.3
  eini_beam 2.2.4
  finch 0.18.0
  hpax 0.1.2
  iso8601 1.3.3
  jason 1.4.1
  jose 1.11.6
  jsx 3.0.0
  mime 2.0.5
  mint 1.6.0
  mint_web_socket 1.0.3
  nimble_options 1.1.1
  nimble_pool 1.1.0
  phoenix 1.7.10
  phoenix_ecto 4.4.2
  phoenix_html 3.3.2
  phoenix_live_dashboard 0.8.2
  phoenix_live_view 0.20.2
  phoenix_pubsub 2.1.3
  phoenix_template 1.0.4
  plug 1.16.0
  plug_crypto 2.0.0
  protobuf 0.8.0
  req 0.4.4
  telemetry 1.2.1
  telemetry_metrics 0.6.1
  telemetry_poller 1.0.0
  thousand_island 1.3.5
  websock 0.5.3
  websock_adapter 0.5.6
All dependencies are up to date
==> earmark_parser
Compiling 2 files (.xrl)
Compiling 1 file (.yrl)
Compiling 3 files (.erl)
Compiling 46 files (.ex)
Generated earmark_parser app
===> Analyzing applications...
===> Compiling aws_signature
==> decimal
Compiling 4 files (.ex)
Generated decimal app
==> mime
Compiling 1 file (.ex)
Generated mime app
===> Analyzing applications...
===> Compiling iso8601
===> Compiling src/iso8601.erl failed
src/iso8601.erl:38:16: syntax error before: '::'
src/iso8601.erl:367:18: syntax error before: 'maybe'

** (Mix) Could not compile dependency :iso8601, "$HOME/.asdf/installs/elixir/ref-v1.17.0-rc.1/.mix/elixir/1-17/rebar3 bare compile --paths /tmp/mix-local-installer-fetcher-oezejA/deps/livebook/_build/prod/lib/*/ebin" command failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile iso8601 --force", update it with "mix deps.update iso8601" or clean it with "mix deps.clean iso8601"

Thatā€™s a bug in the iso8601 package. Check out it issues tracker.

1 Like

Oh, looks like they have used naming that was not used before Erlang 27. I was worried that I messed up something with my Erlang installation. :sweat_smile:

There is almost 2 months old PR for that:

Are there plans to address ā€”warnings-as-errors failing for dependencies? That was my only issue trying to migrate to 1.17.0.

Compile deps first with deps.compile ?

ā€“warnings-as-errors does not apply to dependencies but I assume that, while your code is compiling, Absinthe code generation is emitting errors. In that case, you need to report it. Was an issue already reported?

Itā€™s already been patched (but not yet released) in Absinthe thanks to @doughsay in #1318. But this didnā€™t previously cause --warnings-as-errors to fail before. It was suggested by sabiwara that maybe this is caused by metaprogramming.

This is the only lib in my codebase that was adversely affected by 1.17. Should I report a ticket in Elixir as well?

1 Like

No support for the type syntax with $ yet, right?

It is not an Elixir bug. Because of meta-programming, the code is effectively part of your app, Elixir cannot know otherwise (unless the code was annotated - which wasnā€™t and then it requires a library patch anyway). :slight_smile:

Warnings that arises when compiling deps (not your code), does not cause --warnings-as-errors to fail.

2 Likes

Nope. Probably 3 or 4 releases ahead of us still.

Interesting, because this compiled fine before. Maybe 1.17 fixed a big that let this slide under the radar before?