Skip to content

Developer Setup

Everything needed to build, test, and contribute to dart_monty. The package contains Dart sources. The dart_monty_core dependency supplies web worker assets and its build hook installs the verified prebuilt VM worker. The mount library for MountDir needs the root package opt-in.

Required tools

Dart SDK

Contributors require Dart SDK 3.11 or later.

brew install dart-sdk
dart --version

Python 3

Python runs repository scripts and documentation tooling.

brew install python@3.12
python3 --version

Browsers

Chrome runs the Chrome cells. Firefox runs the Firefox cells. The cell runner uses CHROME_EXECUTABLE or FIREFOX_EXECUTABLE when set, then searches the platform defaults.

Repository layout

The repository root separates package sources, tests, examples, documentation, and development tools. Look at pubspec.yaml for the SDK and dependency constraints and at tool/ for the commands used by CI.

Install dependencies

Run this from the repository root.

dart pub get
bash tool/resolve_packages.sh

Quick verification

dart format --set-exit-if-changed .
dart analyze --fatal-infos
dart test

The default test run skips slow integration and acceptance tests. The VM cell uses the prebuilt worker that core's hook installs. Browser cells use web worker assets from the resolved core package.

bash tool/test_cell.sh vm
bash tool/test_cell.sh chrome-dart2js

Look at tool/test_floors.tsv for the supported platform cell names and their expected suite counts.

To test an unreleased core commit, point dependency_overrides at that commit, run core's tool/build_worker.sh, and set DART_MONTY_WORKER for JIT tests. The build_worker: true opt-in builds the worker library for self-relaunch. If the bundled manifest has a target, the hook uses its listed release artifacts. If the manifest has no target, the opt-in builds only the library from source. A failed artifact download fails the build. The mount library needs the same opt-in.