Kalandra

Learn

Current limits

A functional language for parallel and distributed programming. The next chapter of Clio.

Kalandra is a new language under development, building on ideas from Clio. These pages teach working paths without treating the unfinished language design as settled.

Available now

The compiler parses and checks Kalandra source and emits native JavaScript ESM. Project builds support local modules, installed Kalandra packages, and explicit JavaScript package imports. Typed parallel work runs through Bun subprocesses or the browser worker adapter, including declared records, typed data captures and nested scheduling.

Tooling includes offline project creation, source documentation, terminal highlighting, a formatter, build watch mode, Git dependency installation, and a language server with diagnostics, navigation, completion, references, rename and document formatting. This website uses Tiramisu Docs and includes a stoppable playground.

An experimental Bun remote API executes explicitly registered compiled tasks with bearer authentication, deployment and schema checks, and acknowledged cancellation. Project builds can expose selected exports with --service id=export and generate deployment and client manifests with checked signatures, Sia schemas and a content-based revision. Services support typed captures from a compiler-checked pure startup baseline; effectful startup and persistent shared state remain unsupported. Separate-process tests consume these generated manifests using source and bundled compilers and runtimes. Clients can compile remote:./contract.json imports using local service contracts, with endpoint and token bindings supplied through the Bun API or CLI at runtime. Services can call other services through explicit outbound bindings, including nested calls. Remote record constructors are generated from the contract, preserving field order, inheritance and nominal identity through nested records, arrays and unions. Its listener binds loopback; TLS deployment and broader remote workloads remain unverified.

Still unavailable

Function values cannot cross worker or service boundaries. Checked remote handles can be used locally through aliases and eligible private helpers. Service exports using locally imported record declarations work; exports whose record schemas originate in another remote contract remain unsupported. Arbitrary dynamic function-local parallel targets and module cycles remain unsupported. A single statically created, typed startup closure is supported within the compiler’s restricted factory form; multiple instances and request-created closures are not. Full TypeScript declaration inference is not implemented; JavaScript packages can instead provide explicit Kalandra signatures.

Collection membership and several historical expression-binding and escape cases need later language decisions. The port preserves known behavior where possible instead of silently introducing new semantics. Decorated direct self-tail calls receive the loop optimization. Explicitly awaited self-calls remain outside that optimization.

Playground scope

The playground runs a single file, exports main, and blocks network access. It has source, output, worker and time limits, but no hard browser memory quota. It is not a general-purpose hostile-code hosting service. Chromium has been verified; Safari and Firefox remain unverified.

Source is not persisted or automatically shared. A lesson link loads a built-in example and never runs it automatically.

Development release

The verified Clio port milestone passed on 2026-10-13 within its recorded scope. This is not a claim of universal historical compatibility. There is no published release or deployed website assumed by this guide. Use the repository's pinned Bun version and the development commands. Package publishing, hosting and broader browser verification are separate milestones.

Development setup