♟️vo-lang is a modern configuration language written from scratch in Rust.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-25 19:12:44 +03:00
src feat(lexer): add numbers 2026-07-25 17:38:03 +03:00
.gitignore feature: adding string literals 2026-07-12 20:01:46 +03:00
Cargo.lock feature: adding string literals 2026-07-12 20:01:46 +03:00
Cargo.toml feature: adding string literals 2026-07-12 20:01:46 +03:00
main.lox feat(lexer): add numbers 2026-07-25 17:38:03 +03:00
README.md change project name 2026-07-25 19:12:44 +03:00

buhran

buhran is a modern configuration language written from scratch in Rust. It is designed as an experimental project focused on research, learning, and language development.

The primary goal of this project is to explore compiler and interpreter architectures deeply, ultimately producing a configuration language that is both human-readable and robust.


Project Goal and Philosophy

This project does not aim to be a production-ready tool from day one. Instead, it serves as a research and development (R&D) sandbox to explore several key domains:

  1. Learning and Implementation: Gaining practical experience with the fundamentals of language design, including Lexing, Parsing, Abstract Syntax Trees (AST), and Evaluation.
  2. The Power of Rust: Leveraging Rust's memory safety, performance, and modern tooling to build an efficient interpreter pipeline.
  3. From Imperative to Declarative: Investigating how to transform a traditional, imperative interpreter architecture into a safe, deterministic, and declarative configuration engine.

Our Journey: In the initial phases of development, we are heavily inspired by the architecture outlined in Robert Nystrom's Crafting Interpreters. While we are bootstrapping our interpreter design using the patterns of the "Lox" language, our ultimate objective is to pivot and prune this architecture into a lightweight, data-oriented configuration language.


Roadmap

The development of buhran is organized into three distinct phases:

Phase 1: Foundations and Interpreter Research (Current Phase)

  • Porting the tree-walk interpreter architecture from Crafting Interpreters to idiomatic Rust.
  • Implementing the Scanner (Lexer) and Parser to generate a structured Abstract Syntax Tree (AST).
  • Evaluating basic expressions, variables, and control flows to establish a working runtime.

Phase 2: Evolution and Pruning

  • Stripping away side effects, complex loops, and imperative features that do not belong in a configuration language.
  • Transitioning the language to be fully declarative and deterministic.
  • Designing and optimizing data structures (such as lists, maps, and nested blocks) inspired by formats like JSON, TOML, and HCL.

Phase 3: Customization and Integration

  • Building a clean, reusable API to embed the buhran parser as a library within other Rust projects.
  • Introducing advanced configuration features such as modular imports and basic templating capabilities.

Getting Started

To run, test, or contribute to this project locally, follow the instructions below.

Prerequisites

Installation and Execution

  1. Clone the repository:
    git clone [https://github.com/your_username/buhran.git](https://github.com/kaanboraoz/buhran.git)
    cd buhran