dart-sdk/pkg/kernel
Clement Skau 0ce83987d6 Reland "[SDK] Adds an SDK hash to kernels and the VM."
Note: This is a reland of https://dart-review.googlesource.com/c/sdk/+/150343

Adds a new SDK hash to kernels and the VM which is optionally checked
to verify kernels are built for the same SDK as the VM.
This helps catch incompatibilities that are currently causing
subtle bugs and (not so subtle) crashes.

The SDK hash is encoded in kernels as a new field in components.
The hash is derived from the 10 byte git short hash.

This new check can be disabled via:
  tools/gn.py ... --no-verify-sdk-hash

This CL bumps the min. (and max.) supported kernel format version,
making the VM backwards incompatible from this point back.

This also bumps the min. and current ABI version.

Bug: https://github.com/dart-lang/sdk/issues/41802
Change-Id: I2f85945045a603eb9dcfd1f2c0d0d024bd84a956
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/152802
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-07-07 06:08:20 +00:00
..
bin [cfe] Remove EvaluationMode.legacy 2020-05-30 09:47:02 +00:00
doc [cfe] Implement lowering for constructor initialization of late fields 2019-11-21 09:36:35 +00:00
lib Reland "[SDK] Adds an SDK hash to kernels and the VM." 2020-07-07 06:08:20 +00:00
test [cfe] Implement new async return rules 2020-07-06 07:04:40 +00:00
tool [CFE] Spell check on kernel src; presubmit on kernel & _fe_analyzer_shared 2019-12-02 13:00:47 +00:00
.gitignore
analysis_options.yaml More options files cleanup. 2018-10-26 23:05:44 +00:00
AUTHORS
binary.md Reland "[SDK] Adds an SDK hash to kernels and the VM." 2020-07-07 06:08:20 +00:00
codereview.settings
LICENSE Making license files consistent across all packages 2017-09-28 19:33:08 +00:00
PRESUBMIT.py [CFE] Spell check on kernel src; presubmit on kernel & _fe_analyzer_shared 2019-12-02 13:00:47 +00:00
problems.md [cfe+analyzer] Move messages, scanner and parser to package:_fe_analyzer_shared 2019-11-01 09:37:57 +00:00
pubspec.yaml Mark front_end and kernel as private packages 2020-06-23 13:22:31 +00:00
README.md Remove outdated information from pkg/kernel/README.md 2018-10-09 11:09:27 +00:00

Dart Kernel

Dart Kernel is a small high-level language derived from Dart. It is designed for use as an intermediate format for whole-program analysis and transformations, and to be consumed by codegen and execution backends.

The kernel language has an in-memory representation in Dart and can be serialized as binary or text.

Both the kernel language and its implementations are unstable and are under development.

This package contains the Dart part of the implementation and contains:

  • A transformable IR for the kernel language
  • Serialization of kernel code

Note: The APIs in this package are in an early state; developers should be careful about depending on this package. In particular, there is no semver contract for release versions of this package. Please depend directly on individual versions.

See ast.dart for the in-memory IR, or binary.md for a description of the binary format. For now, the textual format is very ad-hoc and cannot be parsed back in.