dimgigov e8084b2840 Phase 7.10: command-line args + buxc2 check/build working
Runtime:
- bux_argc()/bux_argv() — command-line arg access from Bux programs
- g_argc/g_argv globals — set by C main() wrapper

Compiler:
- C backend generates extern g_argc/g_argv + int main(argc,argv) wrapper
- main.bux reads args via bux_argc/bux_argv and passes to Cli_Run

buxc2 verified:
- buxc2 version — reads CLI args correctly
- buxc2 check <file.bux> — lexes, parses, type-checks, generates C
- buxc2 build <file.bux> <output.c> — writes C output

PLAN.md updated with Phase 7.10 status and remaining work.
All 18 examples pass, all unit tests pass.
2026-05-31 16:53:03 +03:00

Bux Programming Language

Status: Bootstrap phase — compiler written in Nim, targeting self-hosting.

Bux is a fast, compiled, strongly-typed systems programming language inspired by Rux. The long-term goal is a self-hosted compiler with a minimal runtime, native x86-64 backend, and modern tooling.

Bux improves on Rux with a richer standard library (Map, String), modern error handling (Result, Option, and the ? operator), and a portable C transpiler backend that runs on Linux, macOS, and Windows.


Quick Start

# Build the bootstrap compiler (Nim)
make build

# Create a new project
bux new hello
cd hello

# Build and run
bux run

Syntax Preview

Hello World

import Std::Io::PrintLine;

func Main() -> int {
    PrintLine("Hello, Bux!");
    return 0;
}

Error Handling with ?

enum Result {
    Ok(int),
    Err(String)
}

func Divide(a: int, b: int) -> Result {
    if b == 0 {
        return Result_NewErr("division by zero");
    }
    return Result_NewOk(a / b);
}

func Compute() -> Result {
    let x: int = Divide(10, 2)?;  // auto-propagates Err
    let y: int = Divide(x, 5)?;
    return Result_NewOk(y);
}

Structs and Methods

struct Rectangle {
    width: int;
    height: int;
}

extend Rectangle {
    func Area(self: Rectangle) -> int {
        return self.width * self.height;
    }
}

func Main() -> int {
    let rect: Rectangle = Rectangle { width: 10, height: 5 };
    PrintInt(rect.Area());
    return 0;
}

Generics

func Max<T>(a: T, b: T) -> T {
    if a > b {
        return a;
    }
    return b;
}

func Main() -> int {
    let m: int = Max<int>(10, 20);
    PrintInt(m);
    return 0;
}

Hash Map

import Std::Map::{Map, Map_New, Map_Set, Map_Get};

func Main() -> int {
    let m: Map = Map_New(16);
    Map_Set(&m, "answer", 42);
    PrintInt(Map_Get(&m, "answer"));
    return 0;
}

Features

Feature Status
Types Primitives, pointers, slices, tuples, structs, enums, unions
Generics Generic functions (monomorphization)
Algebraic Enums Enums with data (Result, Option)
Pattern Matching match with guards
Methods extend blocks for struct methods
Interfaces interface + extend for trait-like behavior
Error Handling Result<T,E>, Option<T>, and the ? operator
Standard Library Io, Array, String, Map
Backend C transpiler (bootstrap)
Tooling bux new, bux build, bux run, bux check

Project Structure

bux/
├── src/              # Bootstrap compiler (Nim)
├── stdlib/           # Standard library (.bux + .c runtime)
├── examples/         # Example programs
├── tests/            # Unit tests (Nim)
├── docs/             # Documentation
├── README.md
├── PLAN.md           # Roadmap to self-hosting
└── Makefile

Build & Test

# Build compiler
make build

# Run all tests
make test

# Run example programs
make test-examples

# Clean build artifacts
make clean

Documentation


License

MIT

S
Description
No description provided
Readme MIT 12 MiB
Languages
C 74.6%
Nim 23.4%
HTML 1.2%
Makefile 0.3%
Go 0.3%