Guard Analysis and Safe Erasure Gradual Typing: a Type System for Elixir

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Castagna, Giuseppe, Duboc, Guillaume
Formato: Preprint
Publicado: 2024
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866914063066333184
author Castagna, Giuseppe
Duboc, Guillaume
author_facet Castagna, Giuseppe
Duboc, Guillaume
contents We formalize a new type system for Elixir, a dynamically typed functional programming language of growing popularity that runs on the Erlang virtual machine. Our system combines gradual typing with semantic subtyping to enable precise, sound, and practical static type analysis, without requiring any changes to Elixir's compilation pipeline or runtime. Type soundness is ensured by leveraging runtime checks -- both implicit, from the Erlang VM, and explicit, via developer-written guards. Central to our approach are two key innovations: the notion of "strong functions", which can be assigned precise types even when applied to inputs that may fall outside their intended domain; and a fine-grained analysis of guards that enables accurate type refinement for case expressions and guarded function definitions. While type information is erased before execution and not used by the compiler, our "safe erasure" gradual typing strategy maintains soundness and expressiveness without compromising compatibility or performance. This work lays the theoretical foundation for Elixir's new type system, outlines its integration into recent versions of the language, and demonstrates its effectiveness on large-scale industrial codebases.
format Preprint
id arxiv_https___arxiv_org_abs_2408_14345
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Guard Analysis and Safe Erasure Gradual Typing: a Type System for Elixir
Castagna, Giuseppe
Duboc, Guillaume
Programming Languages
Logic in Computer Science
We formalize a new type system for Elixir, a dynamically typed functional programming language of growing popularity that runs on the Erlang virtual machine. Our system combines gradual typing with semantic subtyping to enable precise, sound, and practical static type analysis, without requiring any changes to Elixir's compilation pipeline or runtime. Type soundness is ensured by leveraging runtime checks -- both implicit, from the Erlang VM, and explicit, via developer-written guards. Central to our approach are two key innovations: the notion of "strong functions", which can be assigned precise types even when applied to inputs that may fall outside their intended domain; and a fine-grained analysis of guards that enables accurate type refinement for case expressions and guarded function definitions. While type information is erased before execution and not used by the compiler, our "safe erasure" gradual typing strategy maintains soundness and expressiveness without compromising compatibility or performance. This work lays the theoretical foundation for Elixir's new type system, outlines its integration into recent versions of the language, and demonstrates its effectiveness on large-scale industrial codebases.
title Guard Analysis and Safe Erasure Gradual Typing: a Type System for Elixir
topic Programming Languages
Logic in Computer Science
url https://arxiv.org/abs/2408.14345