Lox Implementations - munificent/craftinginterpreters GitHub Wiki
Some brave readers are implementing Lox (or variants thereof) and are making them open source. Particularly brave readers are porting it to other languages.
Are you porting jlox or clox to another language? Feel free to add it to this page!
Lox
C3
C
- zlliang/clox
- CabooseLang/Caboose
- calebschoepp/nqq (article)
- ghost-language/cghost
- jalalmostafa/clox
- Jason2605/Dictu
- valkarias/Pa
- KOREAN139/clox
- nicdard/loxs
- moria-world/emo
- tinwe6/loxi
- tung/clox (bytecode VM with computed gotos + extra language features, article)
- victorgomes/loxvm
- wy3/lox
- ImTouchk/CLox
- baioc/clox (bytecode)
- chidiwilliams/clox (bytecode)
- Roderland/clox (bytecode)
- bayerf/Lox68k (bytecode, complete, extended) Port to a Motorola 68008 single board computer
- HallofFamer/Lox2 (bytecode, extended with optional type system)
- ravener/clox
- FrederikTobner/cellox
- woupiestek/clox
- vincepr/c_compiler (bytecode, extended, wasm runs in browser)
- xiaohuangren1001/lox-efi (bytecode) Port to UEFI Firmware
- txloc1909/lox (bytecode vm in
clox/) - molee1354/simscript (bytecode, extended)
- Natniif/clox
- ubermenchh/clox
- AndreiMoraru123/clox (vanilla Lox on master + challenges solutions/attempts on feature branches)
- jhmcaleely/clox-pico clox ported to Pico Microcontrollers (article) with additional peek, poke & bitwise op support (article).
- paudsu01/clox (bytecode)
- stjmm/loxOverride (clox w/ challenges and extra features)
- shelter-kytty/hammer-interpreter (functional language implementation based on CLox. Includes an AST phase, tail calls)
- thecount12/lux (bytecode, extended) Plan 9 C (
8c/mk) with POSIX port. Site: luxlang.dev
C++
- aakshintala/cpplox (Interpreter only in C++17 with Variants instead of visitor)
- aggsol/lox-simple
- ASMlover/loxcc (interpreter & bytecode)
- calebkoy/cplox (source-to-bytecode compiler and interpreter, without native functions)
- chanryu/cloxx (interpreter + mark-and-sweep garbage collector)
- codingpotato/Lox-modern-cpp (bytecode)
- DaanPosthuma/lox (interpreter (using dynamic dispatch instead of visitor))
- flyingalex/cpp_lox(interpreter)
- GeneralPoxter/lox (interpreter + extra challenges)
- hashemi/cloxpp (bytecode)
- Jeff-Mott-OR/cpplox (faster than clox)
- mspraggs/loxx
- pkusensei/clox (bytecode)
- rkirsling/cclox
- spraza/lox-cpp
- stheis2/ppclox
- the-lambda-way/CppLox (interpreter)
- ThorNielsen/loxint
- TobiPristupin/lox (Interpreter + some extra features)
- veera-sivarajan/lang0 (Interpreter with Lists and Lambdas)
- vilbedawg/jlox-cpp (Tree-walk interpreter with lists)
- asakidaisuke/levi
- chwwhc/Surpher (tree-walk interpreter in C++17)
- uvxwx/lox1
- ecyk/cpplox (tree-walk + bytecode)
- harishtpj/HPI (Tree walking interpreter with online playground)
- TA-800/Loxpp (Tree-walk interpreter, support for classes coming soon)
- mrjameshamilton/cpplox (A Lox interpreter and LLVM compiler)
- yzabuair/cpplox (A Lox tree-walk interpreter in C++)
- ttheghost/loxpp-interpreter (Tree-Walk Interpreter in cpp)
- ananthvk/cpp-lox (bytecode + bytecode serialization)
- penelopeysm/lox-cpp (bytecode)
- musabkas/crafting-interpreter (Lox interpreter - Loxi - in C++)
- IDragnev/cpplox (bytecode + extended language)
C#
- TerrellAW/DotLox (interpreter)
- nrosa01/CSLox (interpreter)
- ByronMayne/LoxSharp
- Captain-Quack/Lox
- collenirwin/Loxish
- drewbanas/cloxcs (bytecode)
- drewbanas/jloxcs
- h2oboi89/lox
- JasperDre/CSLox
- jonnyboyC/cs-Lox
- LoxScript
- MadHed/lox.net
- mrahhal/CSharpLox
- Nyhilo/NovaLox
- perlang-org/perlang (Lox-based language with (inferred and explicit) static typing support. Web page is at https://perlang.org
- perlun/cslox (incomplete)
- richsoft/CsLox
- shasta9/nlox
- SirCxyrtyx/cslox
- stevehalliwell/ulox-work (Both Tree-Walking and ByteCode interpreter inside Unity Game Engine.)
- tslater2006/Gravlox
- NoahBPeterson/csLox (Interpreter with demo)
- Jay-Madden/SharpLox (Tree walking interpreter with minorly modified syntax)
- FrederikTobner/Kellox
- Monsoonexe/RazerLox
- jmj0502/LSharp (Tree-Walking interpreter for a Lox superset.)
- clrudolphi/dlrLox (Lox implemented on the .NET dynamic runtime)
- robinlant/loxsharp (Tree-Waliking interpreter without inheritance and with some challanges done in main branch )
- escobar-west/csLox (interpreter)
- campierce/cslox
- reacheight/crafting (tree-walk implementation with basic pattern-matching support, written in C# 15 using functional programming elements)
Ceylon
Clojure
- raghavio/clojox
- ceronman/cloxure
- narimiran/cljox (interpreter)
Common Lisp
Crystal
- avrame/crylox
- dorianmariefr/crlox
- rebeccabuckingham/crystal-craftinginterpreters
- sauer2/crystalline-lox
- huynguyenau/lox-lang-crystal
D
Dart
- adeys/dlox
- rkirsling/dlox
- sma/lox
- BertrandBev/dlox bytecode VM with a neat little online playground
- definev/dlox
- jackdreilly/jlox
- ChessMax/dox
- roboli/lox_dart
Delphi
- bru32/PLOX (scanner)
- MarceloMelo/TheLoxLanguage4Delphi (interpreter & bytecode)
- derekdogg/Lox_Scanner (bytecode)
Dictu
Elixir
Erlang
Fortran
- awvwgk/flox (interpreter)
F#
- jmonasterio/flox_sharp_interpreter
- lust4life/lox-box/f# (interpreter)
Free Pascal
- JulStrat/loxip (interpreter - work in progress)
- jdehaan2014/fplox (bytecode virtual machine)
- tangorcraft/fplox-vm (bytecode vm)
Go
- aliwalker/golox
- dabbertorres/golox
- goropikari/golox (interpreter)
- hutcho66/glox (interpreter with multiple additions)
- jfourkiotis/golox
- marcopacini/go-lox
- mohitranka/golox
- paulja/glox
- pravj/glox
- Roderland/glox (Interpreter)
- Shri333/golox (interpreter)
- nanmu42/bluelox (and an online playground in WASM)
- chidiwilliams/glox
- rami3l/golox (bytecode)
- michael-go/lox (interpreter, under golox/ folder)
- nickharrismcr/glox (bytecode with extensive language additions, imports, exceptions, concurrency and raylib-go integration)
- t3snake/golox (jlox port in go, clears all tests in codecrafters test suite)
Hack
Haskell
- ccntrq/loxomotive
- Thomas-Neill/hlox
- sudo97/hlox (tree-walk, no classes)
- 0rphee/xolsh (tree-walk, passes
jloxtest suite, with online playground.) - TheBizzle/lox
Haxe
Inform 6
- GitLab:Natrium729/infolox (bytecode)
Java
- t1ym/jlack (unique language with extra features)
- AmrDeveloper/Tank
- BlinkLang/BlinkLang
- caique/jlox
- Dandigit/pl-projects/jlox
- fsacer/FailLang
- Geert-Guldentops/jlox
- JasperDre/JLox
- jbduncan/jlox
- lucaspolo/jlox
- nicdard/loxs
- paudsu01/JLox (Interpreter)
- perlun/jlox (incomplete)
- protasm/jblox (Java bytecode Lox compiler/interpreter)
- SayedHajaj/DrawLang (article)
- vighneshq/jlox
- Roderland/lox (Interpreter)
- Leonardpepa/jlox
- Return5/R5Jlox
- microsoftjava/java_lox
- mrjameshamilton/jlox (An optimizing Lox compiler for the JVM using ProGuardCORE for Java bytecode generation)
- AndreiMoraru123/jlox (vanilla Lox on master + challenges solutions/attempts on feature branches)
- sravand123/TinkerScript (interpreter with tons of new features)
- buenvyron/ci-jlox (scanner done)
JavaScript
Julia
- GitLab:Natrium729/lox.jl (interpreter)
- nathanleiby/jlox (interpreter)
- lukemerrick/JuLox.jl (interpreter)
- penelopeysm/Lox.jl (interpreter)
Kotlin
- anellie/klox,
- DichotoMe/klox
- felipesabino/lox-kotlin,
- GraydenH/klox,
- itskola/lox-kotlin
- mhashim6/klox,
- pin3da/CraftingInterpreters (interpreter)
- Sharparam/klox,
- HallofFamer/ktlox,
- mrjameshamilton/klox (A Kotlin implementation of lox with a JVM backend built using ProGuardCORE)
- cybergrouch/klox
- montreal91/RLC (Lox -> JVM bytecode compiler written from scratch)
- AymaneTech/klox (Jlox part 1 of the book)
Lua
MoonBit
- yj-qin/moonlox (bytecode)
Nim
- cabhishek/nimlox
- nc-x/crafty
- nocturn9x/japl (bytecode)
- rockcavera/nim-nlox
- rockcavera/nim-nloxvm (bytecode)
OCaml
- unfode/ocaml_lox
- blu-bird/bagol (interpreter - work in progress)
- ludwigpacifici/saumon
- samarthkishor/ocamlox (interpreter)
- tjammer/olox
- ldmnt/mlox (interpreter)
- edzdez/ml-lox
Odin
- OrigamiDev-Pete/odinlox (bytecode)
- Nrosa01/OdinLox (bytecode)
- Noahdyn/olox (bytecode)
- shettysach/Loxi (bytecode with a playground)
- nickharrismcr/Odlox (bytecode with extensive language additions, imports, exceptions and raylib bindings)
Onyx
- Syuparn/onylox (interpreter)
Perl
- ccntrq/plox (incomplete)
- dnmfarrell/Perl-Lox (interpreter)
PHP
PowerShell
- UnixY2k/PSLox (interpreter)
Python
- ramtinJ95/rj-pylox (Interpreter)
- ubermenchh/pylox
- FallenDeity/LoxInterpreter (inbuilt callables, new keywords, and lox native libraries)
- 1Hibiki1/locks-py
- yashrathi-git/loxscript
- BolunThompson/pylox
- Esamanoaz/plox (interpreter)
- iechevarria/pylox
- JHonaker/pylox
- lonelycoder306/plox (Libraries, builtin functions, imports, arrays, I/O, and much more.)
- kathleenbanawa/pylox
- kinshukk/pyterpreter
- kris-gaudel/py-lox (interpreter)
- mjx/pylox
- moreati/pylox
- MtScience/PyLox (interpreter, plus two new operators and a set of native functions)
- nkawaller/pylox (interpreter)
- nocturn9x/japl
- RoelAdriaans/yaplox
- selectnull/pylox
- ronsh909/pylox (interpreter)
- justnat3/pox
- mulhod/pylox
- brkp/pox
- ZhaoChuyang/plox (interpreter)
- ImAKappa/pylox
- BaLiKfromUA/pylox (tree-walk interpreter)
- txloc1909/lox (tree-walk interpreter in
pylox/) - acinis/losos (WIP)
- HETHAT/LoxPy (interpreter)
- SamuelValentini/pylox (interpreter extended with fixed-size arrays)
- ostin-r/pylox (sans class inheritance, didn't do challenges at end of chapters)
- HomoKubrickus/loxygen (strictly typed with a
pytestplugin for easily running the original tests) - skribster/pylox (tree-walk interpreter)
- eliasdejong/plox (tree-walk interpreter)
Racket
ReScript
Ruby
- ArminKleinert/SlowLox,
- LevitatingBusinessMan/rulox (interpreter)
- perlun/cslox (Ruby conversion of the AstGenerator Java class from jlox),
- Famished-tiger/loxxy (Passes
jloxtest suite and executeslox.loxflawlessly) - radanskoric/ruby_lox (Imitates Java code style and layout from the book to make it easier to follow along)
- mdesantis/rlox (interpreter, passes
jloxtest suite) - barisozmen/ruby_on_lox (jlox, implements each chapter in a discrete commit)
Rust
- 1ort/lox.rs (tree-walk interpreter)
- fampiyush/rlox (Tree-walk Interpreter)
- hln33/rlox (Tree-walk Interpreter)
- vortexofdoom/crafting-interpreters-rust
- YangchenYe323/lox
- aalhendi/loxiest (bytecode, clox parity)
- AaronStGeorge/cat-lox
- abesto/clox-rs (bytecode with a playground)
- abesto/jlox-rs (interpreter with a playground)
- adambiltcliffe/rlox (bytecode)
- ajeetdsouza/loxcraft (bytecode VM, REPL, language server, online playground)
- alisww/lax
- anellie/cloxrs (bytecode)
- brightly-salty/rox (interpreter)
- darksecond/lox (bytecode)
- Harmful-Alchemist/rilox (interpreter)
- HarveyHunt/loxr
- jaredh159/rlox (interpreter)
- jeschkies/lox-rs (interpreter)
- jonnyboyC/spacelox
- Lapz/rox
- LevitatingBusinessMan/Loxidation (bytecode)
- mariosangiorgio/rulox
- mayhewj/lox
- mchlrhw/loxide (interpreter)
- nt591/lox-rust (bytecode)
- radogost/rlox (interpreter)
- rafasumi/rustlox (interpreter)
- rctcwyvrn/rlox (bytecode)
- rodaine/rlox
- rovjuvano/cloxrs (line-by-line port of clox to Rust with over 1500
unsafeblocks, 90%unsafefunctions) - sasurau4/lox-rust (interpreter)
- silmeth/yarli
- smbl64/lox (interpreter)
- toyboot4e/loxrs (interpreter)
- tdp2110/crafting-interpreters-rs (interpreter/bytecode)
- trevarj/roxt (interpreter/bytecode)
- yanchith/relox
- glella/lako
- ceronman/loxido (bytecode)
- rami3l/dolores (interpreter)
- diegofreijo/rlox-vm (bytecode)
- pdogr/lox-rs (interpreter)
- veera-sivarajan/bessy (bytecode with a playground)
- gaxx/rox (bytecode with some implementation notes with simplified chinese translation)
- mideb/loxjit (a simple JIT compiler for x64 using inline caches)
- tseeker/rust-crafting-interpreters-part-1 (interpreter)
- michael-go/lox (bytecode, under rslox/ folder)
- zackradisic/rust-vs-zig (bytecode)
- zhouxs1023/rslox (bytecode)
- woupiestek/rlox
- boranseckin/rocks (interpreter)
- sagark4/rlox_ast_walk (interpreter)
- ryotsu/rox (bytecode, with a web playground)
- fabianbinna/lox-r (interpreter)
- WiHceeg/rilox (interpreter)
- hahn324/lox_treewalk (tree-walk interpreter)
- hahn324/lox_bytecode_vm (bytecode)
- danieldidiobalsamo/lox_interpreter_rust (tree-walk interpreter)
- WenzeJin/rlox (tree-walk interpreter, will support list and map)
- zhjngli/rustlox (tree-walk interpreter)
- Cheshulko/Lox-interpreter-rs (interpreter)
- behai-nguyen/rlox (interpreter, including all author-provided test scripts)
- francescoaristei/rox (tree-walk interpreter)
- francescoaristei/rox_bytecode (bytecode)
- zooeywm/zloxer (tree-walk interpreter)
- studentenherz/rlox (Tree-walk Interepreter, passes
jloxtests*) - kmlupreti/rlox_treewalk (tree-walk interpreter)
- tidefield/lox-rs (tree-walk interpreter)
- IDragnev/rlox (tree-walk interpreter)
Scala
- bencwallace/slox
- grokking-vietnam/grox (A functional, cross compiling Scala, ScalaJS interpreter)
- fighur/sclox
Scheme
Spark
Standard ML
Swift
- alexito4/slox
- eirikvaa/slox
- danielctull/slox
- hashemi/bslox (bytecode)
- hashemi/slox
- heckj/slox
- SwampThingTom/swift-lox
- woolsweater/slox
- RevLogi/slox
- GoldfieldGeek/KDFLox (Both)
TypeScript
- zlliang/tslox (interpreter)
- berkio3x/ferrous (interpreter)
- langium/langium-lox (interpreter with vscode extension)
- jeroenptrs/tslox
- quantomistro/lox.ts
- mtso/lox (tree-walk interpreter)
- golergka/ts-lox (tree-walk interpreter)
- williamsk91/tslox (interpreter)
- aadonkeyz/jslox (web playground)
- DavidTimms/loxdown (interpreter with static type system and web playground)
- chidiwilliams/loxjs (interpreter with web playground at chidiwilliams/lox-playground)
- alexkowalenko/alox (interpreter)
- jhonnatangomes/tsrabbit (interpreter)
- defpis/tslox (interpreter)
- woupiestek/tslox (both)
- danvk/gravlax (interpreter with currency support)
- bpetermann/ts-lox (interpreter)
- roboli/lox-ts
- liangyuanruo/tslox (interpreter)
- hussein-saad/tslox (tree-walk interpreter)
Wren
Xojo
Zig
- jmonasterio/zlox_zig_interpreter
- jwmerrill/zig-lox (bytecode)
- raulgrell/zox (bytecode)
- nathanleiby/zlox (bytecode)
- zackradisic/rust-vs-zig (bytecode)
- tusharhero/zlox
- zlw/zlox (bytecode)
- tushyagupta81/interpreter-zig
- tumirnix/exla/zig-lox (bytecode)
- Himumi/loz (bytecode)