No description
  • Rust 90.7%
  • Python 5%
  • Shell 1.5%
  • HTML 1.1%
  • Starlark 0.9%
  • Other 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Steve Klabnik 1a50d49def RUE-1969: box the published cycle report
The one-shot metrics a publication carries dwarf every other outcome, and
the clippy gate refuses the size gap; a report is built once per cycle, so
the allocation is not on any hot path.
2026-09-06 02:32:08 +00:00
.claude RUE-1934: shrink the storage guard and cache provisioning 2026-09-03 16:10:09 +00:00
.github RUE-2009: fail CI setup when the remote cache is configured but the daemon has no engine address 2026-09-05 21:25:20 +00:00
ci RUE-1267: record post-change CI evidence 2026-09-03 07:39:52 +00:00
cli-test-fixtures RUE-961, RUE-968, RUE-964: unified (size, align) allocation family; @resize, @alloc_zeroed, @byte_move 2026-08-10 15:21:58 +00:00
constraints RUE-320: scope linker to remote execution 2026-07-18 23:05:50 +00:00
crates RUE-1969: box the published cycle report 2026-09-06 02:32:08 +00:00
docs RUE-2039: one classifier for every call crossing 2026-09-06 01:59:36 +00:00
examples Update the tutorial process doc for the new outline and checker 2026-09-05 17:29:46 +00:00
fixtures/rue-program RUE-2004: add the rue_test rule and declare the Gazette suite 2026-09-04 14:48:54 +00:00
performance RUE-1906: keep Gazette corpus deterministic 2026-09-03 05:53:07 +00:00
platforms RUE-1937: link through zig cc on Linux 2026-09-03 17:02:16 +00:00
reproducibility/fixture RUE-1953: report bare @assert failures with their site on the test channel 2026-09-04 08:18:56 +00:00
scripts RUE-2038: place native returns by the target's C rules 2026-09-05 23:23:36 +00:00
std RUE-2070: anchor E0711 at the earliest demand, and stop offering absent remedies 2026-09-06 01:53:24 +00:00
tests/std RUE-2012: keep an accessor's yielded place intact through CFG construction 2026-09-05 02:42:18 +00:00
third-party Finish and stabilize floating point (ADR-0065 phases 7-10) 2026-09-04 18:27:58 +00:00
toolchains RUE-2003: keep hermetic toolchain distributions out of the remote CAS 2026-09-04 15:59:15 +00:00
website RUE-1991: derive every keyword list from the lexer token table 2026-09-05 21:29:50 +00:00
.buckconfig RUE-1225: guard builds against host disk pressure 2026-08-07 19:00:47 +00:00
.buckconfig.local.example RUE-2003: keep hermetic toolchain distributions out of the remote CAS 2026-09-04 15:59:15 +00:00
.buckroot Hello, world! 2025-12-15 22:20:00 -06:00
.gitignore RUE-1906: generate compiler error pages 2026-09-03 05:53:07 +00:00
.rustfmt.toml RUE-1294: wire Rust quality configs into Buck 2026-08-10 17:16:25 +00:00
AGENTS.md RUE-2060: strip the harness attribution footer from PR bodies 2026-09-05 16:43:03 +00:00
btd RUE-1119: harden affected-corpus selection 2026-07-22 23:07:05 +00:00
BUCK Verify tutorial programs by running them, not just compiling them 2026-09-05 17:29:46 +00:00
buck2 RUE-2009: fail CI setup when the remote cache is configured but the daemon has no engine address 2026-09-05 21:25:20 +00:00
buck2-bin RUE-1006: enable Rust action cache uploads 2026-07-18 19:35:17 +00:00
CLAUDE.md Unify repository agent guidance 2026-07-14 00:31:45 +00:00
clippy.toml RUE-1294: wire Rust quality configs into Buck 2026-08-10 17:16:25 +00:00
CONTRIBUTING.md RUE-1524: retire the Python 3.11 floor and its guard machinery 2026-08-16 00:09:55 +00:00
corpus.bzl RUE-1742: enforce portable corpus action timeouts 2026-08-23 19:11:47 +00:00
fmt.sh RUE-1294: wire Rust quality configs into Buck 2026-08-10 17:16:25 +00:00
gen-rust-project.sh RUE-516: regenerate rust-project.json from Buck incl third-party crates; add validator 2026-07-10 20:14:25 +00:00
hugo RUE-1485: cross-tool comparison of gazette against pinned Zola and Hugo 2026-08-14 00:17:50 +00:00
LICENSE-APACHE Add MIT/Apache-2.0 dual license 2025-12-23 02:04:16 +00:00
LICENSE-MIT Add MIT/Apache-2.0 dual license 2025-12-23 02:04:16 +00:00
quick-test.sh RUE-1525: per-crate debug-assert checks replace the repo-wide walk 2026-08-16 00:37:48 +00:00
README.md Remove legacy benchmark collection infrastructure 2026-07-28 04:50:17 +00:00
reindeer Add GitHub Actions CI workflow for Linux x86-64 2025-12-18 19:49:23 -06:00
rue_rules.bzl RUE-2004: add the rue_test rule and declare the Gazette suite 2026-09-04 14:48:54 +00:00
rust-project.json Generate the C-boundary ABI conformance matrix 2026-09-05 09:02:21 +00:00
rust-toolchain.toml Add hermetic Rust toolchain for Buck2 2025-12-24 04:09:23 +00:00
tailwindcss Migrate website from Sass to Tailwind CSS 2025-12-22 02:12:32 +00:00
test.sh RUE-1934: shrink the storage guard and cache provisioning 2026-09-03 16:10:09 +00:00
test_defs.bzl RUE-1915: repair the build graph's query, gate, and std wiring 2026-09-03 05:51:54 +00:00
test_tiers.bxl RUE-1523: single-source the test-tier vocabulary 2026-08-15 23:41:01 +00:00
zola Add GitHub Pages deployment for website and spec 2025-12-21 17:43:08 +00:00

