SkillAgentSearch skills...

Loxcraft

Language tooling for the Lox programming language.

Install / Use

/learn @ajeetdsouza/Loxcraft

README

<!-- markdownlint-configure-file { "MD033": false, "MD041": false } --> <div align="center">

loxcraft

crates.io

Language tooling for the Lox programming language.

</div>

Installation

cargo install loxcraft --locked

Features

Screenshots

Screenshot of REPL

Screenshot of online playground

Benchmarks

Time taken to execute the benchmark suite (lower is better):

| Benchmark | loxcraft | clox | jlox | | ----------------- | -------- | ------ | ------- | | binary_tree | 8.29s | 8.13s | 26.41s | | equality_1 | 7.17s | 7.73s | 10.01s | | equality_2 | 8.39s | 9.66s | 14.30s | | fib | 10.90s | 10.09s | 21.89s | | instantiation | 10.83s | 12.84s | 14.24s | | invocation | 9.93s | 8.93s | 15.77s | | method_call | 11.01s | 9.12s | 62.03s | | properties | 10.05s | 5.98s | 69.77s | | string_equality_1 | 7.76s | 7.66s | 34.08s | | string_equality_2 | 10.78s | 10.52s | 36.25s | | trees | 9.97s | 8.72s | 72.87s | | zoo | 10.67s | 6.18s | 100.10s |

Benchmarks

Benchmarks were run with the following configuration:

  • Device: Apple MacBook Pro (16-inch, 2021)
  • Processor: M1 Pro
  • RAM: 16 GiB
  • OS: macOS Ventura 13.2
  • Rust: 1.66.1
  • Apple Clang: 14.0.0
  • Oracle JDK: 19.0.2

References

So you want to build your own programming language! Here's some extremely helpful resources I referred to when building loxcraft:

  • Crafting Interpreters by Bob Nystrom: this book introduces you to a teaching programming language named Lox, walks you through implementing a full-featured tree walking interpreter for in in Java, and then shows you how to build a bytecode compiler + VM for it in C. I cannot recommend this book enough.
  • Bob Nystrom also has a blog, and his articles are really well written (see his post on Pratt parsers / garbage collectors). I'd also recommend going through the source code for Wren, it shares a lot of code with Lox. Despite the deceptive simplicity of the implementation, it (like Lox) is incredibly fast - it's a great way to learn how to build production grade compilers in general.
  • Writing an Interpreter in Go / Writing a Compiler in Go by Thorsten Ball is a great set of books. Since it uses Go, it piggybacks on Go's garbage collector instead of building one of its own. This simplifies the implementation, making this book a lot easier to grok - but it also means that you may have trouble porting it to a non-GC language (like Rust).
  • Make a Language by Luna Razzaghipour is a fantastic series. Notably, this book constructs its syntax tree using the same library used by rust-analyzer (rowan).
  • Simple but Powerful Pratt Parsing by Alex Kladov (one of the main authors behind rust-analyzer) is a great tutorial on building a parser in Rust. The rest of his blog is incredible too!
  • rust-langdev has a lot of libraries for building compilers in Rust. To start off, I'd suggest logos for lexing, LALRPOP / chumsky for parsing, and rust-gc for garbage collection.
  • Learning Rust with Entirely Too Many Linked Lists is a quick tutorial on unsafe Rust, which you'll need if you're building a garbage collector yourself.
  • If you want some inspiration for a production-grade language built in Rust, you might want to go through the source code of Starlark and Gluon.

Contributors

View on GitHub
GitHub Stars356
CategoryDesign
Updated5d ago
Forks17

Languages

Rust

Security Score

100/100

Audited on Mar 22, 2026

No findings