Séminaire des équipes de recherche
Julia Subtyping Reconstructed
- Date : 25/09/2017
- Lieu : Inria de Paris, Salle Jacques-Louis Lions 1, bâtiment C - 10h30
- Intervenant(s) : Francesco Zappa Nardelli
Julia is a programming language designed to support the needs of the scientific community. In the five years since its release it has grown in popularity to reach over 6,000 Julia projects hosted on GitHub. Julia occupies a unique position in the design landscape, it is a dynamic language with no type system, yet it has a surprisingly rich set of types and type annotations used to specify multi method dispatch. The types that can be expressed in function signatures include parametric union types, covariant tuple types, parametric user-defined types with single inheritance, invariant type application, and finally types and values can be reified to appear in signatures. Subtyping plays a central role in Julia as it is used to determine the order of applicability of variants of a function, and to ascertain if a particular tuple of values matches the type specification of the function. While subtyping is based on simple intuitions, designing an algorithm to compute the subtype relation is surprisingly complex.
In this talk I will offer empirical evidence that users appeal to all the features provided by Julia and I will present a specification of the Julia subtyping algorithm. The specification is validated by a reference implementation tested against the subtype traces recorded while executing the regression tests bundled with Julia and 34 widely used packages from GitHub.
This is joint work with Artem Pelenytsin, Benjamin Chung, Jeff Bezanson, Jan Vitek.