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
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
Dart language has implemented it since its version 2.0, in August 2018 Other languages that use null-safe types by default include JetBrains'
Kotlin,
Rust, and Apple's
Swift. ==See also==