Abstract
All object-oriented programs, but also those in C or Pascal as soon as they use pointers, are subject to the risk of run-time crash due to “null pointer dereferencing”. Until recently this was the case even in statically typed languages. Tony Hoare has called this problem his “billion-dollar mistake”. In the type system of ISO-standard Eiffel, the risk no longer exists: void safety (the absence of null pointer dereferencing) has become a property guaranteed by the type system and enforced by the compiler. The mechanism is fully implemented and major libraries and applications have been made void-safe. This presentation describes the principles of Eiffel’s void safety, their implementation and the lessons gained.
Similar content being viewed by others
References
Barnett, M., Leino, R., Schulte, W.: The Spec# Programming System; CASSIS 2004, Lecture Notes in Computer Science 3362, Springer, Heidelberg (2004).
Chambers, C. et al.: Papers on the Self language at research.sun.com/self/papers/papers.html.
Eiffel community: Void safety migration guide, at dev.eiffel.com/Void-Safe_Library_Status.
Fähndrich, M., Leino, R.: Declaring and Checking Non-null Types in an Object-Oriented Language; in OOPSLA 2003, SIGPLAN Notices, vol. 38, no. 11, pp. 302–312. ACM, New York (November 2003).
ECMA Technical Group TG49-TG4 (Eiffel) of ECMA Technical Committee 49 (Programming Languages): Standard ECMA-367 and ISO/IEC 25436:2006, Eiffel Analysis, Design and Programming Language, 2nd edition. ECMA International and International Standards Organization, Geneva (June 2006).
Hoare, C.A.R.: Null References: The Billion Dollar Mistake, abstract of talk at QCon London, 9–12 March 2009, at qconlondon.com/london-2009/presentation/Null + References: + The + Billion + Dollar + Mistake.
Hoare, C.A.R., Misra, J.: In: Meyer, B., Woodcock, J. (eds.) Verified Software: Theories, Tools, Experiments, Vision of a Grand Challenge Project, pp. 1–18. VSTTE 2005. Lecture Notes in Computer Science 4171. Springer, Heidelberg (2008).
Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice Hall, Upper Saddle River, NJ (1997).
Meyer, B.: In: Davies, J., Roscoe, B., Woodcock, J. (eds.) Principles of Language Design and Evolution, in Millenial Perspectives in Computer Science (Proceedings of the 1999 Oxford-Microsoft Symposium in Honour of Sir Tony Hoare), pp. 229–246. Cornerstones of Computing. Palgrave, Basingstoke-New York (2000).
Meyer, B.: In: Black, A. (ed.) Attached Types and Their Application to Three Open Problems of Object-Oriented Programming, pp. 1–32. In ECOOP 2005 (Proceedings of European Conference on Object-Oriented Programming, Edinburgh, 25–29 July 2005). Lecture Notes in Computer Science 3586. Springer, Heidelberg (2005).
SCOOP concurrency mechanism, see references at se.ethz.ch/research/scoop.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer London
About this chapter
Cite this chapter
Meyer, B., Kogtenkov, A., Stapf, E. (2010). Avoid a Void: The Eradication of Null Dereferencing. In: Roscoe, A., Jones, C., Wood, K. (eds) Reflections on the Work of C.A.R. Hoare. Springer, London. https://doi.org/10.1007/978-1-84882-912-1_9
Download citation
DOI: https://doi.org/10.1007/978-1-84882-912-1_9
Published:
Publisher Name: Springer, London
Print ISBN: 978-1-84882-911-4
Online ISBN: 978-1-84882-912-1
eBook Packages: Computer ScienceComputer Science (R0)