Skip to content

Eelden Lang

Eelden Lang is a typed, pipe-based data language designed LSP-first. Every pipeline stage has a statically known row shape — so autocomplete, diagnostics, and hover are structural, not heroic.

There is no SQL compatibility.

Design invariants

  1. Data flows left-to-right through |>.
  2. Every stage boundary is independently typecheckable.
  3. Queries are scoped to the current tenant by default.
  4. Types are rigorous at edit time; storage stays dynamic (mismatches → unknown).
  5. Reads and writes share one pipeline model.

Tiny example

eel
users
|> filter status == .paid && balance >= 50.00$usd
|> select { name, email, balance }

Runtime vs parsed-only

SurfaceExecutes today
Mutationsinsert / update / delete
Readsfilter / select / sort / take / skip / distinct
Joinjoin on a ref field (inner)
Aggregategroup … aggregate { count/sum/min/max/avg }
Time travelasof → nearest named snapshot ≤ time
Transactionsatomic { … }Transactions
Tenant opscreate / fork / snapshot / suspend / delete (via language, CLI, or HTTP)
Parsed onlyNotes
across tenants(pred) collectionNot executed yet

See Status for engine-wide limits.

Grammar sketch

program    := (schema | useschema | namedquery | atomicblk | tenantop | query)*
useschema  := "use" "schema" TEXT
namedquery := "query" IDENT "(" [param ("," param)*] ")" "{" (query | atomicblk) "}"
query      := source ("|>" stage)*
source     := IDENT | "across" "tenants" "(" pred ")" IDENT
stage      := filter | select | join | sort | take | skip
            | group | distinct | insert | update | delete | asof
schema     := "schema" IDENT annotation* "{" fielddecl* "}" [transform]

Full stage reference: Pipelines. Schema annotations and transforms: Schemas and Migrations.

Where to go next

Pre-alpha. Local-first. Stdlib-only Rust engine. Tenant concerns shifted left into the database.