Learn Zolo by making it move.
Choose a guided path, jump straight into executable code, or use the map as a precise reference. Your reading progress stays with you.
Choose how you want to learn
There is no single right order. Start with feedback from real code, follow a guided sequence, or look up exactly what you need.
5 min · no install
Make the language move
Edit and run a real Zolo program in the browser, with compiler output beside the source.
Open the PlaygroundStep by step
Build a mental model
Follow short lessons that introduce one idea at a time and turn each concept into a small exercise.
Start the tutorialLook up & return
Find the exact concept
Use the complete language map when you already know the question and need a precise, connected answer.
Read the introductionThe complete learning map
Seven connected regions take you from the first program to the runtime, the web stack, and the language reference.
Getting Started
Understand the language's shape, run your first program, and set up the daily development loop.
Fundamentals
Learn the syntax and data model you will use in almost every Zolo program.
- 03 Variables & Types let, const, mut and Zolo's type system.
- 04 Functions Functions, closures, generators and async functions.
- 05 Control Flow if/else, match, for, while and loop.
- 06 Data Structures Structs, enums, traits, arrays and maps.
- 07 Operators Pipe |>, optional chaining ?., null coalesce ?? and more.
- 08 Strings Interpolation, multiline strings and tagged templates.
Features
Go deeper into the features that give Zolo its own voice and composition model.
- 09 Decorators @memoize, @test, @benchmark, @retry and @log.
- 10 Pattern Matching Exhaustive match, destructuring and guards.
- 17 Macros Hygienic macros, parameters, stringify! and compile-time expansion.
- 18 Generators Generator functions with fn* and yield for lazy sequences.
- 27 Modules & Visibility Organize code with `mod` (file or inline block), bring names into scope with `use`, alias them with `as`, import the module table itself with `self`, and choose the right visibility from `pub` to `pub(crate)`, `pub(super)`, or `pub(mod)`.
Web & Verniz
Build server-rendered and interactive web applications with HTTP and Verniz.
- 28 Web Development Build full-stack applications with std::http, std::web and Verniz, from a rendered View to a production binary.
- 29 Verniz Views & Markup Components as functions, HTML-like markup, safe interpolation and server-rendered Views without a template language.
- 30 Islands, Signals & Actions Add focused interactivity with @island, signal storage, DOM events, bindings and server actions.
- 31 Scoped CSS Write component-scoped style blocks, global CSS and reactive custom properties with compiler diagnostics.
- 32 Development Workflow Use zolo dev, hot everything, browser revalidation and production builds across the VM, LLVM and Cranelift.
- 33 Components & Typed DOM Use concise props, typed child blocks, associated server actions, native DOM checking, forwarding, refs, portals and boundaries.
- 34 Runtime & Deploy Build sealed static, hybrid and server products with reproducible runtime artifacts, content-addressed caching and provider-neutral deployment.
- 35 Navigation & Prefetch Accelerate ordinary multi-page links with WebGraph-derived intent prefetch, byte-bounded caching and optional View Transitions.
- 36 Verniz Sites production guide Build, inspect, test and deploy complete static, hybrid and server products with TypeScript, packages, content and auditable graphs.
Advanced
Understand fallibility, concurrency, effects, compile time, and advanced types.
- 12 Float Precision & Decimal Types Comparing floats safely with `~=`, plus the `decimal` and `bigdecimal` exact types.
- 19 Async & Concurrency async/await, spawn and every for asynchronous and concurrent programming.
- 20 Error Handling Result, ?, try/catch/finally, panic and guard for robust error handling.
- 21 Advanced Types Generics, type aliases, newtypes, as/is and associated types.
- 22 Advanced Control Flow defer, let-else, while let, guard, loop with value and ranges.
- 25 Algebraic Effects Declarative dependency injection: declare what your function needs, decide on the edges. Beats DI containers, mocks, monads and async/await viral.
- 26 Comptime Filesystem Read files at compile time with std::fs and bake them into the bytecode as literals — same API as runtime, prefixed by `comptime`. Inspired by Zig's @embedFile and Rust's include_str!.
Library & Tooling
Work with the standard library, databases, HTTP, the CLI, the editor, and the toolchain.
- 11 Standard Library String, Array, Map, Set, Iter, Option, Result and BigInt.
- 13 Tooling CLI, LSP, DAP debugger, formatter and VS Code extension.
- 23 HTTP Server Router, middleware, path params, JSON and pipe-based composition.
- 24 Database SQLite, SQL transpilation, query, execute and connection management.
Reference
Keep concise examples, the cheat sheet, and the compiler architecture within reach.