Hara

Runtime-neutral · live · embeddable

A small Lisp for systems that need to live everywhere.

Hara combines a compact language core with explicit capabilities, persistent data and portable runtime contracts across the JVM, Rust and WebAssembly.

Active experimental runtime

hello.hal L0
; data stays data
(def project
  {:name "hara"
   :runtimes [:jvm :rust :wasm]})

(map name (:runtimes project))
=> ["jvm" "rust" "wasm"]
portable core explicit host boundary

01 / WHY HARA

One language. Clear boundaries.

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

01

Compact L0 core

Functions, persistent collections, protocols, promises and explicit mutable markers form a focused language surface.

02

Runtime-neutral contracts

The same value model and library boundaries are specified across Truffle, Rust and WebAssembly hosts.

03

Built for embedding

Use Hara from a CLI, a JVM application, a browser module, an editor or a purpose-built host.

04

Live development

A shared REPL session, RESP transport and editor integrations keep evaluation close to the running system.

03 / QUICK START

From source to REPL.

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