Void safetyVoid 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. HistoryIn 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".[2] In programming languagesAn 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.[3] Null safety based in union typesSince 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 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.[4] The Google's Dart language implements it since its version 2.0, in August 2018[5][6] Other languages that use null-safe types by default include JetBrains' Kotlin,[7] Rust,[8] and Apple's Swift. See alsoReferences
Information related to Void safety |