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 rustc | Source-built Rust 1.96.0-dev; exact artifact identity is shown in the app. |
| Target | wasm32-wasip1 |
| Toolchain artifact | crabrix-rust-2026-10-02.1 |
| Downloaded at runtime | Nothing. The compiler ships in the app bundle after signature, SHA-256 and sysroot inventory verification at build time. |
| Runtime | CrabrixRuntime, 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 program | None. There are no socket imports to call. |
| Memory | Capped, and the guest is stopped when it exceeds the cap. |
| Writable filesystem | One directory, with byte and file-count limits. |
| Output | Monitored against a limit; compiler output stress remains a release gate. |
| Wall clock and instructions | Both budgeted. fn main() { loop {} } is stopped by Stop, not left to run. |
| Host processes | None 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.
| Registry | crates.io sparse index, archive checksum verified before source is extracted or trusted |
| Dependency source | Completely viewable in the app; Vendor & Edit copies it into your project and compiles your patched copy |
| Offline | Cached 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 macros | Not supported — they need a host compiler the app does not bundle |
| Native C or system libraries | Not 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 testharness 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.