Showing content from https://github.com/ajeetdsouza/loxcraft below:
ajeetdsouza/loxcraft: Language tooling for the Lox programming language.
Skip to content Navigation Menu
Search code, repositories, users, issues, pull requests...
Saved searches Use saved searches to filter your results more quickly
Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert ajeetdsouza/loxcraft
cargo install loxcraft --locked
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 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
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.
About
Language tooling for the Lox programming language.
Topics Resources License Stars Watchers Forks
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4