Clarity, compiled.

A readable language that compiles to native code and WebAssembly.

shapes.lcd
choice Shape
    Circle(radius: float)
    Square(side: float)
    Point

task area(self: Shape) -> float
    return match self
        Circle(radius) -> 3.14159 * radius * radius
        Square(side) -> side * side

print Square(side: 3.0).area()
lucid check shapes.lcd
shapes.lcd:9:9: error E0316: this `match` does not cover every `Shape`
  note: add an arm for `Point`

Explicit where it matters.

Signatures say what changes, what fails, and what runs on another thread. The compiler infers the rest.

What it doesWhat you write
Readable by defaulttask is_adult(self: User) -> bool
Inferred ownership, value semanticsvar b = a
Memory safety without a garbage collectorif index is not none
Native code through Craneliftlucid build hello.lcd
WebAssembly for the browserlucid build --target web hello.lcd
Explicit errors, mutation, and concurrencybump(change total, 3)
Diagnostics and tools for agentslucid check --json main.lcd
All features, with examples and limits

Eight milestones done. The ecosystem is next.

2/9

M8 steps done. M8 adds Linux, a package registry, SQLite, cryptography, a language server, and the 1.0 stability promise.

Read the roadmap
  1. M0DesignDone
  2. M1Hello worldDone
  3. M2Core languageDone
  4. M3DataDone
  5. M4Ownership performanceDone
  6. M5A usable languageDone
  7. M6BrowserDone
  8. M7Concurrency and serversDone
  9. M8EcosystemIn progress
  10. M9Self-hosted front endPlanned

A handful of commands.

Every command also speaks JSON with --json. Binaries are not published yet, and the source repository is not public.

CommandWhat it does
lucid run hello.lcdCompiles with a JIT and runs it.
lucid check hello.lcdReports errors, and prints nothing when there are none.
lucid test hello.lcdRuns the file’s tests.
lucid build hello.lcdWrites a standalone executable.
lucid build --target web hello.lcdWrites one .js file for a browser or Node.
lucid explain E0316Explains a diagnostic code.
What a build from source needs