commit | 5f75bb8ba25c963664d1d4be9cd07fd4c7141fac | [log] [tgz] |
---|---|---|
author | Brian Wilkerson <brianwilkerson@google.com> | Thu May 15 10:12:20 2025 -0700 |
committer | Commit Queue <dart-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu May 15 10:12:20 2025 -0700 |
tree | dca05ecc1ba6a7c515183b7e063a1e9dfb9ab94f | |
parent | e6784e05800509b7407061815813bd4665bded3a [diff] |
Replace change builder copying with a transactional model Copying change builders in order to enable reverting changes from a single correction producer when there's an exception is expensive. This CL replaces that implementation with a transactional model. Clients are not required to start a transaction (that happens automatically), but are required to signal the end of a transaction by invoking either `commit` or `revert`. (Actually, `commit` is assumed if neither method is invoked before computing the `SourceChange`.) There is some information in the Dart file edit builder related to imports that isn't correctly handled. The reason for this is that too much of the import computation is done up-front. I don't think this will be a problem in practice (or at least not often), but we should come back at some point to change the implementation so that we retain abstract data longer and perform more processing at the very end (where we'll have complete information and probably be able to do a better job anyway). This CL improved the performance of the benchmark that adds and applies fixes for 10,000 lint violations. Before it took an average of 11216.0 ms. After it took an average of 4200.2 ms. Which is about a 62% improvement. Change-Id: I12710606455a04e34a82308ede5d9fba1c68b972 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/428060 Reviewed-by: Samuel Rawlins <srawlins@google.com> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Dart is:
Approachable: Develop with a strongly typed programming language that is consistent, concise, and offers modern language features like null safety and patterns.
Portable: Compile to ARM, x64, or RISC-V machine code for mobile, desktop, and backend. Compile to JavaScript or WebAssembly for the web.
Productive: Make changes iteratively: use hot reload to see the result instantly in your running app. Diagnose app issues using DevTools.
Dart's flexible compiler technology lets you run Dart code in different ways, depending on your target platform and goals:
Dart Native: For programs targeting devices (mobile, desktop, server, and more), Dart Native includes both a Dart VM with JIT (just-in-time) compilation and an AOT (ahead-of-time) compiler for producing machine code.
Dart Web: For programs targeting the web, Dart Web includes both a development time compiler (dartdevc) and a production time compiler (dart2js).
Dart is free and open source.
See LICENSE and PATENT_GRANT.
Visit dart.dev to learn more about the language, tools, and to find codelabs.
Browse pub.dev for more packages and libraries contributed by the community and the Dart team.
Our API reference documentation is published at api.dart.dev, based on the stable release. (We also publish docs from our beta and dev channels, as well as from the primary development branch).
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents in our repo at docs.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.
Future plans for Dart are included in the combined Dart and Flutter roadmap on the Flutter wiki.