r rin C-shaped systems language

rin

A small systems language that compiles to readable C, so it runs wherever C runs and links against anything C links against.

  • Sizes are in the names. i32 is 32 bits on every machine. There is no int whose width depends on where you built it.
  • One declaration shape. name: kind = value, for variables, structs, enums and procs alike. Read left to right, always.
  • Order does not matter. Use a type or a proc before you declare it. No forward declarations, no header discipline.
  • Generics and reflection, no macros. Instantiated per type while compiling, with a record describing every type that asks for one.
  • Arenas, not a collector. Ask once, hand out pieces, release the whole thing at once.
  • The debugger points at your source. Machine-code line tables name the .rin file, not the generated C.
Basics

Start here

Twenty lessons, in order

Each one is a short program that compiles, runs, and teaches a single thing about how the machine works. It opens with what the language is and how to install it.

Open the lessons