660 Commits

Author SHA1 Message Date
Jens Johansen b32e313620 [vm] Introduce --script_uri_override to support Platform.script in dart run -r
If a script uses `Platform.script` running it with as `dart
<script.dart>` and `dart run <script.dart>` would give the correct
script ("<script.dart>"), but running it with `dart run -r
<script.dart>` would report a dill file in the temp directory which is
not only surprising, but also breaking and for instance running the CFEs
strong_suite.dart via `dart run -r` didn't work.

This CL introduces --script_uri_override to the VM and makes the
resident compiler setup pass it so that when running `dart run -r
<script.dart>`, even though the vm is actually launched from a dill file
that resides in temp, `Platform.script` will actually return
`<script.dart>` - and running the CFEs strong_suite.dart via `dart run
-r` now actually works.

Tested: Added pkg/dartdev/test/commands/run_test.dart and manual testing.
Change-Id: Ia65c01834485fe06af63584baf0448dd5b9ffdb4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510343
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2026-06-11 06:34:20 -07:00
Parker Lougheed 44bb92f49a [dartdev] Provide no installation feedback in dart installed
Updates `dart installed` to provide feedback if nothing is installed. If they didn't specify `--all` but there are inactive tools, provide a suggestion to specify the `--all` flag as well.

Resolves https://github.com/dart-lang/sdk/issues/61626

Change-Id: I7d68fe91a29650c113047065e673e7a1139df847
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510020
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2026-06-10 08:26:03 -07:00
Sam Rawlins c15aeb3da7 dartdev: Tidy and modernize analysis server code
This code seemed a little out of date and non-idiomatic. I used a few modern language features to help it to better comply with our team styles.

* Make declarations private if they can be.
* Make declarations final if they can be.
* Use factory constructors over static methods.
* Do not use type annotations that would be inferred.
* Use patterns for matching JSON data.
* Use extension type when appropriate.

Change-Id: Ib7ecbe51b6d8a94e56a51f84772952362c64049f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508424
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2026-06-02 09:35:48 -07:00
Simon Binder 567bf3337b [dart2wasm] Document standalone platform and include it in SDK
Given that the standalone target for dart2wasm is feature-complete now,
it makes sense to include it in released SDKs.

This adds the platform and outline files to built SDKs and exposes the
`--standalone` flag in `dart compile wasm`.
It also documents the standalone target in `pkg/dart2wasm/doc`, which
should be helpful as a starting point to use these compiled modules.

Change-Id: I5bd86e9670f03f2955e31789095dd5c462bf149e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506920
Reviewed-by: Slava Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2026-06-02 00:56:35 -07:00
Sam Rawlins 5dc37341fb dartdev: deduplicate diagonstics received from DAS
Fixes https://github.com/dart-lang/sdk/issues/63497

Change-Id: I24849a526a821584930276459a8873da25570d68
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508422
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2026-06-01 16:12:03 -07:00
Daco Harkes fa6bfb196b [dartdev] dart build cli root package
`dart:test` compiles a wrapper file that it places _outside_ all
packages defined in the `package_config.json`.

Technically, the `package_config.json` is only used to resolve the
imports that are _not_ the entry-points. So, it should be valid to
pass an entry-point outside the `package_config.json`.

However, we do need to specify what root-package to use for running
hooks. So, add a CLI option for this.

See discussion on https://github.com/dart-lang/test/pull/2660

Change-Id: I381a61490e69eb5757126b017f07779917837851
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-win-release-arm64-try,pkg-mac-release-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508122
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Jake Macdonald <jakemac@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2026-06-01 13:31:35 -07:00
Loïc Sharma 283b44e9ce Add missing space in help text for --print-dtd
Closes https://github.com/dart-lang/sdk/pull/63487

GitOrigin-RevId: c42190fcef7ca7712f35698836ecf8ed41840fa7
Change-Id: If355719e9741383666c6d046b392e2c2b4b75b96
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507820
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2026-06-01 01:03:15 -07:00
Daco Harkes 1cdc6b3f84 [dartdev] dart build cli non-bin entry point and package config
Closes: https://github.com/dart-lang/sdk/issues/63432

This is needed for being able to make `package:test` being able to
compile (individual) tests with build and link hooks.

