A dynamically typed, interpreted language compiled and executed on its own virtual machine.
Find a file
2025-05-27 01:56:19 +03:00
examples/benchmark feat(examples): add benchmarks 2024-02-18 09:42:30 +03:00
src build: update Rust edition to 2024 and specify Rust version 2025-05-27 01:56:19 +03:00
.gitignore init: new rust project 2023-07-14 11:23:28 +03:00
Cargo.lock init: new rust project 2023-07-14 11:23:28 +03:00
Cargo.toml build: update Rust edition to 2024 and specify Rust version 2025-05-27 01:56:19 +03:00
README.md docs: add readme 2024-02-18 09:43:56 +03:00
rust-toolchain.toml build: switch to nightly 2024-02-21 10:57:58 +03:00

Loxest

What is Loxest

A dynamically typed, interpreted language compiled and executed on its own virtual machine.

It aims to compatible with Bob Nystrom's Lox implementation in C.

Installation

Stable binaries are available on the releases page.

Usage

Running the REPL

./loxest

Running a file

./loxest <filename>.lox

Features

Loxest comes with a disassembler and a trace execution printing. To enable these features, follow the development guide and enable the features within the Cargo.toml file or on the command line for a single run.

Cargo.toml

Uncomment this line:

# default = ["debug-trace-execution", "debug-print-code"]

CLI

To run a single feature:

cargo run --release --features "debug-print-code" # or whatever feature

To run all features:

cargo run --release --all-features

Development

To download and develop on Loxest, clone the repository and build using Cargo. Cargo, as well as Rust can be installed via rustup.

Once downloaded, navigate to the project root directory and run:

cargo build --release

Documentation

TODO. Someday. Maybe. Or read the code.

Notes

The benchmark examples are copied from the craftinginterpreters repository and are under the MIT License.

License

MIT License - Copyright (c) 2024 Abdulrazzaq Alhendi.