A self-hosted, statically typed functional programming language focused on clean design, developer happiness, and native binaries.
curl -sSf https://donna-lang.org/install.sh | sh
copy
Donna borrows the best ideas from functional languages and keeps the toolchain direct.
Compiles to native machine code through QBE and a C compiler. No VM, no runtime ceremony.
A clear static type system catches mistakes while keeping source code compact.
Indentation-based blocks, focused expressions, and module-level clarity.
The Donna compiler is written in Donna, so the language is tested on real compiler code.
Bind C libraries directly when a small native package is the right tool.
Create projects, format, check, test, build, and run from the Donna CLI.
import donna/string
fn slug(title: String) -> String:
string.to_slug(title)
pub fn main() -> Nil:
let route = slug("Language Tour")
echo "/docs/" <> route
Module calls are visible at the top of the file.
Modules are explicit and package code stays easy to follow.
Use pub to expose symbols. Private code stays private.
Donna builds real binaries while keeping source code compact.
Checking donna-real-error
Compiling donna/shell
Compiling donna/string
Compiling donna/float
Compiling donna/bool
Compiling donna/option
Compiling donna/files
Compiling donna/result
Compiling donna/dict
Compiling donna/time
Compiling donna/list
Compiling donna/int
Compiling donna-real-error
error: undefined module
┌─ src/donna-real-error.donna:2:22
│
2 │ let route = string.to_slug("Language Tour")
│ ^^^^^^^ `string` has not been imported
hint: add the missing import at the top of the file
This is real output from a Donna project that calls string.to_slug without importing donna/string.
The installer link is temporary while the release pipeline is finalized. The install flow will download a prebuilt Donna binary and guide users through adding it to their shell path.
Downloads the latest release and installs the donna binary.
Creates a project with a demo test and GitHub Actions workflow.
Runs the test suite, then builds and runs the project.
This section will hold books and longer learning material. We are keeping the shelf empty until the first book draft is ready.
Donna is early and moving fast. For now, GitHub is the center of the project.