Elixir

Elixir

Elixir Core Team

This release includes initial support for Erlang/OTP 28, for those who want to try it out. In such cases, you may use Elixir v1.18.4 precompiled for Erlang/OTP 27, as it is binary compatible with Erlang/OTP 28. Note, however, that Erlang/OTP 28 no longer allows regexes to be defined in the module body and interpolated into an attribute. If you do this:

@some_attribute ~r/foo/
def some_fun, do: @some_attribute

You must rewrite it to:

def some_fun, do: ~r/foo/

1. Enhancements

IEx

  • [IEx.Helpers] Add IEx.Helpers.process_info/1 which prints process information

Mix

  • [mix compile] Support the --no-listeners option
  • [mix local] Retry HTTP requests with disabled middlebox comp mode depending on the failure reason
  • [mix local.hex] Install Hex per OTP release
  • [mix local.rebar] Install Hex per OTP release
  • [mix run] Support the --no-listeners option

2. Bug fixes

Elixir

  • [Kernel] Emit trace events for @on_definition callbacks
  • [Kernel] Emit trace events for @on_load callbacks
  • [Kernel] Emit trace events for super calls
  • [Kernel] Emit trace events for imported function calls
  • [Kernel] Optimize map unions to avoid building long lists
  • [Kernel] Do not crash when type checking nested bitstrings in patterns
  • [Kernel] Do not crash when non-binary bitstring is given as struct default value
  • [Kernel] Recompile regexes when escaped from module attributes for Erlang/OTP 28 compatibility
  • [Kernel] Preserve backwards compatibility in elixir_erl

Mix

  • [mix deps.get] Ensure git checkout works when there are untracked files in the dependency
  • [mix loadpaths] Do not run listeners when not checking the deps

Showing Posts 1 to 7

vkryukov

vkryukov

Congratulations!

For those of you who want to try Elixir 1.18.4 w/ OTP 28 and uses igniter package, the compilation is broken because igniter depends on GitHub - nurugger07/inflex: An Inflector library for Elixir · GitHub that uses regexps in module constants all over the place.

warmwaffles

warmwaffles

I think I made a decent fix for Inflex, now we just wait and see if upstream accepts it.

vkryukov

vkryukov

Thanks, and I already incorporated your fix into igniter, since inflex doesn’t seem to be actively maintained.

zachdaniel

zachdaniel

Creator of Ash

We’ve made a new release of igniter that does not depend on inflex. Thanks @vkryukov for the PR, igniter should be good to go with OTP 28.

10
Post #5
NickGnd

NickGnd

Hey :waving_hand:

For the curious ones, I think this is the relevant release note about this breaking change:

  • Compiled Patterns Should Not be Shared: Sharing the result of re:compile/2 across node boundaries or persisting it has never been officially supported, although it might have accidentally worked between certain previous versions. The internal format produced by re:compile/2 has changed, and will not work on older OTP versions or across nodes. Relying on this undocumented behavior must be changed to compile the regular expression on the node instance where it is intended to be used.

That’s interesting how defining regexes in the module body is so popular in the Elixir community, but it works only by “accident” :sweat_smile:.

zachdaniel

zachdaniel

Creator of Ash

Yeah in Ash we have something like this:

attribute :email, :string do
  constraints [match: ~r/@/]
end

and

validate match(:email, ~r/@/)

all of which need to change now to support functions being provided :sob:.

zachdaniel

zachdaniel

Creator of Ash

Update: future releases will support strings instead, and will warn on a regex being provided. i.e constraints match: "@", and a string being provided will be treated as a regex.

— All posts loaded —

Where Next? Top

Trending in News Top

Other Trending Topics Top

garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews