SPLASH 2021
Sun 17 - Fri 22 October 2021 Chicago, Illinois, United States
Sun 17 Oct 2021 11:10 - 11:30 at Zurich E - Session 2 Chair(s): Sébastien Doeraene

Objects under initialization are fragile: some of their fields are not
yet initialized. Consequently, accessing those uninitialized fields
directly or indirectly may result in program crashes or abnormal
behaviors at runtime.

A newly created object goes through several states during its
initialization, beginning with all fields being empty until all of
them are filled. However, ensuring initialization safety statically,
without manual annotation of initialization states in the source code,
is a challenge, due to \emph{aliasing}, \emph{virtual method calls}
and \emph{typestate polymorphism}.

In this work, we introduce a novel analysis based on abstract
interpreters to ensure initialization safety. Compared to the previous
approaches, our analysis is simpler and easier to extend, and it does
not require any user annotations. The analysis is inter-procedural,
context-sensitive and flow-insensitive, yet it has good performance
thanks to \emph{local reasoning} and \emph{heap monotonicity}.

Sun 17 Oct

Displayed time zone: Central Time (US & Canada) change

10:50 - 12:10
Session 2Scala at Zurich E
Chair(s): Sébastien Doeraene EPFL, Switzerland
10:50
20m
Full-paper
Implementing Path-Dependent GADT Reasoning for Scala 3
Scala
Yichen Xu Beijing University of Posts and Telecommunications, Aleksander Boruch-Gruszecki EPFL, Lionel Parreaux Hong Kong University of Science and Technology
DOI
11:10
20m
Full-paper
Safe Object Initialization, Abstractly
Scala
Fengyun Liu Oracle Labs, Ondřej Lhoták University of Waterloo, Enze Xing University of Waterloo, Nguyen Cao Pham University of Waterloo
DOI