dimgigov cf074bec89 feat: add algebraic enums (tagged unions) support
- Generate tagged unions in C backend for enums with data
- Add HirEnumVariant type with fields and namedFields
- Support _Tag and _Data field access in sema
- Support enum variant constants (Result_Ok, Result_Err)
- Support _Data union field access (Ok_0, Err_0, etc.)
- Add algebraic_enums.bux example

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

  let r: Result = Result { tag: Result_Ok };
  r.data.Ok_0 = 42;
2026-05-30 23:50:33 +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.

Quick Start

# Build the bootstrap compiler (Nim)
make build

# Create a new project
bux new hello

# Build and run
bux run

Syntax Preview

import Std::Io::PrintLine;

func Main() -> int {
    let message: *char8 = c8"Hello, Bux!";
    PrintLine(message);
    return 0;
}

Roadmap

See PLAN.md for the full roadmap to self-hosting.

License

MIT

S
Description
No description provided
Readme MIT 17 MiB
Languages
C 60.1%
Nim 32.8%
Shell 4.8%
HTML 0.9%
Makefile 0.6%
Other 0.7%