Odin is a general-purpose, statically typed, compiled language created by Ginger Bill in 2016 for modern systems programming. It favours simplicity and orthogonality over cleverness: no hidden allocations, no method tables, no exceptions — just explicit data, explicit memory, and code you can read top to bottom.
| # | ODIN | Topic | Description |
|---|---|---|---|
| PHASE 1: LANGUAGE FOUNDATIONS | |||
| 01 | Why Odin & Design Philosophy | Origins, simplicity, data-oriented design, and what Odin refuses to hide. | |
| 02 | Toolchain & Environment | Install Odin, run a first program, and understand the build modes. | |
| 03 | Statements, Expressions & Comments | Identifiers, punctuation, operators, and source layout rules. | |
| PHASE 2: TYPES & CONTROL | |||
| 04 | Data Types & Values | Integers, floats, runes, booleans, distinct types, and inference. | |
| 05 | Operators & Expressions | Arithmetic, comparison, bitwise operators, and evaluation rules. | |
| 06 | Control Flow: if, when & switch | Runtime branching, compile-time when, and exhaustive switch. | |
| 07 | Loops & Iteration | The single for form, ranges, matrix iteration, and labels. | |
| PHASE 3: COMPOSITION | |||
| 08 | Procedures & Parameters | proc declarations, multiple results, defaults, and procedure values. | |
| 09 | Structs, Enums & Unions | Modelling data with struct, enum, bit_set, and using fields. | |
| 10 | Arrays, Slices & Dynamic Arrays | Fixed arrays, slices as views, and allocator-backed dynamic arrays. | |
| 11 | Maps & bit_set Sets | Hash maps, map iteration, and sets built from enum-backed bit sets. | |
| PHASE 4: MEMORY & DATA-ORIENTED DESIGN | |||
| 12 | Pointers & Memory Addressing | Address-of, dereferencing, multi-pointers, and raw memory. | |
| 13 | Allocators & the Context System | Explicit allocation, the implicit context, and custom allocators. | |
| 14 | Data-Oriented Design (SOA/AOS) | Record layout versus split arrays for cache-friendly hot loops. | |
| PHASE 5: RELIABILITY & METAPROGRAMMING | |||
| 15 | Errors, defer & or_return | Errors as values, deterministic cleanup, and propagation. | |
| 16 | Parametric Polymorphism | Procedures and structs parameterised by type, plus where clauses. | |
| 17 | Compile-time Programming | when blocks, intrinsics, and #+build conditional compilation. | |
| 18 | Packages & Collections | package main, imports, collections, and the core/vendor libraries. | |
| PHASE 6: INTEROP & TOOLING | |||
| 19 | Foreign Interface (C Interop) | foreign import, calling C, and sharing data across the boundary. | |
| 20 | Concurrency & Threading | core:thread, synchronisation primitives, and parallel work. | |
| 21 | Testing, Formatting & Debugging | odin test, assertions, formatting, and compiler diagnostics. | |
| PHASE 7: PRACTICE & DEMO | |||
| 22 | Lab Examples | Run and modify single-file practice demos for every lesson. | |
| 23 | Study Projects | Small composed programs that combine the whole language. | |
| PHASE 8: REFERENCE | |||
| 24 | References & Tooling | Playgrounds, official documentation, books, and sample repositories. | |
The full categorized table — online tooling, official documentation, and sample repositories — lives on the References & Tooling page. Start with these: