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 | 1.96.0-dev |
| Target | wasm32-wasip1 |
| Toolchain artifact | artifacts-test-7 |
| Downloaded at runtime | Nothing. The compiler ships in the app bundle and is verified by SHA-256 at build time. |
| Interpreter | WasmKit, in the app's own process. No JIT, no dynamic code loading, no daemon. |
A pinned compiler is older than the current Rust release. Code that relies on an API stabilised after 1.96 will not build here even though a current laptop toolchain accepts it. The version is shown in the app under Settings → Local compiler, not buried.
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 | Bounded, so a runaway loop cannot fill storage. |
| 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. |
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, source verified by checksum before anything is written |
| 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 account, no analytics SDK, no advertising, and no tracking. Game Center and any leaderboard are not switched off in this version — they are not compiled into it, and a continuous-integration step fails the build if either returns. The only network requests are the package and repository downloads you ask for.
How to check any of this
The source is on GitHub, and each release carries an evidence folder with toolchain hashes, dependency inventory, test results and the measurements behind these claims.