Rue

Rue is an experimental systems programming language exploring memory safety without garbage collection and higher-level ergonomics than Rust or Zig. It is implemented in Rust and emits native code directly, without LLVM.

fn fib(n: i32) -> i32 {
    if n <= 1 { n } else { fib(n - 1) + fib(n - 2) }
}

fn main() -> i32 {
    @dbg(fib(10));
    0
}

Caution

Rue is an early-stage language. Its syntax, semantics, runtime, and standard library are still changing, and it is not ready for production use.

What is here

The repository contains a complete native compiler pipeline, including:

  • lexer, parser, semantic analysis, and several inspectable IRs;
  • affine ownership, borrowing modes, destructors, structs, enums, arrays, strings, modules, comptime, and unsafe/raw-pointer support;
  • x86-64 Linux, AArch64 Linux, and AArch64 macOS code generation;
  • a small runtime, ELF/Mach-O object and linking support, and direct machine-code emitters;
  • specification, UI, CLI, differential-oracle, fuzz, sanitizer, and stress suites.

The authoritative language definition is the Rue specification. The tutorial is the best introduction to writing Rue programs. Architecture and design rationale live in docs/architecture.md and docs/designs/.

Build and try Rue

Rue uses Buck2 rather than Cargo. Install Dotslash; Buck2 and the Rust toolchain are then bootstrapped hermetically by the repository.

scripts/rue build
scripts/rue exec examples/welcome.rue   # prints 1, 2, 3, 42 and exits 0
scripts/rue test

examples/welcome.rue is the setup health check: it prints recognizable output and exits 0, so a successful run is not mistaken for a failure under set -e or CI. (Programs like examples/fibonacci.rue return a value from main, which becomes the process exit code — informative, but a nonzero status.)

Use scripts/rue-bin when you need the compiler path, or run the real CLI through the wrapper:

RUE="$(scripts/rue-bin)"
"$RUE" --help
"$RUE" examples/welcome.rue -o welcome
./welcome

Supported targets are x86-64-linux, aarch64-linux, and aarch64-macos. Cross-target machine-code and assembly emission is available, but producing an executable may require target-specific system tools.

See CONTRIBUTING.md and docs/development.md for the development workflow.

Project status

Rue is developed in public as both a language-design project and an experiment in agent-assisted compiler engineering. Accepted features may remain behind --preview until their implementation and specification are complete. The test suite tracks normative specification coverage and known implementation gaps explicitly.

License

Rue is dual-licensed under the Apache License 2.0 or MIT license, at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Rue is dual-licensed on the same terms.