Blogs (28) >>
ECOOP 2016
Sun 17 - Fri 22 July 2016 Rome, Italy
Wed 20 Jul 2016 13:45 - 14:10 at Auditorium Loyola - Session 2 Chair(s): James Noble
The ability to specify immutability in a programming language is a powerful tool for developers, enabling them to better understand and more safely transform their code without fearing unintended changes to program state. The C++ programming language allows developers to specify a form of immutability using the `const` keyword. In this work, we characterize the meaning of the C++ `const` qualifier and present the ConstSanitizer tool, which dynamically verifies a stricter form of immutability than that defined in C++: it identifies `const` uses that are either not consistent with transitive immutability, that write to mutable fields, or that write to formerly-`const` objects whose const`-ness has been cast away.

We evaluate a set of 7 C++ benchmark programs to find writes-through-const, establish root causes for how they fail to respect our stricter definition of immutability, and assign attributes to each write (namely: synchronized, not visible, buffer/cache, delayed initialization, and incorrect). ConstSanitizer finds 17 archetypes for writes in these programs which do not respect our version of immutability. Over half of these seem unnecessary to us. Our classification and observations of behaviour in practice contribute to the understanding of a widely-used C++ language feature.

Wed 20 Jul

ecoop-2016-papers
13:45 - 15:00: Research Track - Session 2 at Auditorium Loyola
Chair(s): James NobleVictoria University of Wellington
ecoop-2016-papers146901510000013:45 - 14:10
Talk
Jonathan EyolfsonUniversity of Waterloo, Patrick LamUniversity of Waterloo, Canada
Link to publication DOI Pre-print Media Attached
ecoop-2016-papers146901660000014:10 - 14:35
Talk
Yossi GilIsrael Institute of Technology, Tomer LevyTechnion – Israel Institute of Technology
Link to publication DOI
ecoop-2016-papers146901810000014:35 - 15:00
Talk
Link to publication DOI Media Attached