IRIX 7 is two related but distinct tracks:
- IRIX 6.5.7m source and toolchain. Assemble and transcribe the IRIX 6.5.7m
source, use MIPSpro as the behavioural oracle, and build a modern GCC and
binutils 2.47 cross-toolchain for
mips-sgi-irix6.5. The source rebuild stays private where IRIX code is involved. - IRIX 7 OS. An independent, clean-room, GPL-3.0 Rust-native operating system for IRIX-derived SGI MIPS machines, starting with the Indy (IP24). It has its own assembly PROM, n32 Rust kernel, loadable modules and a POSIX/userland effort. It is not a rewritten IRIX 6.5.7m or a line-for-line port, and it does not yet provide IRIX 6.5 binary compatibility.
The tracks share the hardware target and the reference evidence, not a
codebase. The private track provides the MIPSpro oracle and build reference;
the public OS is an independent clean-room implementation, with an assembly
PROM and a Rust kernel and modules. The OS is in bring-up: M1 is closed for
its documented amended scope, and M2 is closed on iris for its documented L0
scope. Two kernels join under one confirmed membership epoch, agree on
rendezvous homes, route remote capabilities with a one-MOVED retry, bound
failure detection with lease fencing and the partition rule, and migrate a
stackless L0 actor in both directions at a message boundary. M3, the
eight-node sharded mesh, is now in progress. M2 is an iris-only gate with no
real-Indy pass (os #16), and its
migration scope is L0 only: no live TLS, socket, file-descriptor, thread or
process state moves.
The Tree of IRIX 7 — the living roadmap for the Rust-native OS, from its foundations to the v1.0 canopy.
The private irix6 tree is assembled, and
transcription continues where the source is incomplete. SGI did not ship source
for the graphics and audio code, so the
Ghidra fork and decompilation fill those
gaps. The stock rebuild is in progress, not complete: the selected IP22 kernel
object set, the lboot link contract and a rebuilt-kernel boot remain open
(project #1,
#13).
On the public toolchain side:
- The modern GCC cross and binutils 2.47 target
mips-sgi-irix6.5. The binutils series passes the controlled o32 and n32 guest smokes. - A native
hinvreference from MIPSpro and a GCChinvbuild match. - An initial o32 libc build from the tree compiles the selected C and assembly sources; a static hello links against it, runs in the guest, and matches the MIPSpro oracle output. This is a bounded proof, not stock libc/libm completion (project #9).
- Building the kernel with GCC and booting the rebuilt IP22 image are the next source-rebuild milestones (project #39).
The current release is v0.1.3.
Its assembly PROM sizes, maps and tests DRAM, brings up the serial console,
LZ4-decompresses the n32 kernel and jumps to it. The Rust kernel provides Seeq
networking, DHCP/DNS/NTP, HTTP/HTTPS and TLS, the REX3 boot log, telnet and
SHA-256-checked module autoload. It loads a static Rust std user image from
SCSI target 2.
- Modules. A flat module image loads into a fixed 2 MiB module area, is SHA-256 checked, and is called through a versioned C service table. The module SDK owns the ABI, targets, linkers and examples. The kernel multiplexes seven fixed regions — slots A and B and five 256 KiB arena regions — each with at most one verified module and one tick callback. A signed runtime dependency manager resolves an exact module graph, verifies every image and executes dependencies first. There is no load-time relocation or dynamic region allocator.
- M1 single-node. The kernel starts a local namespace/CAS, actor table and capability policy at boot. An optional slot-B Wasm module reproduces the local policy as a boot-time proof; the M1 line reports zero mesh traffic and the boot CI asserts it. M1 is closed for its documented amended scope and remains an iris-only software gate; a resident Wasm core is not part of it.
- POSIX and userland. The native user path has a static Rust
stdimage with a small ramfs,stat,read_dirandchdir; the native hello also exercises an in-kernel pipe ring andtcgetwinsize/tcsetwinsize. A synthetic o32 probe exercises classicopen/read/write/close; it is not an IRIX 6.5 application. The 42-symbol C shim is a bring-up shim, not the final libc. The relibc fork's n32 Linux/QEMU gate passes TLS,setjmpand pthreads; its native IRIX 7 backend has not run.
What runs where. All current boot evidence is on the iris Indy emulator. No real Indy IP24 has been characterised or booted, and there is no recorded real-hardware pass; the lab follow-up is os #16. The OS is not a finished IRIX replacement and does not yet provide IRIX 6.5 binary compatibility.
- No process table, threads/TLS,
posix_spawn, signal delivery, termios or socket API. The user path is a single-address-space bring-up, not a process isolation boundary. - No resident Wasm core. M2 is closed only at its documented L0 scope: it has no persisted epoch, uses a 1-of-1 lab authority and plain TCP, migrates L0 stackless actors only, does not move live TLS, socket, file-descriptor, thread or process state, and has no real-Indy pass of the M2 gate.
- No real-Indy validation. The full graphics stack, XFS compatibility and broader driver coverage remain ahead.
- The compressed PROM is nearly full (523,816 of 524,288 bytes, under 500 bytes free in the current main image), so policy, modules and userland ship outside the bootstrap.
| Repository | What it holds |
|---|---|
| os | The clean-room Rust OS, its docs and the living roadmap |
| project | The toolchain hub: GCC and binutils patches, the rig, the MIPSpro oracle, rebuild scripts and documents |
| os-sdk | The module ABI, module and user SDK, targets, linkers and examples |
| relibc | The IRIX 7 n32 big-endian relibc fork |
| gcc | The rust-lang/gcc fork with libgccjit; the IRIX patch series lives in project |
| binutils-gdb | The binutils 2.47 fork and the IRIX dynamic-linking patch |
| ghidra | The Ghidra fork with IRIX and SGI MIPS support |
| iris | The Indy emulator fork used for the guest and IRIX 7 gates |
| harness | Agent orchestration, evidence and verification for the transcription workflow (planned) |
| irix6 | The IRIX 6.5.7m source tree — private, never published |
| reference | SGI/IRIX reference documentation — private, never published |
The public repositories publish toolchain work and clean-room project material
only: GCC and binutils patches, scripts, documents, the harness, the module and
user SDK, the relibc fork and the IRIX 7 OS. They publish no IRIX source,
headers, binaries, disk images or sysroot content. IRIX is proprietary SGI
software. The irix6 source tree and the reference documentation are private
and are never distribution channels.
- The current stock-rebuild scope and status:
project #1 and
CONTEXT.md. - The toolchain, rig, oracle and publication boundary: project docs and the publication note.
- The OS plan, gates and limits: milestones, system architecture, module ABI and POSIX baseline.
- The first Rust
stdresult: std-hello-bringup. - The roadmap: The Tree of IRIX 7 and the OS documentation.