Change-Id: Icb9c576376fd04ff0518f686c00153581067b080
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-win-release-arm64-try,pkg-mac-release-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506242
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Jake Macdonald <jakemac@google.com>
2026-05-29 12:11:50 -07:00
Ben Konyi 8d41c9b677 [dartdev] Synchronize environment variable modifications to fix getenv crash
Avoid a race condition between async setenv/unsetenv calls on the VM thread and concurrent getenv/environ reads on the main thread.

In glibc, setenv and getenv are not thread-safe against each other. VmInteropHandler.setEnvironmentVariable previously sent a message to the VM thread to call setenv/unsetenv asynchronously, while the main thread immediately proceeded to access Platform.environment or Platform.localeName (which calls getenv). This could cause a crash (SIGSEGV) in getenv.

This CL makes VmInteropHandler.setEnvironmentVariable synchronous by awaiting a reply from the VM thread before returning.

TEST=pkg/dartdev/test/environment_test.dart

Fixes https://github.com/dart-lang/sdk/issues/63460

Change-Id: Ic8211897ce26ffbdc142fa594cd397189a61f061
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506800
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Auto-Submit: Ben Konyi <bkonyi@google.com>
2026-05-29 10:26:54 -07:00
Jake Macdonald 06bdbd777f Update mcp-server command to be an alias for 'run dart_mcp_server@'
Strips the dart-lang/ai dependency from the SDK entirely, as well as the snapshot.

Bug: https://github.com/dart-lang/ai/issues/479
Change-Id: Id919c6a8fbf5fedeffb37e5181bc2fbd85adf986
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507220
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
Auto-Submit: Jake Macdonald <jakemac@google.com>
2026-05-28 12:06:25 -07:00
Daco Harkes da40aec0bb [deps] Roll dart-lang/native
Pass in the entry-points and OS to the link hook when the record_use
file is provided. So that different target OSes and different entry-
points are cached separately.

Also, commit skill to rev `native_rev` in DEPS. (The new agent
IDE ignores gemini.md that contained it and prefers using skills.)

Change-Id: Ic77e3ccd5915736081c01f8b75901f626f688f19
Cq-Include-Trybots: luci.dart.try:dart2wasm-asserts-linux-chrome-try,dart2wasm-asserts-minified-linux-d8-try,dart2wasm-linux-chrome-try,dart2wasm-linux-d8-try,dart2wasm-linux-firefox-try,dart2wasm-linux-jscm-chrome-try,dart2wasm-linux-optimized-jsc-try,pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try,dart2js-canary-linux-try,dart2js-hostasserts-linux-d8-try,dart2js-linux-chrome-try,dart2js-linux-firefox-try,dart2js-mac-chrome-try,dart2js-mac-safari-try,dart2js-minified-csp-linux-chrome-try,dart2js-minified-linux-d8-try,dart2js-unit-linux-x64-release-try,dart2js-win-chrome-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506580
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Michael Goderbauer <goderbauer@google.com>
2026-05-27 07:31:46 -07:00
Daco Harkes 70b8a7f49d [dartdev] Invoke build hooks with sanitizer argument
Makes `dart build cli --target-sanitizer` invoke build hooks with the
right sanitizer argument.

Follow up of https://dart-review.googlesource.com/c/sdk/+/504880.

TEST=pkg/dartdev/test/native_assets/build_test.dart

Change-Id: I51a042403f3da10a90a1ebc71b7ebc82207df7d7
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505680
Commit-Queue: Ben Konyi <bkonyi@google.com>
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2026-05-22 08:24:45 -07:00
Daco Harkes 6f7f338328 [dartdev] dart build cli add --target-sanitizer support
Closes: https://github.com/dart-lang/sdk/issues/63374

Does not yet add sanitizer support for build hooks:
https://github.com/dart-lang/native/issues/2497

