Files
sdk/pkg/front_end/lib/src/fasta
Peter von der Ahé d6608f19c0 Check function types in subtype tests
Change-Id: I27b38e2a6edc67e13662aa16da2fde13dc2501e9
Reviewed-on: https://dart-review.googlesource.com/c/90922
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-01-31 08:58:10 +00:00
..
2018-04-04 16:08:57 +00:00
2018-09-03 11:45:33 +00:00
2018-06-15 10:03:24 +00:00
2018-09-03 11:45:33 +00:00
2018-06-20 16:05:02 +00:00
2019-01-29 09:54:52 +00:00
2018-06-29 11:14:20 +00:00
2018-10-11 17:41:50 +00:00
2018-10-11 17:41:50 +00:00

Fasta -- Fully-resolved AST, Accelerated.

Fasta is a compiler framework for compiling Dart sources to Kernel IR. When Fasta works well, you won't even know you're using it, as it will be transparently integrated in tools like dart, dartanalyzer, dart2js, etc.

Hopefully, you'll notice that Fasta-based tools are fast, with good error messages. If not, please let us know.

Fasta sounds like faster, and that's a promise we intend to keep.

Getting Started

  1. Build the VM and patched SDK. Note: you only need to build the targets runtime_kernel, and dart_precompiled_runtime, so you only need to run this command:
./tools/build.py --mode release --arch x64 runtime_kernel dart_precompiled_runtime

Create an Outline File

  1. Run ./pkg/front_end/tool/fasta outline pkg/compiler/lib/src/dart2js.dart

  2. Optionally, run ./pkg/front_end/tool/fasta dump-ir pkg/kernel/bin/dump.dart pkg/compiler/lib/src/dart2js.dart.dill to view the generated outline.

This will generate a file named pkg/compiler/lib/src/dart2js.dart.dill which contains a serialized representation of the input program excluding method bodies. This is similar to an analyzer summary.

Compiling a Program

./pkg/front_end/tool/fasta compile pkg/front_end/test/fasta/hello.dart

This will generate pkg/front_end/test/fasta/hello.dart.dill which can be run this way:

./sdk/bin/dart pkg/front_end/test/fasta/hello.dart.dill

Using dartk and the Analyzer AST

./pkg/front_end/tool/fasta analyzer-compile pkg/front_end/test/fasta/hello.dart

This will generate pkg/front_end/test/fasta/hello.dart.dill which can be run this way:

./sdk/bin/dart pkg/front_end/test/fasta/hello.dart.dill

Running Tests

See How to test Fasta

Running dart2js

./pkg/front_end/tool/fasta compile pkg/compiler/lib/src/dart2js.dart
./sdk/bin/dart pkg/compiler/lib/src/dart2js.dart.dill pkg/front_end/test/fasta/hello.dart

The output of dart2js will be out.js, and it can be run on any Javascript engine, for example, d8 which is included with the Dart SDK sources:

./third_party/d8/<OS>/d8 out.js

Where <OS> is one of linux, macos, or windows.