E

Elixir Blog

E
Elixir Blog Languages v1.20

Elixir v1.20 released: now a gradually typed language

In 2022, we announced the effort to add set-theoretic types to Elixir. In June 2023, we published an award winning paper on Elixir’s type system design and said our work was transitioning from research to development. With Elixir v1.20, we have completed our first development milestone which is to perform type inference and gradually type check every Elixir program, without introducing type annota…

E
Elixir Blog Languages

Lazy BDDs with eager literal differences

In a previous article, we discussed how we optimized intersections in Elixir set-theoretic types to improve performance. In a nutshell, lazy BDDs allow us to represent set-theoretic operations at any depth. And while this is useful in many cases, they offer a downside when it comes to intersections. For example, take this type: (%Foo{} or %Bar{} or %Baz{} or %Bat{}) and %Bar{} While we could store…

E
Elixir Blog Languages

Lazy BDDs with eager literal intersections

In a previous article, we discussed how Elixir changed its set-theoretic types representation from Disjunctive Normal Forms (DNFs) to Lazy Binary Decision Diagrams (Lazy BDDs). In a nutshell, DNFs allow us to represent unions, intersections, and negations as a flat data structure: (c1 and not d1) or (c2 and not d2) or (c3 and not d3) or ... This meant that any operation between complex types was i…

E
Elixir Blog Languages

Type inference of all constructs and the next 15 months

Today we celebrate 15 years since Elixir’s first commit! To mark the occasion, we are glad to announce the first release candidate for Elixir v1.20, which performs type inference of all language constructs, with increasing precision. In this blog post, we will break down exactly what this means, and what to expect in the short and medium term of the language evolution (roughly the next 15 months).…

E
Elixir Blog Languages

Lazier Binary Decision Diagrams (BDDs) for set-theoretic types

The Elixir team and the CNRS are working on a set-theoretic type system for Elixir which, simply put, is a type-system powered by unions, intersections, and negations. As part of the implementation of said type systems, we need an efficient way of representing said operations. This article discusses the existing approaches found in theory and practice, as well as the improvements we have introduce…

E
Elixir Blog Languages v1.19

Elixir v1.19 released: enhanced type checking and up to 4x faster compilation for large projects

Elixir v1.19 brings further improvements to the type system and compilation times, allowing us to find more bugs, faster. Type system improvements This release improves the type system by adding type inference of anonymous functions and type checking of protocols. These enhancements seem simple on the surface but required us to go beyond existing literature by extending current theory and developi…

E
Elixir Blog Languages

Interoperability in 2025: beyond the Erlang VM

The Erlang Virtual Machine has, historically, provided three main options for interoperability with other languages and ecosystems, with different degrees of isolation: NIFs (Native Implemented Functions) integrate with third party code in the same memory space via C bindings. This translates to low overhead and best performance but it also means faulty code can bring the whole Virtual Machine dow…

E
Elixir Blog Languages

Take part in the Global Elixir Meetups week

We are launching Global Elixir Meetups - a week where the Elixir community organizes meetups around the world to meet, learn from each other, and discuss everything related to Elixir and the Erlang VM.

E
Elixir Blog Languages

Take part in the Global Elixir Meetups week

Update: Our first Global Elixir Meetups was a success with 46 meetups spread across six continents. Thanks to everyone who organized and attended. See you next time! We are launching Global Elixir Meetups (GEMs) - a week where the Elixir community organizes meetups around the world to meet and learn from each other. Our goal is to spark local communities, old and new, to get together and discuss e…

E
Elixir Blog Languages

Elixir Outreach stipend for speakers and trainers

Dashbit, Oban, and the Erlang Ecosystem Foundation (EEF) are glad to announce a new program, which we will trial over the next 12 months, called “Elixir Outreach”. Our goal is to provide funds to community members who want to present Elixir and Erlang to other ecosystems and communities, while respecting our joint values. In a nutshell: We will provide funds to community members to speak in-person…

E
Elixir Blog Languages

Cyanview: Coordinating Super Bowl's visual fidelity with Elixir

How do you coordinate visual fidelity across two hundred cameras for a live event like the Super Bowl? The answer is: by using the craft of camera shading, which involves adjusting each camera to ensure they match up in color, exposure and various other visual aspects. The goal is to turn the live event broadcast into a cohesive and consistent experience. For every angle used, you want the same gr…

E
Elixir Blog Languages

Announcing Elixir OpenChain Certification

We are pleased to share that the Elixir project now complies with OpenChain (ISO/IEC 5230), an international standard for open source license compliance. This step aligns with broader efforts to meet industry standards for supply chain and cybersecurity best practices. “Today’s announcement around Elixir’s conformance represents another significant example of community maturity,” says Shane Coughl…

E
Elixir Blog Languages

Remote: growing from zero to unicorn with Elixir

Welcome to our series of case studies about companies using Elixir in production. Remote is the everywhere employment platform enabling companies to find, hire, manage, and pay people anywhere across the world. Founded in 2019, they reached unicorn status in just over two years and have continued their rapid growth trajectory since. Since day zero, Elixir has been their primary technology. Current…

E
Elixir Blog Languages v1.18

Elixir v1.18 released: type checking of calls, LSP listeners, built-in JSON, and more

Elixir v1.18 is an impressive release with improvements across the two main efforts happening within the Elixir ecosystem right now: set-theoretic types and language servers. It also comes with built-in JSON support and adds new capabilities to its unit testing library. Let’s go over each of those in detail. Type inference of patterns and return types There are several updates in the typing depart…

E
Elixir Blog Languages

Typing lists and tuples in Elixir

We have been working on a type system for the Elixir programming language. The type system provides sound gradual typing: it can safely interface static and dynamic code, and if the program type checks, it will not produce type errors at runtime. It is important to emphasize type errors. The type systems used at scale today do not guarantee the absense of any runtime errors, but only typing ones.…

E
Elixir Blog Languages

Announcing the official Elixir Language Server team

Update: the new language server is called Expert and is currently available in alpha as open source. Companies wanting to directly sponsor work on Expert, please reach out to Dan Janowski from the Erlang Ecosystem Foundation, which has kindly stepped in to manage and bring visibility into the project sponsorships. I am glad to welcome Elixir’s official Language Server team, formed by (in alphabeti…