Void-safe programming in Eiffel

Void-safe software development using Eiffel: introduction

When you develop software in Eiffel, you can be assured (at compile time) that your system will not attempt (at run time) to apply a feature to a void reference -- or, in the terminology of other languages such as C, "dereference a null pointer".

Throughout the history of Eiffel, new capabilities -- agents, the SCOOP concurrency mechanism and many others -- have added considerable expressive power to the language while causing minimum impact on existing software. Void-safe Eiffel is such an innovation, which instead of adding new mechanisms removes a major source of instability in programs, present in all other major languages: null-pointer dereferencing. To say that Eiffel is void-safe means that such catastrophic yet common errors simply will not occur.

There is in fact no need to speak of "void-safe Eiffel". The language is just Eiffel... and it is void-safe, just as it is statically typed. We still occasionally refer to "Void-safe Eiffel" simply because until 2005 or so Eiffel was not void-safe (it had to start somewhere), and you may still encounter older documentation that talks about "calls on void targets" (null-pointer dereferences). But in today's Eiffel such an event is impossible.

The rest of this chapter explains void safety:

  1. How is void-safety defined?
  2. What are the specific elements of the mechanism?
  3. How do these relate to Eiffel before void-safety?
  4. What do I need to know to produce standard Eiffel software?
  5. What do I need to know to convert my existing systems to be standard?
cached: 03/18/2024 2:22:07.000 PM