4 releases

Uses new Rust 2024

new 0.1.2 Mar 31, 2026
0.1.1 Mar 21, 2026
0.1.0 Mar 21, 2026
0.0.1 Mar 2, 2026

#790 in Programming languages


Used in 3 crates

MIT license

480KB
13K SLoC

Lisette

crates.io Go License

Little language inspired by Rust that compiles to Go.

Safe and expressive:

  • Hindley-Milner type system
  • Algebraic data types, pattern matching
  • Expression-oriented, immutable by default
  • Rust-like syntax plus |> operator and try blocks
  • Go-style interfaces, channels, goroutines

Quietly practical:

  • Interop with Go standard library
  • Linter, formatter, 250+ diagnostics
  • Fast incremental compiler, readable Go
  • LSP support for VSCode, Neovim, and Zed

Quick tour

Enums and pattern matching:

enum Shape {
  Circle(float64),
  Rectangle { width: float64, height: float64 },
}

fn area(shape: Shape) -> float64 {
  match shape {
    Shape.Circle(r) => 3.14 * r * r,
    Shape.Rectangle { width, height } => width * height,
  }
}

Go interop and ? for error handling:

import "go:os"
import "go:io"
import "go:fmt"

fn load_config(path: string) -> Result<Cfg, error> {
  let file = os.Open(path)?
  defer file.Close()
  let data = io.ReadAll(file)?
  parse_yaml(data)
}

fn main() {
  match load_config("app.yaml") {
    Ok(config) => start(config),
    Err(e) => fmt.Println("error:", e),
  }
}

Option instead of nil and zero values:

match flag.Lookup("verbose") {
  Some(f) => fmt.Println(f.Value),
  None => fmt.Println("no such flag"),
}

let scores = Map.new<string, int>()
match scores.get("alice") {
  Some(score) => fmt.Println(score),
  None => fmt.Println("score not found"),
}

Pipeline operator:

let slug = "  Hello World  "
  |> strings.TrimSpace
  |> strings.ToLower
  |> strings.ReplaceAll(" ", "-")  // "hello-world"

Typed channels and concurrent tasks:

let (tx, rx) = Channel.new<string>().split()

task {
  tx.send("hello")
  tx.close()
}

match rx.receive() {
  Some(msg) => fmt.Println(msg),
  None => fmt.Println("closed"),
}

Learn more

  • ๐Ÿ’ก quickstart.md โ€” Set up a Lisette project
  • ๐Ÿงฟ safety.md โ€” Go issues Lisette prevents
  • ๐Ÿ“š reference.md โ€” Full language reference
  • ๐ŸŒŽ roadmap.md โ€” Status and planned work

Author

ยฉ 2026 Ivรกn Ovejero

Dependencies

~3.5โ€“7.5MB
~161K SLoC