Change-Id: I53763b94d03a9b759f226a2b45f723706a1e5934
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/504880
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2026-05-20 13:45:54 -07:00
pq 04c6612781 [analytics] propagate analytics environment variables to subtools
Updates the main `dartdev` command runner to read and propagate the unified analytics environment variables (`DASH__SUPPRESS_ANALYTICS` and `DASH__TOOL`) to all spawned isolates and child processes using the handy new `VmInteropHandler.setEnvironmentVariable` support (see: https://dart-review.googlesource.com/c/sdk/+/499300).

Fixes: https://github.com/dart-lang/sdk/issues/62876



Change-Id: Iae68790a2cf861dd01edbea81f9faf7d7529f5f2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/504321
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
2026-05-19 11:57:42 -07:00
Ben Konyi c5a57427d1 [ CLI ] Add support for modifying the environment from package:dartdev
This change makes it possible to set environment variables for the
current process from package:dartdev.

As a proof of concept, package:dartdev now sets `DART_ROOT` to the path
of the Dart SDK in the environment.

Related to https://github.com/dart-lang/sdk/issues/63210 and https://github.com/dart-lang/sdk/issues/62876

TEST=pkg/dartdev/test/environment_test.dart
Change-Id: If3a90279e99dadaba435ae3e43a752dcfda69227
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/499300
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2026-05-05 10:03:41 -07:00
Lasse R.H. Nielsen 711e50389f Remove var and final from parameters in pkg/.
Doesn't change anything in `front_end/*testcases/primary_constructors/`.
(Would have skipped any other file with `test` in its path and
an explicit language version marker, but there weren't any outside
of those `front_end` directories).

Almost no files used as test input were affected, and none testing the actual syntax changed.
The `.../nnbd/required_2.dart` test case was split into a legacy version retaining the `var`/`final` with a language marker, and a new version without the `var`/`final` cases.

The `pkg/analyzer/` tests, and any other tests that have source code
in strings, are not migrated by this CL.

Tested: No change to behavior. One test split into legacy and new.
Change-Id: I7f5aa4cc98001a9adecacd106c0b3be14f96be1c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/480542
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
2026-04-10 09:09:39 -07:00
Lasse R.H. Nielsen 56505e0575 Stop using Match.group.
The `Match.operator[]` does the same thing and is
generally recommended (and shorter).
(I want to deprecate `group` and `groups`)

Tested: Refactoring.
CoreLibraryReviewExempt: Calling equivalent function.
Change-Id: I4c758968ae622fe16b7322be1b29b05b91e7fcd9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/489021
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
2026-03-20 09:09:46 -07:00
Daco Harkes 86aa5393eb [record_use] Add flag to dart compile subcommands
Recorded uses have two use cases:
1. In link hooks by package authors.
2. In SDKs that wrap Dart standalone.

The second use case is already used for dart2js with
`--write-resources`. dart2wasm already added a `--recorded-uses` flag.
Let's add the same flag for `dart compile` subcommands.

TEST=pkg/dartdev/test/native_assets/compile_test.dart

Change-Id: Iec31b7339d244d67a35cb9a072dff43ddc3983fa
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/488461
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2026-03-17 09:59:38 -07:00
Paul Berry 7465a0b6a7 Bump eng packages to language version 3.12.
This CL is part of an effort to bump the SDK requirement to `3.12.0-0`
for all the packages in `pkg` that are not published to `pub`, so that
we can get better testing of the "private named parameters" feature.

(Packages that *are* published to `pub` can't be safely bumped yet,
because SDK 3.12 hasn't been released, and I don't want to block those
packages' ability to publish useful updates to customers.)

This change covers the following packages, which are owned by OWNERS_ENG:
- pkg/async_helper
- pkg/bisect_dart
- pkg/dartdev
- pkg/expect

Changes to `pubspec.yaml` files were made manually.

Changes to `.dart` files were made automatically, using `dart fix` to
migrate to using private named parameters where it is possible to do
so without changing semantics. Note that this migration is
conservative; see https://github.com/dart-lang/sdk/issues/58607 for
details.

Change-Id: I56bdd1f2665b0a0b79ebb8484e49ce176a6a6964
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/487940
Auto-Submit: Paul Berry <paulberry@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2026-03-16 01:11:16 -07:00
Daco Harkes 2d94b0cbb8 [dartdev] dart run progress updates to stderr
Stream various updates from different components to `stderr` instead
of `stdout` on `dart run`.

TEST=pkg/dartdev/test/

Fixes: https://github.com/dart-lang/sdk/issues/62818

Change-Id: Icd5caa65aab092341d370b09c016f89ae2a57987
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/486203
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2026-03-09 11:05:28 -07:00
Parker Lougheed 6ce5b17052 [dartdev] Update and fix a few links in tool output and comments
Change-Id: I2bdbd844a0cd5bcdfcaa67861c1a9f301a63c37b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/481000
Reviewed-by: Sigurd Meldgaard <sigurdm@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2026-02-18 08:28:01 -08:00
FMorschel aeadcbbca8 [linter, DAS] Makes use_null_aware_elements to report on cascade elements
Fixes: https://github.com/dart-lang/sdk/issues/62660
Change-Id: I8daee991353cae128ea84cf8d71ee430a884f550
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/480560
Reviewed-by: Nate Biggs <natebiggs@google.com>
Auto-Submit: Felipe Morschel <git@fmorschel.dev>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Nate Biggs <natebiggs@google.com>
2026-02-16 23:32:59 -08:00
Sigurd Meldgaard 528d4faff6 dart install and dart remote run with descriptors
Bug: https://github.com/dart-lang/sdk/issues/62123
Change-Id: I16e4fc0c20b9728e8357b6f67540aec73b2804ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/477560
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Jonas Jensen <jonasfj@google.com>
Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
2026-02-10 05:50:12 -08:00
Daco Harkes 70ec554263 [dartdev] dart compile exe only warn on hooks for bin/
`dart build cli` only supports `bin/` scripts. So don't suggest it
as replacement for `dart compile` for non bin scripts.

Bug: https://github.com/dart-lang/sdk/issues/62593
Change-Id: I61cf60d4f168f10067295d4876c859e72eb32881
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/478640
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Morgan :) <davidmorgan@google.com>
2026-02-05 06:47:47 -08:00
Daco Harkes 09cc803061 [dartdev] Add dart build cli --depfile option
Closes: https://github.com/dart-lang/sdk/issues/62594
Change-Id: I1f6cd30d6e6bcced998c8cee8978c3f6805bd79e
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/478603
Reviewed-by: Morgan :) <davidmorgan@google.com>
2026-02-05 06:47:47 -08:00
Sigurd Meldgaard 65c4d768f1 Upgrade language version of dartdev to 3.11
Changes are reformatting and using the nullable list element operator.

