Type stability in Julia: avoiding performance pathologies in JIT compilation

Abstract

As a scientific programming language, Julia strives for performance but also provides high-level productivity features. To avoid performance pathologies, Julia users are expected to adhere to a coding discipline that enables so-called type stability. Informally, a function is type stable if the type of the output depends only on the types of the inputs, not their values. This paper provides a formal definition of type stability as well as a stronger property of type groundedness, shows that groundedness enables compiler optimizations, and proves the compiler correct. We also perform a corpus analysis to uncover how these type-related properties manifest in practice.

Document Details

Document Type
Pub Defense Publication
Publication Date
Oct 15, 2021
Source ID
10.1145/3485527

Entities

People

  • Artem Pelenitsyn
  • Benjamin Chung
  • Jan Vitek
  • Julia Belyakova
  • Ross Tate

Organizations

  • Cornell University
  • European Research Council
  • National Science Foundation
  • Northeastern University
  • Office of Naval Research

Tags

Fields of Study

  • Computer science

Readers

  • Computational Linguistics
  • Parallel and Distributed Computing.
  • Theoretical Analysis.