Pudu programming language
Menu
releases

Release notes

What each release of Pudu changed. The notes here are the ones the release itself was published with.

Pudu 0.1.0

Published 2026-09-16pre-release

This is the first release of Pudu, and it is a pre-release. The language works, the standard library is broad, and the tooling is real, but the shape of both can still change before 1.0. Use it to write programs, and tell me where it gets in the way.

Install

Download the archive for your machine, check it, and put its bin directory on your PATH:

shasum -a 256 -c pudu-0.1.0-darwin-arm64.tar.gz.sha256
tar -xzf pudu-0.1.0-darwin-arm64.tar.gz
export PATH="$PWD/pudu-0.1.0-darwin-arm64/bin:$PATH"
pudu version

The standard library sits beside the executable inside the archive, so nothing is installed anywhere else and deleting the directory removes Pudu. There are archives for Linux x86-64 and for macOS on Apple silicon. Windows is not supported yet; to build for anything else, see the README.

The language

Pudu is statically typed and expression-oriented. A function that can fail returns Result, a value that may be absent is an Option, and match has to cover every case. A signature tells you whether a function changes what you hand it.

This release has records and sum types, generics with trait bounds, traits and dynamic trait values, if let, let … else, while let, labelled loops, and ? for both Result and Option. Numbers include exact decimals and fixed-width integers that are checked rather than wrapped. Modules can hold constants. Async functions run inside structured scopes. You can assign through &mut, to a mut field, and to an array element, and the checker refuses the writes that would not hold.

The standard library

173 modules, 3,456 public declarations, every one of them documented. Collections and text. Files and processes. JSON, CSV, TOML, YAML and XML. HTTP clients and servers, with TLS that verifies. SQLite and PostgreSQL, including the PostgreSQL wire protocol written in Pudu. Cryptography, workers and channels, and a testing module with property checks. The native interface, audio and video layer is written in Pudu too.

The tooling

One command. pudu runs, checks, tests, formats, lints, documents, searches and bundles programs, starts a project with pudu init, and talks to editors over the Language Server Protocol.

The documentation is twenty chapters, from a first program through to HTTP services. Every example in it is a complete program that compiles and runs as written, and all 87 of them were run against this build.

What is not here yet

There is no package manager. Dependencies are local directories, and lock, fetch, update and publish are specified but not implemented. If you were waiting to depend on someone else's Pudu code, keep waiting.

Programs run on an interpreter, so this is not the release to benchmark against a compiled language.

Some resources still need an explicit close rather than being released when they go out of scope: sockets, processes, workers and database connections rely on that or on teardown when the program ends. Cancellation does not yet propagate between workers. This is the main thing standing between Pudu and a stable release.

Memory use is proven flat for reading files, CSV and JSON Lines as input grows. The network, HTTP and database readers have not been measured that way, so do not assume they hold a gigabyte-sized stream the same way.

Reporting problems

Open an issue with the program, the command you ran, and what pudu printed. Every diagnostic has a code such as E3078, and quoting it is the fastest way to say what happened.

Every release, with its archives and checksums, is listed on the releases page.