Change-Id: Iea1f4d2fcb06056f14804c8fe8b33c0b4d9037f2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/477561
Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2026-02-02 06:47:50 -08:00
Daco Harkes 11059a9b46 [dartdev] Remove dart build preview note
This went to stable together with the build hooks, but we forgot to
remove this message.

Change-Id: I1e67b479285476629e5a48ee4319d3d6206027c8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/474821
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Michael Goderbauer <goderbauer@google.com>
2026-01-27 00:15:57 -08:00
Johnni Winther 62a646220a [dartdev] Handle upper case letters in dart create
This adds handling of upper case letters in `dart create`. This command is run from IDEs (IntelliJ, atleast) and if you use upper case letters in the directory, the `dart create` would (silently) fail instead of normalizing the directing to a valid package name, leaving the created project folder with no content.

All upper case names are normalized to all lower case, and mixed case are normalized to snake case, as if it was from camel case.

Change-Id: If854e17a0273eb0d02f4f0c5dcd4b50752e57bd4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/474641
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-01-22 07:36:14 -08:00
Sam Rawlins 265144a74b Bump dartdoc to 03f48ee08eccdcf2e4cd06678501f07c182bebf5
This is the first commit that should be compatible with analyzer 10.0.0

Change-Id: I7db249d1d91f17416c81268306f70baf3a460d48
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/473820
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2026-01-21 06:03:53 -08:00
Daco Harkes 002d933e18 [dartdev] Bundle code assets with resident compiler
Wire up the native assets yaml embedding into the kernel file
when using the resident compiler in `dart run`.

TEST=pkg/dartdev/test/native_assets/run_test.dart

Closes: https://github.com/dart-lang/sdk/issues/62421
Change-Id: I7a381a822c8e5bbd6b214af3b0a30ccf8216fe6a
Cq-Include-Trybots: luci.dart.try:pkg-win-release-try,pkg-mac-release-try,pkg-mac-release-arm64-try,pkg-linux-release-try,pkg-linux-release-arm64-try,pkg-linux-debug-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/474220
Reviewed-by: Ben Konyi <bkonyi@google.com>
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2026-01-19 09:07:09 -08:00
Sam Rawlins 683ef059f5 Add a --no-plugins option to prevent analyzer plugins from running
Fixes https://github.com/dart-lang/sdk/issues/62353

