Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

The Zuri Programming Language

by the Zuri Project

Zuri is a language for building whole applications, and it ships with everything that takes. The runtime, the web server, the templating engine, the data formats, the cryptography and the toolchain were designed together and are delivered as one binary, so starting a real program does not begin with assembling an ecosystem out of third-party parts. Zuri has first-class language-level support for package management and vendoring, so the code you bring in from outside needs no third-party tooling either.

The standard library ships with the language, and it is large. Templating, HTTP/1.1 and HTTP/2, WebSockets, TLS, JSON, YAML, CSV, compression, cryptography, image decoding and drawing, HTML parsing, date arithmetic with the IANA time zone database, and OS-thread concurrency are all part of the installation. Every one of them is reachable with a bare import.

The tools ship in the same binary. zuri fmt lays out your code, zuri test runs your tests, and zuri lsp gives every editor completion, navigation and diagnostics. zuri install and zuri publish manage packages against Nyssa, a package registry any installation can serve, and zuri bundle ships a finished program to machines where Zuri is not installed, as a single executable if you like.

Zuri is dynamically typed, and it declines to be vague. A declared parameter type is enforced at the call, classes are sealed, a function cannot be quietly redefined, and a name beginning with an underscore stays inside the module that declared it. Your code runs as bytecode until a piece of it gets hot, and a JIT compiles that piece to machine code while the program is still running.

This book teaches the language from the first line of code to a complete web application. It is written against the Rust implementation of Zuri. Every program printed in these pages was run against that implementation, and the output shown underneath each one is the output it produced.