Affiliation:
1. Inria, France / Université de Paris-Cité, France
2. Oracle Labs, Switzerland
Abstract
An object under initialization does not fulfill its class specification yet and can be unsafe to
use as it may have uninitialized fields. It can sometimes be useful to call methods on such a
partially initialized object in order to compute a complex initial value, or to let the object
escape its constructor in order to create mutually recursive objects. However, inadvertent usage
of uninitialized fields can lead to run-time crashes. Those subtle programming errors are not
statically detected by most modern compilers.
While many other features of object-oriented programming languages have been thoroughly studied
over the years, object initialization lacks a simple, systematic, and principled
treatment. Building on the insights of previous work, we identify a set of four core principles
for safe initialization: monotonicity, authority, stackability, and scopability. We capture the
essence of the principles with a minimal calculus, Celsius, and show that the principles give rise
to a practical initialization system that strikes a balance between expressiveness and
simplicity. The meta-theory of the system is entirely mechanized using the Coq proof assistant. We
believe that our approach based on well-identified core principles sheds new light on the
underlying mechanisms ensuring safety and could serve as a basis for language design when faced
with similar challenges.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference27 articles.
1. Nada Amin , Samuel Grütter , Martin Odersky , Tiark Rompf , and Sandro Stucki . 2016. The essence of dependent object types . In A List of Successes That Can Change the World . Springer , 249–272. Nada Amin, Samuel Grütter, Martin Odersky, Tiark Rompf, and Sandro Stucki. 2016. The essence of dependent object types. In A List of Successes That Can Change the World. Springer, 249–272.
2. Nada Amin and Tiark Rompf. 2017. Type soundness proofs with definitional interpreters. Pages: 666–679 Publisher: ACM Nada Amin and Tiark Rompf. 2017. Type soundness proofs with definitional interpreters. Pages: 666–679 Publisher: ACM
3. Adding Type Constructor Parameterization to Java.
4. Product lines of theorems
Cited by
2 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献