This Week in Dart - Issue 3
Hello fellow Dartisans! Welcome to the fourth issue of This Week in Dart! This Week in Dart's aim is to be a useful collection of changes and news from across the Dart ecosystem and its surrounding community.
To contribute to this and future issues, feel free to contribute on GitHub or suggest content for next week on GitHub discussions.
To discuss this week's issue, feel free to join us on the Unofficial Dart Community Discord in the #this-week-in-dart
channel.
Announcements
It was brought to our attention by a Twitter post from @csells that Compiler Explorer by Matt Godbolt now supports compiling Dart code and showing the underlying assembly.
The support was initially added by Michael Debertol in commit 3f695c9 and supports some of the most recent releases of Dart, including those with and without null safety.
While not everyone needs to view the underlying assembly of their Dart code, and you could already do so locally, this addition greatly lowers the barrier to further exploration. Seeing how your code is compiled can help improve your understanding of the code and the Dart compiler itself, enabling you to potentially identify new functional or performance issues with either.
Community updates
Discussions
- Flutter Layout spends 50% of its time in "File backed page in"
- runtimeType is too expensive
- Process hangs if ReceivePort.close not called
Learning materials
- All About Using Regular Expressions (RegExp) in Dart/Flutter
- Basic and advanced networking in Dart and Flutter
- A simple Service Locator for Dart and Flutter projects
- Learn Dart Programming (by Codemy)
- Higher-Order Functions & Recursion in Dart [Functional Programming — Part 5]
- Write BETTER code with Dart 2.17 (Included in Flutter 3)
- Dart Programming – List
- Dart Tutorials (by Flutter Teacher)
Project releases
- package:dartbag was released
A grab-bag of miscellaneous, lightweight utility code for Dart. - package:dart_frog was released
A fast, minimalistic backend framework for Dart. - package:cities was released
A dataset containing over 2 million real cities that can be used by benchmarks or demos. - package:cached was released
Generators for cache mechanisms for Dart classes. - package:dfp was released
A library for typed functional programming in Dart, inspired by Rust.
Project updates
- package:ffi v2.0.0 was released
- package:stash v4.1.0 was released
- package:toml v0.13.0 was released
- package:jugger_generator v2.3.0 was released
- package:win32 v2.7.0 was released
- package:screwdriver v3.0.0 was released
- package:uploadcare_client v6.0.0 was released
- package:equations v4.0.0 was released
Dart SDK updates
24 unique authors have contributed 79 commits to the Dart SDK in the past week.
The following are some handpicked, interesting changes:
- Turn on the experimental feature inference-update-1
- [analysis_server] Handle navigation for "part of"s using URIs
- [vm, compiler] Implement Smi_bitLength intrinsic on RV
- [vm, compiler] Make more use of the zero register on ARM64 and RV
- Issue 49097. Resolve constants in enhanced enum constructors/methods
- [vm, compiler] Prune dictionaries to only contain elements needed at runtime
- Suggest static fields/getters
- Add new diagnostic documentation
- Issue 48004. Report when null-aware operator is used on type
Keep in mind, none of these changes are guaranteed to eventually land in a stable release.
Language updates and discussion
Work and discussion around the potential of adding patterns and records to Dart continues.
The most recent development has been a change to the pattern proposal's named field shorthand syntax to infer the field name instead of inferring the variable subpattern. See the Change named field shorthand syntax pull request on GitHub to review the proposed changes and provide feedback.
To learn more about and contribute to discussion of current and future changes to the Dart language, visit the Dart language repository.
Package of the week
The package of the week is dart_frog!
package:dart_frog
is a fast, minimalistic backend framework for Dart developed by Very Good Ventures.
According to their documentation:
Dart Frog is built on top of shelf and mason and is inspired by many tools including remix.run, next.js, and express.js.
The goal of Dart Frog is to help developers effectively build backends in Dart. Currently, Dart Frog is focused on optimizing the process of building backends which aggregate, compose, and normalize data from multiple sources.
Dart Frog provides a simple core with a small API surface area in order to reduce the learning curve and ramp-up time for developers. In addition, Dart Frog is intended to help Flutter/Dart developers maximize their productivity by having a unified tech stack that enables sharing tooling, models, and more!
The release of dart_frog and its corresponding packages is super exciting and marks the continued progress that the Dart ecosystem and community are making to again expand Dart beyond Flutter, particularly in the server space.
Dart's package ecosystem is growing fast, and we want to help foster that growth. If you know of any great open source projects, let us know by suggesting a package on GitHub discussions.
Upcoming events
Check the Flutter Meetup Network and the Dart Language tag on Meetup to find an event near you or online and connect with other Dart developers!
Let us know about other future events on the events discussion board.
Quotes and notes
Share quotes and comments you see and hear about Dart on our quotes discussion board for future inclusion!
Dart jobs
The following are some jobs that will provide you the opportunity to use or even build Dart.
If you know of any jobs which use or are related to Dart, let us know in the Job postings for Dart discussion board.
- The Dart and Flutter teams have job openings across a wide variety of roles. See Flutter and Dart team job openings for more information.