All projects

Able

An experimental programming language that brings ideas from Ruby, Scala, F#, and Go into a language of its own.

Technologies: Go, TypeScript, Tree-sitter

GitHub repository

A language from the ground up

Able is an experimental programming language that takes cues from Ruby, Scala, F#, and Go. It explores language design as a complete system: syntax, semantics, parsing, interpretation, and compilation.

Using LLMs and agent-assisted engineering, I have built a Tree-sitter parser, tree-walking interpreters in TypeScript and Go, a bytecode interpreter, a Go transpiler, and a compiler to JVM bytecode across the project’s evolving toolchains.

One language, multiple implementations

The interesting challenge is making different implementations mean the same thing. Parsing an expression is one piece; preserving its behavior across interpreters and compilation paths is another.

The public workspace follows a specification-first approach. Its active Go tree-walker and bytecode VM share a canonical AST contract, with fixtures used to check that the runtimes stay in semantic agreement. Older workspaces preserve the earlier toolchains as the language evolves.

What this project explores

  • Language syntax and a clearly defined semantic model.
  • Parsing and abstract syntax trees with Tree-sitter.
  • Tree-walking and bytecode execution.
  • Translation between language and runtime representations.
  • Agent-assisted engineering guided by explicit design constraints.

Able is a language-design project as much as it is a collection of implementations. The specification and public repository are the best starting points for the current work.