This Week in Dart - Issue 11
Hello fellow Dartisans! Welcome to the eleventh 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
GitHub now supports Dart in its Advisory Database, dependency graph, as well as Dependabot alerts and Dependabot security updates. This means GitHub now has comprehensive support for monitoring and maintaining supply chain security for Dart and Flutter apps.
Supply chain security has been a recent focus of the Dart and Flutter teams, you can read more about their use of Allstar and Security scorecards and some of Flutter's work towards improving their Supply Chain Levels for Software Artifacts (SLSA).
- Partnering with GitHub on supply chain security for Dart packages
- Flutter SLSA Progress & Identity and Access Management through Infrastructure As Code
- The Dart SDK Archive now includes release dates
- GitHub’s supply chain security features now support Dart
- Flutter Linting and Linter Comparison
- Very Good Ranch: A very good game made with Flutter
- dart:io readAsBytes will crash if the file size is greater than INT_MAX on flutter windows embedder
- Equality in Dart | Decoding Flutter
- Introduction to Dart VM (updated)
- Use Local SQL with Dart Drift — The Crash Course
- ServerPod | The missing server for Flutter
- Mixin in Dart | Dart mixins | Dart Tutorial #57
- A guide to choosing Dart parameter types
- package:google_identity_services_web was released
A Dart JS-interop layer for Google Identity Services, Google's new sign-in SDK for Web that supports multiple types of credentials.
- package:dart_prism was released
A syntax highlighting library written in Dart, ported from PrismJS.
- package:isolated_download_manager was released
File download manager based on reusable isolates with progress, cancellation, pause, and resume.
- package:dart_lame was released
Dart native bindings to LAME (MP3 encoder).
- package:irishman was released
A generic programming language interpreter, linter, formatter, and more written in Dart.
- Dart Code for VS Code v3.50.0 was released
- package:dawn v6.0.0 was released
- package:dart_nats v0.5.0 was released
- package:slang v3.1.0 was released
- package:smartstruct v1.3.0 was released
- package:custom_list v0.0.12 was released
- package:drift v2.2.0 was released
- package:stock v1.0.0 was released
- package:logging v1.1.0 was released
- package:puppeteer v2.14.0 was released
Dart SDK updates
33 unique authors have contributed 129 commits to the Dart SDK in the past week.
The following are some handpicked, interesting changes:
- [vm] Support dynamic access to record fields in JIT mode
- [vm, gc] Don't use alignment bits when verifying eliminated write barriers
- [cfe,vm] Support 'records' experiment in the sdk
- [vm/aot/tfa] Fix optimization of 'is' tests for FutureOr of nullable types
- [dart2wasm] Implement null instance tear-offs
- [dart2wasm] Refactor run_wasm.js into an ESM module that is reusable in the browser
Keep in mind, none of these changes are guaranteed to eventually land in a stable release.
Language updates and discussion
Records have been seeing extensive implementation work across all parts of the SDK over the past month, and some final touches of its language specification alongside fixes and improvements have been made as well.
One large change from the past week was the specification of how type inference and static semantics work for records, paving the way for the Dart front-end to implement type inference. You can find these changes and related feedback for the v1.14 version of the feature specification in the Static semantics for records pull request.
To learn more about records, see the Records feature specification and to contribute to the surrounding discussion check out issues with the Records tag.
To learn more about and contribute to discussion of these and other potential changes to the Dart language, visit the Dart language repository.
Package of the week
The package of the week is petitparser!
package:petitparser is a "dynamic parser framework to build efficient grammars and parsers quickly". The package aims to include ideas and techniques from scannerless parsing, parser combinators, parsing expression grammars, and packrat parsers to allow developers to model and builder grammars and parsers as objects that can be updated dynamically.
PetitParser is a great way for both beginners and experts to build grammars and parsers for any type of project, with a great and fast development cycle due to its dynamically configurable nature. Many popular projects on pub.dev use the package for their parsing needs, such as
package:equations, and many more!
To learn more about PetitParser and utilizing it to build your first parser, see it's extensive tutorial and its collection of examples.
Thanks to @felixalguzman for the suggestion!
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.
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.
- Serverpod release party | Stockholm, Sweden | 2022-10-13
Flutter Stockholm will be celebrating the 1.0 release of Serverpod. Serverpod is an open-source, scalable app server written in Dart for the Flutter community. It's been over a year in the making, and is finally ready to see the light of day!
Quotes and notes
Share quotes and comments you see and hear about Dart on our quotes discussion board for future inclusion!
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.
Very Good Ventures
- Mid-Level Flutter Engineer (Remote, Spain)
- Mid-Level Flutter Engineer (Remote, US)
- Senior Flutter Engineer (Remote, Poland)
- Senior Flutter Engineer (Remote, Spain)
- Senior Flutter Engineer (Remote, US)