Change-Id: I902badd0a7a072b98691d88ad7b382828227b1fc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/471660
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2026-01-12 11:28:17 -08:00
Daco Harkes 3e020921c6 [dartdev] Delete and create dylibs instead of truncate
TEST=Tested locally. Will add a test case upstream in dart-lang/native
     and roll that in.

Bug: https://github.com/dart-lang/native/issues/2921
Change-Id: I8010131cc70afe5bcee30edf076f18efe0c9a8c4
Cq-Include-Trybots: luci.dart.try:pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-win-release-try,pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-mac-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/471240
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2026-01-07 03:52:21 -08:00
Daco Harkes 42249a3713 [dartdev] dart compile report which packages have hooks
Closes: https://github.com/dart-lang/sdk/issues/62320

Change-Id: I45d51abf0d50725f57cabe7e0b662ceaad88edc0
Cq-Include-Trybots: luci.dart.try:pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-win-release-try,pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-mac-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/471180
Reviewed-by: Michael Goderbauer <goderbauer@google.com>
Commit-Queue: Michael Goderbauer <goderbauer@google.com>
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2026-01-07 01:23:35 -08:00
Simon Binder d2ee7a3207 [dartdev] Use dart build cli in Dockerfile template
This updates the `Dockerfile` generated by `dart create` with the
`server-shelf` template to use `dart build cli` instead of `dart
compile exe`. The benefit of using the `build` command is that it runs
hooks and bundles code assets. These assets should also be present in
the container image.

TEST=Tested manually (create template, build image, run)

Change-Id: Ia8ccbba4ea6631ec6d5bb8866fd59ae4821375ba
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/470661
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Alexander Thomas <athom@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2026-01-05 03:29:09 -08:00
Ömer Ağacan 7213d50d92 [dart2wasm] Fix --strip-wasm handling in dart compile CLI
`dart compile wasm` currently checks `--strip-wasm` and passes it along
if it's set.

This doesn't do anything because `--strip-wasm` is already the default
in dart2wasm, and `dart compile wasm` never passes `--no-strip-wasm`.

Instead of passing `--strip-wasm`, pass `--no-strip-wasm`.

To help debugging this kind of thing future, `--verbose` output is
improved:

- Print `--strip-wasm` flag value with other flag values.
- When running `wasm-opt` print the `wasm-opt` flags.

Change-Id: Iaa24836a439294badf5470446a2bb83031a79a98
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/469582
Reviewed-by: Nate Biggs <natebiggs@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
2025-12-29 01:59:03 -08:00
Slava Egorov c058785219 [dartdev] Add info record-performance subcommand
This subcommand uses perf_witness recording functionality to record
performance timelines of all processes that opted into the recording.

Change-Id: I37fd9fc88e38853a77a105370e2020fc6a6a6964
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/459745
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
2025-12-16 06:19:25 -08:00
Daco Harkes 10373c30e8 [dartdev] Run remote empty version
Fixes: https://github.com/dart-lang/sdk/issues/62122
Change-Id: Id8331c58d968b6c92cfe7c1ae9be75d80260e772
Cq-Include-Trybots: luci.dart.try:pkg-mac-release-try,pkg-mac-release-arm64-try,pkg-win-release-try,pkg-linux-release-try,pkg-linux-debug-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/467803
Reviewed-by: Sigurd Meldgaard <sigurdm@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2025-12-15 06:39:16 -08:00
Sigurd Meldgaard a22f4d3924 Hide remote run behind flag (until aligned)
Prevent introducing a breaking change later by removing the current incantation
of remote run before it goes into stable.

See: https://github.com/dart-lang/sdk/issues/62123 for details.
Change-Id: I53e0ba84a9317bd16d1249d2bcf1b07a0467a49d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/467021
Commit-Queue: Sigurd Meldgaard <sigurdm@google.com>
Reviewed-by: Jonas Jensen <jonasfj@google.com>
2025-12-15 01:55:31 -08:00
Moritz 0ccb213c8f Fix new lines in build.dart
Fixes errors of the sort

```
mosum@mosum2:~/projects/i18n/pkgs/intl4x/example$ dart --enable-experiment=record-use build cli example.dart
There are multiple possible targets in the `bin/` directory, and the 'target' argument wasn't specified.mosum@mosum2
```

