ancatrusca

ancatrusca

BEAM There, Done That with Annette Bieniusa & Guillaume Duboc - Typing Erlang & Elixir After 30 Years

The type system landing in Elixir 1.20 has been discussed in fragments across a lot of threads. A recent BEAM There, Done That episode brings the full picture together in one place, with Guillaume Duboc (PhD from IRIF Paris, now at Dashbit) and Annette Bieniusa (professor, RPTU Germany, building a parallel etalizer for Erlang) both on the same conversation.
What’s worth knowing for Elixir developers specifically:
The system is currently in warning mode, not rejection mode. When a warning fires, the design goal is that it reflects a definite bug 90% of the time, following the same philosophy as Dialyzer. Strict rejection - where a function with a type annotation must satisfy that contract at compile time or the program doesn’t compile - is a future step, not part of the initial release.
Message typing is explicitly out of scope for now. The current system types the functional core: functions, pattern matching, unions, intersections, negations. Processes and messages are handled through the gradual dynamic escape hatch until that feature is tackled separately.
The gradual design is not like TypeScript’s any. The dynamic type is part of the set-theoretic structure from the ground up, not bolted on. That means the type checker knows how to reason about gradual types structurally, which avoids some of the awkward interactions TypeScript has with any and unknown.
Francesco’s closing frame in the episode is worth sharing: Elixir 1.20’s type system isn’t the end of a 30-year argument. It’s the first moment that argument has both the theoretical foundations and the engineering pragmatism to actually move forward together.
Try the RC and report back. Both teams explicitly want feedback on where the current warnings are useful and where they’re generating noise.

Where Next?

Popular in Podcasts Top

brainlid
In episode 57 of Thinking Elixir, we sat down with co-host Cade Ward to hear how he and his team tackled a problem of hosting live web ch...
New
brainlid
In this episode we dive into the exciting release of Elixir 1.17.0-rc.1 and other news from the community. Our main segment features an i...
New
wolf4earth
Charles Max Wood takes the lead this week. He and Adi Iyengar discuss what Top End Devs are and what people should be doing to become Top...
New
brainlid
In episode 67 of Thinking Elixir, we talk about ways we can all contribute to building a healthy Elixir community. The Elixir community i...
New
brainlid
We talk with Andrea Leopardi, Elixir core team member, author, and recent Protohacker celebrity! We wanted to learn more about his dbg wo...
New
wolf4earth
Ivan Rublev is the author of the open source library, Domo, which provides type validations for Elixir applications. He discusses the typ...
New
brainlid
We take a deeper dive with Nathan Long into IOLists in Elixir. We cover what they are, how they work, the power they have when concatenat...
New
brainlid
We go deeper on the Sobelow library, a security-focused static analysis tool for Elixir and Phoenix apps. We talk with Griffin Byatt, the...
New
brainlid
Episode 120 of Thinking Elixir. Localizing and personalizing an application is separate from the language used in the interface. Kip Cole...
New
brainlid
In episode 109 of Thinking Elixir, we talk about a new library in the Nx ecosystem under active development called NxSignal by Paulo Vale...
New

Other popular topics Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29603 241
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
johnnyicon
Hi all, I’ve just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage. I’m trying to use Postgres...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
AstonJ
We’ve put together this wiki for Phoenix LiveView - please feel free to add any info you feel is worth including. What is Phoenix LiveV...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement