About Pudu
Pudu is a statically typed programming language for programs that are easy to read, safe to change, and honest about failure. A function's signature says what it takes, what it gives back, whether it can fail, and whether it changes what it was given, so a reader can tell what code promises without reading its body.
What Pudu is built around
- Failure is a value. A function that can fail returns Result[T, E], and the caller decides what happens. There are no exceptions to forget to catch.
- Absence is a value. Option[T] holds Some(value) or None. Ordinary types never hold null.
- Change is visible. let never changes, var may, and &mut T in a signature marks a function that may change what it was lent.
- Patterns are checked. A match must cover every shape a value can have, and an arm that can never run is reported.
- Imports are explicit. There are no wildcard imports, so the origin of every name is in the import list.
What ships with it
One command, pudu, runs, checks, tests, formats, lints, and documents programs, and speaks the language server protocol for editors. The standard library ships with the compiler: collections, text, files and processes, JSON, CSV, TOML, YAML and XML, HTTP clients and servers, TLS, SQLite and PostgreSQL, cryptography, concurrency, and a native interface, audio, and video layer written in Pudu itself.
This website is a Pudu program too: its pages, search, and documentation are rendered by the language it describes. Start with the documentation or browse the standard library.
Where Pudu stands
Pudu is pre-release, at version 0.1.0. Programs run on an interpreter, dependencies are local directories, and the language and its standard library may still change before the first release. macOS and Linux x86-64 are tested; Windows is not yet.
Why Haskell matters
Haskell is important to Pudu. The first Pudu compiler is written in Haskell. Haskell's strong types and functional style help divide compiler work into explicit transformations that can be tested.
Pudu keeps its own syntax and learning path. You do not need to know Haskell to read or write Pudu programs.
About the author
Chris M. Pérez Santiago created Pudu and writes its compiler, standard library, documentation, and programming book.
Take part
The source, issues, and discussion live on GitHub. If Pudu is useful to you, you can support its development.
