Skip to content
Chris Michael edited this page Sep 2, 2026 · 4 revisions

Pudu

Pudu

Pudu is a statically typed, expression-oriented programming language with explicit control, recoverable failure as values, exhaustive matching, traits, deterministic evaluation, and a standard library written in Pudu.

Status: pre-release. The current compiler checks and interprets programs. Native code generation, package management, and a stable compatibility promise are not implemented.

This wiki documents behavior present on the dev branch. The versioned engineering specification remains in the repository wiki/.

Reading the book

The chapters follow the order in which the language rules depend on one another. New readers should begin with Getting Started, then continue through Parts I–IV. Experienced readers can use the Reference Index as the compact entry point.

Part I — Programs and values

  1. Getting Started
  2. Modules And Imports
  3. Values, Bindings, And Blocks
  4. Types And Inference
  5. Records, Sums, And Tuples

Part II — Computation

  1. Functions, Generics, And Traits
  2. Pattern Language
  3. Control Flow And Patterns
  4. Iteration And Loops
  5. Failure And Propagation

Part III — Data

  1. Numbers And Collections
  2. Sets, Maps, And Sequences
  3. Keyed Structures
  4. Trees And Hierarchies
  5. Standard Library
  6. Output, Formatting, And Testing

Part IV — Execution boundaries

  1. Tasks And Scopes
  2. Compile-Time Evaluation
  3. Typed Macros
  4. References And Unsafe

Part V — Tools and implementation

  1. CLI, REPL, And Documentation
  2. Language Server And VS Code
  3. Diagnostics And Formatting
  4. Implementation Status

The Worked Programs appendix collects complete modules checked against the current compiler.

Design boundary

Pudu uses one compiler pipeline for checking, execution, the REPL, documentation, and editor answers. The interpreter is currently the only execution backend. Each chapter distinguishes a language rule from the present implementation boundary; planned native compilation and ownership work is not written as completed behavior.

Repository

Clone this wiki locally