Skip to content

Compile Haxe to mostly idiomatic Rust (not ready for consumption yet!)

License

Notifications You must be signed in to change notification settings

fullofcaffeine/reflaxe.rust

Repository files navigation

reflaxe.rust

Version CI

Haxe 4.3.7 -> Rust target built on Reflaxe.

This project lets you write Haxe and ship native Rust binaries, with a path for both Haxe-first and Rust-first teams.

Start Here

Quick Start (First Successful Run)

  1. Install dependencies (toolchain is pinned via lix):
npm install
  1. Compile and run the hello example:
cd examples/hello
npx haxe compile.hxml
(cd out && cargo run -q)
  1. Run snapshot tests:
npm test
  1. Run the CI-style local harness (snapshots + examples):
npm run test:all

Fast Dev Loop (Watcher)

Install watcher engine once:

Then run:

npm run dev:watch -- --hxml examples/hello/compile.hxml

More usage options: Dev Watcher guide.

Pick Your Profile

Use -D reflaxe_rust_profile=portable|idiomatic|rusty.

Profile Best for What you get
portable (default) Haxe-first teams Stable Haxe semantics and portability-first behavior
idiomatic Teams that want cleaner Rust output without semantic shifts Same behavior as portable, cleaner emitted Rust
rusty Rust-aware teams Rust-first APIs and borrow/ownership-oriented surface

Read more: Profiles guide and Rusty profile details.

Examples

Most Useful Commands

  • Watch mode for local development: npm run dev:watch -- --hxml examples/hello/compile.hxml
  • Refresh tracker-backed status docs: npm run docs:sync:progress
  • Verify tracker-backed status docs are in sync: npm run docs:check:progress
  • Snapshot tests: bash test/run-snapshots.sh
  • Upstream stdlib sweep: bash test/run-upstream-stdlib-sweep.sh
  • Windows-safe smoke subset: bash scripts/ci/windows-smoke.sh
  • Full local CI equivalent: bash scripts/ci/local.sh
  • Clean generated artifacts: npm run clean:artifacts:all

1.0 Status and Roadmap

Defines (Common)

  • -D rust_output=out - output directory for the generated Cargo project
  • -D rust_no_build / -D rust_codegen_only - codegen only, skip Cargo build
  • -D rust_build_release / -D rust_release - release build mode
  • -D rust_target=<triple> - pass target triple to Cargo
  • -D rust_idiomatic - alias for -D reflaxe_rust_profile=idiomatic
  • -D reflaxe_rust_profile=rusty - enable Rust-first profile surfaces
  • -D rust_async_preview - enable Rusty async/await preview (docs/async-await.md)
  • -D rustfmt - run cargo fmt on generated output (best effort)

Full list: Defines reference.

Rust Interop

Preferred order:

  1. Pure Haxe + runtime/std APIs
  2. Typed externs and metadata (@:native, @:rustCargo, @:rustExtraSrc)
  3. Framework wrappers around hand-written Rust modules
  4. Raw __rust__ only when necessary

Read: Interop guide and Workflow guide.

Installation and Release Docs

About

Compile Haxe to mostly idiomatic Rust (not ready for consumption yet!)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages