[record_use] Semantic equality (#2927)

This CL introduces a semantic equality for record-use files.

Moreover, it copies all the current dart2js emitted files in and runs the semantic equality on VM and dart2js outputs. There are many differences:

* Files with unsupported features in dart2js are skipped, and annotated with tracking issues.
* Other differences between compilers are mapped.

Copying the current dart2js expect files validates that we can merge the expect files for the VM and dart2js in the Dart SDK with the new semanticEquals method (https://github.com/dart-lang/native/issues/2885).

(We probably want to delete most of the checked in files again at some point, and replace them with a handful that cover all syntax/semantics, or using the Dart API instead of using the json serialization. But for now this is the quickest way to validate the semantic equality is doing the right thing and being explicit about what features are missing.)

Closes: https://github.com/dart-lang/native/issues/2897
33 files changed
tree: b66947efadc98756bc3d225af698d41bbe8b52d5
  1. .gemini/
  2. .github/
  3. .idx/
  4. doc/
  5. pkgs/
  6. tool/
  7. .gitignore
  8. AUTHORS
  9. CONTRIBUTING.md
  10. LICENSE
  11. pubspec.yaml
  12. README.md
README.md

Coverage Status

Overview

This repository is home to Dart packages related to FFI and native assets building and bundling.

Documentation

See the doc directory for more documentation.

Packages

PackageDescriptionIssuesVersion
code_assetsThis package contains the Dart API for code assets in hook/build.dart and hook/link.dart.issuespub package
data_assetsThis package contains the Dart API for data assets in hook/build.dart and hook/link.dart.issuespub package
ffiUtilities for working with Foreign Function Interface (FFI) code.issuespub package
ffigenGenerator for FFI bindings, using LibClang to parse C, Objective-C, and Swift files.issuespub package
hooksThis package contains the API for hook/build.dart and hook/link.dart.issuespub package
hooks_runnerThis package is the backend that invokes hook/build.dart and hook/link.dart from Dart and Flutter.issuespub package
jniA library to access JNI from Dart and Flutter that acts as a support library for package:jnigen.issuespub package
jnigenA Dart bindings generator for Java and Kotlin that uses JNI under the hood to interop with Java virtual machine.issuespub package
native_doc_dartifierA library that converts code snippets from other languages into Dart.issuespub package
native_toolchain_cA library to invoke the native C compiler installed on the host machine.issuespub package
objective_cA library to access Objective C from Flutter that acts as a support library for package:ffigen.issuespub package
swift2objcA tool for generating bindings that allow interop between Dart and Swift code.issuespub package
swiftgenA tool for generating bindings that allow interop between Dart and Swift code.issuespub package

External packages

Packages not on this repo but also related to FFI and native assets. ❤️

PackageDescriptionVersion
native_toolchain_cmakeA library to invoke CMake for Dart Native Assets.pub package
native_toolchain_goA library to invoke the native Go compiler installed on the host machine.pub package
native_toolchain_rustA library to invoke the native Rust compiler installed on the host machine.pub package
native_toolchain_rsA library to build and bundle Rust code for Dart Native Assets.pub package

Publishing automation

For information about our publishing automation and release process, see https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

For additional information about contributing, see our contributing page.