Change-Id: I7ed6dbd21838506c1fe60b6d69d6066406d3b7c7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/467842
Auto-Submit: Moritz Sümmermann <mosum@google.com>
Reviewed-by: Brian Quinlan <bquinlan@google.com>
Commit-Queue: Brian Quinlan <bquinlan@google.com>
2025-12-12 09:35:19 -08:00
Ryan Macnak bfeebf0579 [dartdev] Fix dart compile with the simulators.
Change-Id: Id27ca35f440ee71e0d91e2f8a851dc8269de24e4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/466921
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2025-12-08 15:33:42 -08:00
Ryan Macnak 8dbd8bb913 [dart] dart compile aot-snapshot --target-sanitizer=asan,msan,tsan
Bug: https://github.com/dart-lang/sdk/issues/61352
Change-Id: I7ac6228352706581b18d4394a854f45c1d08c347
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/465986
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2025-12-08 10:57:03 -08:00
Nate Biggs fdeb9dc575 [dart2wasm] Introduce an opt phase to dart2wasm.
To help facilitate this we move all IO into a separate helper
library/class. This makes it easier to have symmetric read/write
functions and to do IO within compile.dart where necessary.

Adding the new `opt` phase allows us to remove the duplicated code
between dartdev and compile_benchmark simplifying those two files a lot.
It will also allow us to more easily invoke wasm-opt within our internal
build pipeline.

For compile_benchmark we still run the opt phase independently (but
through dart2wasm) to keep the benchmark data as consistent as possible.

Change-Id: Iaa855dbc3a05abfedbc3eea4af32e3ba27e84600
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/464640
Commit-Queue: Nate Biggs <natebiggs@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2025-12-01 21:50:29 -08:00
Daco Harkes d114ce5579 [dartdev] dart run <remote> --verbosity=error hide build hooks
progress

This enables running one-off commands via `dart run <remote>` and
only having the stdout from the program.

TEST=pkg/dartdev/test/native_assets/run_remote_test.dart

Bug: https://github.com/dart-lang/sdk/issues/61996
Change-Id: Ia60bd2b3754b407686718b33b1934d8687dac8d4
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/464384
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Michael Goderbauer <goderbauer@google.com>
2025-11-26 02:16:19 -08:00
Daco Harkes 3785c8f4ea [dartdev] dart run --verbosity=error hide build hooks progress
This enables running `dart run` without the `stdout` containing
progress outputs.

TEST=pkg/dartdev/test/native_assets/run_test.dart

Closes: https://github.com/dart-lang/sdk/issues/61996
Change-Id: I35835db5be8e17623bdee0fc78b6a8e789a268e0
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/464421
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Michael Goderbauer <goderbauer@google.com>
2025-11-26 02:16:19 -08:00
Daco Harkes b2e58f8467 [dartdev] Run hooks for dev dependencies in dart run
The user might want to access the assets from dev dependencies.
The Dart code might want to use dev dependencies. `dart run test`.

Closes: https://github.com/dart-lang/tools/issues/2237
Change-Id: Ib8c9b4a7f3f2dedb33777e1f29cb82fc678edd4f
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/462980
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Michael Goderbauer <goderbauer@google.com>
2025-11-24 02:18:01 -08:00
Daco Harkes 991c48f689 [dartdev] dart run remote
Enables "run-from-remote" with `dart run`.

```
Run a Dart program from a file, a local package, or a remote package.

Usage: dart [vm-options] run [arguments] [<dart-file>|<local-package>|<remote-executable> [args]]

<dart-file>
  A path to a Dart script (e.g., `bin/main.dart`).

<local-package>
  An executable from a local package dependency, in the format <package>[:<executable>].
  For example, `test:test` runs the `test` executable from the `test` package.
  If the executable is not specified, the package name is used.

<remote-executable>
  An executable from a remote package. This can be from a hosted package server
  (like pub.dev) or a git repository.

  When running a remote executable, all other command-line flags are disabled,
  except for the options for remote executables. `dart run <remote-executable>`
  uses `dart install` under the hood and compiles the app into a standalone
  executable, preventing passing VM options.

  From a hosted package server:
    <hosted-url>/<package>[@<version>][:<executable>]

    Downloads the package from a hosted package server and runs the specified
    executable.
    If a version is provided, the specified version is downloaded.
    If an executable is not specified, the package name is used.
    For example, `https://pub.dev/dcli@1.0.0:dcli_complete` runs the
    `dcli_complete` executable from version 1.0.0 of the `dcli` package.

  From a git repository:
    <git-url>[:<executable>]

    Clones the git repository and runs the specified executable from it.
    If an executable is not specified, the package name from the cloned
    repository's pubspec.yaml is used.
    The git url can be any valid git url.
