* Manual roll of Dart from 24c7666def...40fd1c456e dart-lang/sdk@40fd1c456e Revert "[dart:io] Add Abort() on HttpClientRequest" dart-lang/sdk@17d7296a42 [vm/nnbd/bytecode] Fix reuse of type arguments in bytecode dart-lang/sdk@58b6f40c73 Issue 42797. Understand in legacy libraries that a function returning Never (in Null Safety library) never returns. (reland) dart-lang/sdk@fc8a6d9f9b [VM/compiler] Dereference TypeRef literal when propagating constants. dart-lang/sdk@0689ec527a Move "test.dart" (well, most of its contents) into pkg/test_runner. dart-lang/sdk@1094b3c61d Prepare static error test updater tool to handle web tests. dart-lang/sdk@b258585f2f [observatory] Migrate from deprecated isInstanceOf to isA. dart-lang/sdk@dfe1d9b682 Disable OverrideContributor for Cider. dart-lang/sdk@aea99b2f5c scope debug property assist to Diagnosticables dart-lang/sdk@4b96f20a79 [dart:io] Add Abort() on HttpClientRequest dart-lang/sdk@1b1a39708c [build] Use frameworks instead of libs dart-lang/sdk@3fef522496 Revert "Reland "[vm] Replaces fuchsia.deprecatedtimezone"" dart-lang/sdk@8c664d4f3f Revert "Issue 42797. Understand in legacy libraries that a function returning Never (in Null Safety library) never returns." dart-lang/sdk@2efb5bebc7 [ dart:_http ] Fix typo in HTTP response timeline event dart-lang/sdk@0884dae36c Revert "Fix the #include path for ICU headers" dart-lang/sdk@5171534e81 Scope tweaks. Report REFERENCED_BEFORE_DECLARATION in more places. dart-lang/sdk@6bba75079a Issue 42797. Understand in legacy libraries that a function returning Never (in Null Safety library) never returns. dart-lang/sdk@b4ebbb7f5c [build] Update gn to match Fuchsia dart-lang/sdk@cb428a7a02 [dart2js] Remove old bug work around in collector. dart-lang/sdk@08663c20ab Change flutter patch to match existing DEPS on master branch dart-lang/sdk@146ad014d9 update js/meta for the 2.10 dev sdk dart-lang/sdk@488c718793 [co19] Roll co19 to d79951e06e443213243e54c2c32694b79a221b65 dart-lang/sdk@ba20edd7be Add patch for flutter-engine when changing to version 2.10 * Rev buildroot to latest version. * Update license. * update. * Update gn revision. * Format BUILD.gn files as the gn revision has been updated.
Frontend Server
Frontend server is simple wrapper around Dart Frontend. It is a Dart application that compiles Dart source into Dart Kernel binary (.dill-file). Documentation on Dart Kernel (semantic, binary format, etc) can be found here: https://github.com/dart-lang/sdk/wiki/Kernel-Documentation.
Frontend server runs in two modes:
- immediate mode, where Dart source file name is provided as command line argument;
- interactive mode, where communication is happening over stdin/stdout.
Interactive mode instructions
Compile/Recompile
compile <input.dart>
Compiles <input.dart> Dart source file with Dart Frontend. Replies with result response.
recompile <boundary-key>
<path/to/updated/file1.dart>
<path/to/updated/file2.dart>
...
<boundary-key>
Incrementally recompiles Dart program previously compiled in current session, taking into account
changes in the listed files. Replies with result response.
Relative paths should be relative to current working directory for the shell that launched Frontend Server.
Accept/Reject
accept
Accepts results of incremental compilation, so that on next recompilation request Dart Frontend will not include these recompiled files.
reject
Rejects results of incremental compilation, so that on next recompilation request Dart Frontend will include compilation results from previously rejected recompilation in addition to what it will recompile based on newly changed files. Small technical detail is that Dart Frontend will not recompile files from previously rejected recompilation attempts (unless they were changed since then), it will just include appropriate kernel binaries it kept around from those previously rejected compilation requests.
One use of accept and reject instructions is in the context of Dart VM hot-reload. Dart VM can
reject user-provided incremental change to what is currently running. It could happen for variety
of Dart VM internal reasons. For example, if incremental update changes some class to enum,
such update can not be hot-reloaded by VM at this point, will be rejected.
Quit
quit
Stops the server.
Response from the server
result <boundary-key>
<compiler output>
<boundary-key> [<output.dill>]
Response from the Dart Frontend compiler is bracketed by <boundary-key> tags. If the compiler
was able to produce a Dart Kernel file, the name of this file <output.dill> is provided too.
If the compiler encountered unrecoverable errors, there will be no output file name provided.