Technology

What is actually inside

Most of this page is a list of limits. That is deliberate: a compiler on a phone is only interesting if you can tell exactly which compiler, running under exactly which budgets, and where it stops.

The toolchain

Bundled rustcSource-built Rust 1.96.0-dev; exact artifact identity is shown in the app.
Targetwasm32-wasip1
Toolchain artifactcrabrix-rust-2026-10-02.1
Downloaded at runtimeNothing. The compiler ships in the app bundle after signature, SHA-256 and sysroot inventory verification at build time.
RuntimeCrabrixRuntime, derived from WasmKit 0.4.1, pinned to a public commit. No JIT or daemon.

The public Crabrix toolchain builder produced this signed release from pinned Rust sources. Two clean builds are documented; their raw bytes differ, so byte-identical reproducibility is not claimed. The runtime and compiler have separate identities.

What your program is allowed to do

Network from your programNone. There are no socket imports to call.
MemoryCapped, and the guest is stopped when it exceeds the cap.
Writable filesystemOne directory, with byte and file-count limits.
OutputMonitored against a limit; compiler output stress remains a release gate.
Wall clock and instructionsBoth budgeted. fn main() { loop {} } is stopped by Stop, not left to run.
Host processesNone are spawned. The project terminal is a simulated shell over the project's own files.

Academy content

A new installation offers all seven courses from a signed public catalog; the separate Code Examples download contains 46 editable projects. Existing learners updating from the old Academy receive all seven signed transition packs locally, preserving their offline course access. Later course versions are data-only signed CoursePacks from the public course repository. The app shows the size before a requested update, verifies its signature and file hashes, then switches the installed version. A CoursePack cannot update the compiler or runtime. An installed course remains readable without a network; crate exercises also need their Cargo dependencies prepared for offline builds.

Cargo, and the part of it that works

Crabrix implements the dependency pipeline itself rather than shipping Cargo: sparse-index resolution against crates.io, SemVer ranges, feature unification, resolver 1/2/3 semantics, rust-version checks, target cfg filtering, a real Cargo.lock, SHA-256-verified downloads, dependency compilation, and --extern linking.

Registrycrates.io sparse index, archive checksum verified before source is extracted or trusted
Dependency sourceCompletely viewable in the app; Vendor & Edit copies it into your project and compiles your patched copy
OfflineCached graphs rebuild with no network; Pin for Offline keeps the exact verified archives after iOS purges its caches
Build scripts (build.rs)Not executed
Procedural macrosNot supported — they need a host compiler the app does not bundle
Native C or system librariesNot supported; there is no native linker for this target

Every package is labelled from real build outcomes: Link verified when its artefacts linked, Check verified when only metadata was produced, Needs review, or Unsupported with the reason.

What it cannot do

  • No debugger.
  • No cargo test harness yet.
  • No Git commit or push — import and export only.
  • A first compile is interpreted WebAssembly, so it is slower than a laptop. Identical repeat runs come from a local artifact cache.

Privacy, stated as a property of the build

There is no required account, analytics SDK, advertising, or tracking. An off-by-default Game Center switch in Profile shares a numeric rating and achievement ladder progress with Apple; Crabrix runs no board server. Other network requests include selected course downloads, package downloads, and repository imports you ask for.

How to check any of this

App source and the current validation record are on GitHub. The validation record separates observed tests from pending device and source-build gates.