Files
sdk/samples/embedder
Ryan Macnak 1b850ae2be Revert "[build] Generate AOT snapshots in the SDK as dylibs on Mac."
This reverts commit 7cc84b94b3.

Reason for revert: fail to launch, need to setup code signing

Original change's description:
> [build] Generate AOT snapshots in the SDK as dylibs on Mac.
>
> Change-Id: I95efe7342e595b44bfce1a15229b926a721aea82
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/499480
> Reviewed-by: Alexander Markov <alexmarkov@google.com>
> Commit-Queue: Ryan Macnak <rmacnak@google.com>

Change-Id: I4a2742ddc4a39166ea4b642ee12661a8217e7417
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/504681
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
2026-05-19 11:10:25 -07:00
..
2025-04-29 07:45:07 -07:00
2025-01-28 03:53:40 -08:00
2025-01-28 03:53:40 -08:00
2025-01-28 03:53:40 -08:00
2025-07-23 16:13:29 -07:00

Dart VM Embedding examples

Examples of using Dart VM and executing Dart code from C++ binaries.

All examples can run either AOT or Kernel snapshots, depending on which shared library variant they depend on.

Since snapshot file formats are unstable, the dart binary needs to be of a matching version. The simplest way to ensure this is to build Dart SDK from the same checkout, see Building Dart SDK.

run_main.cc

This is the simplest example, which just calls a main function from a given AOT/Kernel snapshot. It does not handle isolate messages, so it cannot run Dart programs with async functions.

To run the example with a Kernel snapshot:

./tools/build.py --mode=release samples/embedder:run_main_kernel && \
  out/ReleaseX64/run_main_kernel out/ReleaseX64/gen/hello_kernel.dart.snapshot.

To run the example with an AOT snapshot:

./tools/build.py --mode=release samples/embedder:run_main_aot && \
  out/ReleaseX64/run_main_aot out/ReleaseX64/hello_aot.snapshot.

run_two_programs.cc

This example calls a function from one Dart snapshot and then passes the returned string to another Dart snapshot.

run_timer.cc

Demonstrates running an isolate event loop in a separate thread.

run_timer_async.cc

Demonstrates a custom message scheduler using std::async.