Void safety
Introduction '''Void safety''' (also known as '''null safety''') is a guarantee within an object-oriented programming language that no object references will have ''null'' or ''void'' values.In object-oriented languages, access to objects is achieved through references (or, equivalently, pointers). A typical call is of the form: x.f(a, ...)where ''f'' denotes an operation and ''x'' denotes a reference to some object. At execution time, however, a reference can be ''void'' (or ''null''). In such cases, the call above will be a '''void call''', leading to a run-time exception, often resulting in abnormal termination of the program.Void safety is a static (compile-time) guarantee that a void call will never arise.
History In a 2009 talk, Tony Hoare traced the invention of the null pointer to his design of the ALGOL W language and called it a "mistake":Bertrand Meyer introduced the term "void safety".
In programming languages An early attempt to guarantee void safety was the design of the Self programming language.The Eiffel language is void-safe according to its ISO-ECMA standard; the void-safety mechanism is implemented in EiffelStudio starting with  version 6.1 and using a modern syntax starting with  version 6.4.The Spec# language, a research language from Microsoft Research, has a notion of "non-nullable type" addressing void safety.The F# language, a functional-first language from Microsoft Research running on .NET framework, is void-safe except when interoperating with other .NET languages.===Null safety based in union types===Since 2011 several languages support union types and intersection types, which can be used to detect possible null pointers at compiling time, using a special class Null of which the value null is its unique instance.The null safety based in types appeared first in the Ceylon, followed soon by TypeScript.The C# language implements compile-time null safety check since version 8.However, to stay compatible with older versions of the language, the feature is opt-in on a per project or per file basis.The Google's Dart language implements it since its version 2.0, in August 2018Other languages that use null-safe types by default include JetBrains' Kotlin, Rust, and Apple's Swift.
See also *Nullable type*Option type*Safe navigation operator
References