Compact L0 core
Functions, persistent collections, protocols, promises and explicit mutable markers form a focused language surface.
Runtime-neutral · live · embeddable
Hara combines a compact language core with explicit capabilities, persistent data and portable runtime contracts across the JVM, Rust and WebAssembly.
Active experimental runtime
; data stays data
(def project
{:name "hara"
:runtimes [:jvm :rust :wasm]})
(map name (:runtimes project))
=> ["jvm" "rust" "wasm"]
01 / WHY HARA
Hara keeps its core deliberately small. Host access, files, sockets and other effects are explicit capabilities rather than ambient magic, making programs easier to move, embed and reason about.
02 / THE SHAPE
Functions, persistent collections, protocols, promises and explicit mutable markers form a focused language surface.
The same value model and library boundaries are specified across Truffle, Rust and WebAssembly hosts.
Use Hara from a CLI, a JVM application, a browser module, an editor or a purpose-built host.
A shared REPL session, RESP transport and editor integrations keep evaluation close to the running system.
03 / QUICK START
Build the Truffle runtime with JDK 21 and Maven, evaluate a form, then enter the shared interactive session.
mvn -f java/pom.xml -Ptruffle package
./hara eval '(+ 19 23)'
./hara
04 / GO DEEPER
Install, evaluate, use the REPL and write Hara programs.
Specify L0 languageRead the normative core language behaviour and data model.
Embed Rust and WASMUnderstand cross-runtime values, providers and conformance.
Contribute Developer guideBuild, test, benchmark and extend the implementation.