commit | cddee72854b2c735148751f08eb0cc51d05854c9 | [log] [tgz] |
---|---|---|
author | Jens Johansen <jensj@google.com> | Mon May 05 01:50:25 2025 -0700 |
committer | Commit Queue <dart-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon May 05 01:50:25 2025 -0700 |
tree | c315bf98ab476957db1e39a5b8d8fccf78899cc9 | |
parent | b5e1ef4e14eeb5666bf62318390cf68840a71773 [diff] |
[analyzer] Don't find the same "fixes for all" multiple times Before this CL, if one has a file like ``` Map<String, String> foo = { "1": "1", "2": "2", "3": "3", [...] ``` with many violations of the prefer_single_quotes lint, using VSCode and selecting all would lock up the analysis server, e.g. in https://dart-review.googlesource.com/c/sdk/+/425503 I showed 400 such lines taking ~36 seconds on my machine (and 800 such lines taking ~247 seconds). This is because for each error (lint) in range (i.e. all of them) it calculates fixes for all of them. Once it's done with that it deduplicates and throws most of the data away again. This CL instead only calculates the "fixes for all" for each combination of error-type and generator, skipping lots of work, making the whole thing be much faster. In the data send to the client (VSCode in this instance) the "diagnostics" for "Convert to single quoted strings everywhere in file" contains fewer elements (only 1, vs all before), but it's unclear when (or if) this is used. Note that the "edit"s does contain all, and applying it still changes all instances. I now get these runtimes for the select all case (via the benchmark) (with cpu governor "performance" which likely wasn't the case for the ~36 seconds and ~247 seconds above, although it doesn't matter much with these differences): 400: 0.736783 800: 1.502978 1600: 3.704314 3200: 10.701988 Change-Id: I2b69a77525c0e1ed720c2b3d1de70ccc1fc5e94c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/425861 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Jens Johansen <jensj@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.