haven is a statically typed programming language and compiler, built specifically for DSP and audio plugin development.
This repository includes:
vestry: build system and project manager for Haven projectshavenc: the compiler for the haven programming languagehavendoc: a documentation generator that emits Markdown or static HTML
Note
This is pre-alpha software. The compiler is not yet stable, and the language is still under active development. Expect breaking changes and bugs.
- (Developer dependencies)
- rust/cargo
- python (for installation script)
- LLVM IR compiler
- clang
- opt + llc (untested)
Install the binaries using the provided install.py script:
# Use `--debug` if you want to build the binaries in debug mode (default is release mode).
$ python install.py [--debug] [--path <install_path>]
$ havenc --version
# To uninstall the binaries with the script, you can also run:
$ python install.py --uninstall [--path <install_path>]The script will also install and compile the standard library, which is required for compiling any haven program.
bins/
├── vestry/ # build system and project manager
├── havenc/ # compiler
└── havendoc/ # documentation generator
crates/
├── haven_back/ # backend-related code (LLVM IR, ABI)
├── haven_common/ # common code & types (AST, Diagnostics, memory layout, etc.)
├── haven_front/ # frontend-related code (lexer, parser, modules)
├── haven_meta/ # .hvmeta metadata artifacts (for dependencies compilation)
└── haven_mid/ # middle-end code (type checking, semantic analysis, etc.)
extensions/
└── vscode/ # VSCode extension for syntax highlighting
stdlib/
└── std/ # haven standard library package
This project is dual-licensed under the MIT and Apache 2.0 licenses. See LICENSE-MIT and LICENSE-APACHE for details.