Alexander Aprelev 034a630220
Roll dart to aece1c1e92. (#12997)
* Roll dart to aece1c1e92.

Changes since last roll:
```
aece1c1e92 Update compile_flutter.sh after vm -> frontend_server rename
9293e26fc9 [gardening] Fix flutter hhh patch.
13fbf569f6 [flutter] split frontend_server from vm package
a389015083 Rewrite MethodInvocation to FunctionExpressionInvocation when the target is not a method.
ae251757a9 [vm,aot,bytecode] Performance fixes
01ebf92dde [VM] Consume extension member/is late flag setting when reading kernel file.
8e05cd278c [vm, bytecode] Emit bytecode without ASTs by default.
4539536b34 [eventhandler] generalize socket initialization
7115687beb NNBD i13n: Add a description for discarding just the condition
2bcaf02582 (origin/base) Update dartdoc to 0.28.7.
a0e8c7712d [dart2js] New RTI: Prevent elision of precomputed1 and remove unneeded read.
c38e19cbbe [vm/compiler] bit utilities
f918214f36 Add a unit test reproducing issue #38352.
ad47b1ca64 Remove summary1, part 2.
0881a4a691 Reland "Deprecate TypeParameterTypeImpl.getTypes()"
d93a6b596b Prepare to publish analyzer version 0.38.5
d5feab0c53 [vm] Create builds for LeakSanitizer, MemorySanitizer and ThreadSanitizer.
8c5236f55e [vm/ffi] Fix host-target word mismatch breaking AOT callbacks in ARM_X64.
5f7b837195 Remove unused FunctionElementImpl_forLUB.
2c75771611 Write and read the static type of IntegerLiteral.
b00453c68a Create synthetic FunctionType in quick fixes.
897e197dd4 Flow analysis: Update AssignedVariablesVisitor to track functions/methods.
55466fd3cc Flow analysis: Remove AssignedVariables.capturedAnywhere.
0a5cf36f14 Make exitFunctionBody safer.
```

* Update license hash
2019-10-08 08:07:39 -07:00

72 lines
2.5 KiB
Markdown

# 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.