```

Notable implementation decisions:

* Does not redownload if the pubspec.lock is identical from the last
  remote run. Always does a pub resolve to see if the pubspec.lock
  would be identical.
* pub urls must start with `https://`. This makes parsing with local
  file paths more tractible.
* git urls may use either urls, or git ssh. (Git SSH is not tested due
  to not wanting to run an ssh server locally.)
* Shares as much implementation with `dart install` as possible. The
  `dart install` implementation was made public where necessary. The
  `dart install` implementation was kept in place to keep the git diff
  small.
* Test lives in pkg/dartdev/test/native_assets/ so that its not run
  on a shard and xcode and git commands are available.

TEST=pkg/dartdev/test/native_assets/run_remote_test.dart
Closes: https://github.com/dart-lang/sdk/issues/61588
Change-Id: I6a641c670a61da309027d3f82c90f4b59e70933b
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/457640
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2025-11-21 03:38:57 -08:00
Martin Kustermann 72e3f7a0d4 [dart2wasm] Fix web/wasm/flute_stress_test in SDK mode
Currently `web/wasm/flute_stress_test` is failing on
`dart2wasm-linux-optimized-jsc` mode.

That mode runs with `--use-sdk` which makes it use `dart compile wasm`.

The reason the test is failing is because it passes both
`--enable-deferred-loading` and `--multi-module-stress-test` flags to
dart2wasm. This causes us to trigger the deferred module flow instead
of the specialized multi-module flow.

Those two flags should be independent.

Change-Id: I8cac976cd91d4e585f38632ada3062e41fce401f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/458800
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Nate Biggs <natebiggs@google.com>
2025-11-04 05:17:51 -08:00
Martin Kustermann d1e7fa76de Reland "[dart2wasm] Also use --traps-never-happen in deferred loading mode"
The dart2wasm compiler - when used in -O2 sound mode - should guarantee
that no wasm traps happen. So we should  be able to use
`--traps-never-happen` in deferred loading mode just like in normal
mode.

This saves around 1.2% in ACX Gallery

The original revert was done due to other reasons, not this CL.

Change-Id: I0c836c21cacf7a50417011aadac346f12b827a2e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/459280
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Ömer Ağacan <omersa@google.com>
2025-11-03 03:27:39 -08:00
Paul Berry 475efb1708 Revert "[dart2wasm] Also use --traps-never-happen in deferred loading mode"
This reverts commit 6bcbc740e5.

Reason for revert: Broke pkg/dart2wasm/test/ir_test

Original change's description:
> [dart2wasm] Also use --traps-never-happen in deferred loading mode
>
> The dar2wasm compiler - when used in -O2 sound mode - should guarantee
> that no wasm traps happen. So we should  be able to use
> `--traps-never-happen` in deferred loading mode just like in normal
> mode.
>
> This saves around 1.2% in ACX Gallery
>
> Change-Id: I3d214b636b0bc2e8b18c2ef8c4bf0c86b19c23c8
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/458720
> Commit-Queue: Martin Kustermann <kustermann@google.com>
> Reviewed-by: Nate Biggs <natebiggs@google.com>

Change-Id: If51986574a7dc587b64b258278d763d51b3d28df
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/458900
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Paul Berry <paulberry@google.com>
2025-10-31 12:04:10 -07:00
Martin Kustermann 6bcbc740e5 [dart2wasm] Also use --traps-never-happen in deferred loading mode
The dar2wasm compiler - when used in -O2 sound mode - should guarantee
that no wasm traps happen. So we should  be able to use
`--traps-never-happen` in deferred loading mode just like in normal
mode.

This saves around 1.2% in ACX Gallery

Change-Id: I3d214b636b0bc2e8b18c2ef8c4bf0c86b19c23c8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/458720
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Nate Biggs <natebiggs@google.com>
2025-10-31 01:22:55 -07:00