Aliasing is a known source of challenges in the context of imperative object-oriented languages, which have led to important advances in type systems for aliasing control. However, their large-scale adoption has turned out to be a surprisingly difficult challenge. While new language designs show promise, they do not address the need of aliasing control in existing languages.
This paper presents a new approach to isolation and uniqueness in an existing, widely-used language, Scala. The approach is unique in the way it addresses some of the most important obstacles to the adoption of type system extensions for aliasing control. First, adaptation of existing code requires only a minimal set of annotations. Only a single bit of information is required per class. Surprisingly, the paper shows that this information can be provided by the object-capability discipline, widely-used in program security. We formalize our approach as a type system and prove key soundness theorems. The type system is implemented for the full Scala language, providing, for the first time, a sound integration with Scala's local type inference. Finally, we empirically evaluate the conformity of existing Scala open-source code on a corpus of over 75,000 LOC.
Conference DayWed 2 NovDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:10
|Extensible Access Control with Authorization Contracts|
Scott MooreHarvard University, Christos DimoulasHarvard University, Robby FindlerNorthwestern University, Matthew FlattUniversity of Utah, Stephen ChongHarvard UniversityDOI
|Gentrification Gone too Far? Affordable 2nd-Class Values for Fun and (Co-)Effect|
Leo Osvald, Gregory Essertel, Xilun WuPurdue University, Lilliam I Gonzalez AlayonPurdue University, Tiark RompfPurdue University, USADOI
|Incremental Forest: A DSL for Efficiently Managing Filestores|
Jonathan DiLorenzoCornell University, Richard ZhangUniversity of Pennsylvania, Erin Menzies, Kathleen FisherTufts University, Nate FosterCornell UniversityDOI
|LaCasa: Lightweight Affinity and Object Capabilities in Scala|