Google’s Dart Programming Language Soon Won’t Take ‘Null’ For an Answer

“When the third major release of the Dart programming language debuts in mid-2023, null values will no longer be allowed where they’re not expected,” reports the Register:

Null in this context is an assignment value indicating the absence of a value or referenced object…. Dart, an object-oriented, garbage-collected C-like language that once aspired to replace JavaScript, supported sound null safety — a way to prevent errors from accessing variables set to null — as of version 2.12. But it maintained modes for running code without null safety or with partial null safety. Dart 3 will no longer entertain those suboptimal possibilities.

“Our next release, Dart 3, completes the journey to a fully sound null safe language,” explained Michael Thomsen, product manager on Dart and Flutter, in a blog post. “As the last step of that journey, we’re removing several historical Dart language and SDK artifacts, including removing support for running without sound null safety.” Sound null safety, Thomsen explains, means that a non-nullable variable never contains a null value. Not every implementation of null safety is so certain: TypeScript, for example, is unsound — you can assign a null value to a non-null variable. C# has exceptions to its null checks. And Kotlin also has exceptions.

Dart’s transition will help catch type-related bugs at compile time, and should improve code readability, maintainability, and ahead-of-time (AOT) compilation. There’s a cost however. Sound null safety will be the only option so pubspec files — Dart package metadata — with an SDK constraint set for less than 2.12 will no longer resolve in Dart 3. According to Thomsen, about 85 percent of Flutter code (which is written in Dart) supports sound null safety at this point. Those with apps and packages in the remaining 15 percent are urged to adapt their code prior to Dart 3’s arrival….

Following the release of Dart 3, the next significant milestone for the language is likely to be support for compiling Dart code into WebAssembly (Wasm), which will allow Flutter Web apps to run as native code in browsers.

Source link


Leave a Reply

Your email address will not be published. Required fields are marked *