This program is tentative and subject to change.
Immutability is common in the programming mainstream: deep immutability is the default in functional languages while imperative languages typically provide opt-in support for shallow immutability, usually enforced through static checking.
Python is a dynamic imperative language where mutability is inherent: not only are most objects mutable, but programs themselves—modules, classes, functions—are represented by mutable objects at run-time, and libraries routinely rely on this mutability. This makes adding immutability to Python a significant challenge.
This paper presents the design and implementation of deep immutability for Python. Our primary motivation is to permit multiple sub-interpreters to directly share object references, which currently requires costly serialisation. Sharing via immutability introduces a soundness challenge, as a violation could corrupt the interpreter's state.
We identify numerous challenges that stem from decades of design decisions that did not anticipate immutability, and show how they can be overcome through two complementary techniques: detachment, which severs run-time links that would cause immutability to propagate too widely, and freezability, which gives objects run-time control over whether and how they may become immutable. Together, these principles form a general design pattern for deep immutability in dynamic languages. We validate our design with an implementation on CPython 3.15 that is backwards-compatible with existing programs and enables direct, zero-copy sharing of immutable objects across sub-interpreters.
This program is tentative and subject to change.
Fri 19 JunDisplayed time zone: Mountain Time (US & Canada) change
15:50 - 17:10 | |||
15:50 20mTalk | Revisiting Partial Tracing for Safe, Efficient, and Concurrent Garbage Collection in Unmanaged Languages PLDI Research Papers DOI Pre-print | ||
16:10 20mTalk | Dynamically Checked Deep Immutability in Python PLDI Research Papers Fridtjof Stoldt Uppsala University, Sylvan Clebsch Microsoft Azure Research, Matthew A. Johnson Microsoft Azure Research, Matthew J. Parkinson Microsoft Azure Research, Tobias Wrigstad Uppsala University DOI | ||
16:30 20mTalk | FlexHeap: Dynamic I/O-Aware Heap Resizing for Managed Applications PLDI Research Papers Iacovos G. Kolokasis Foundation for Research and Technology Hellas; University of Crete, Shoaib Akram Australian National University, Foivos Zakkak Red Hat, Polyvios Pratikakis Foundation for Research and Technology Hellas; University of Crete, Angelos Bilas Foundation for Research and Technology Hellas; University of Crete DOI | ||
16:50 20mTalk | Virtualizing Continuations PLDI Research Papers Cong Ma University of Waterloo, Jonghyun Jung University of Waterloo, Yizhou Zhang University of Waterloo DOI | ||