Skip to content
v0.2The road to Pleno 1.0

Code that says
what it means.

Pleno is a readable, dynamically typed language with optional checked types, classes and pattern matching, async built in, and the tools to go with it.

curl -fsSL https://raw.githubusercontent.com/otabekoff/pleno/main/scripts/install.sh | sh
shapes.pln
enum Shape {    Circle(radius),    Rect(width, height)} fn area(shape: Shape): Float {    match (shape) {        case Shape.Circle(r) => return 3.14159 * r * r,        case Shape.Rect(w, h) => return w * h    }} let shapes = [Shape.Circle(2.0), Shape.Rect(3.0, 4.5)];for (shape in shapes) {    print(`${shape}: ${area(shape)}`);}

The language at a glance

Familiar syntax, with the parts you would expect from a modern language.

One toolchain

pleno runs, checks, formats, lints and tests. plm creates projects and manages dependencies. pleno-lsp and pleno-dap power the VS Code extension, which can install all of them for you.

Set up your editor

Where Pleno is

Pleno is at 0.2. It runs real programs today; the plan for 1.0 lists what is left.

Works today

  • Gradual types, classes, enums, generics
  • async and await, channels, mutexes
  • A standard library of 25 modules
  • Formatter, linter, tests, language server, debugger

Before 1.0

  • A frozen language specification
  • Faster execution
  • Destructuring and one error shape
  • Signed releases in package managers

After 1.0

  • A JIT compiler
  • A generational garbage collector
  • A public package registry
  • A self-hosted compiler

Learn Pleno in an afternoon

Fifteen short lessons, each with code you can edit and run in the page.

Start the tutorial