v1.0.0 — First Release

Code less.
Script faster.

Brody is a lightweight, expressive scripting language built for clarity and speed. Inspired by Python, Lua, and Bash — zero dependencies, pure C.

Inspired by Python· Lua· Bash
hello.br
1# Brody — simple, fast, powerful 2 3fn greet(name) { 4 return "Hello, " + name + "!" 5} 6 7fn fib(n) { 8 if n <= 1 { return n } 9 return fib(n-1) + fib(n-2) 10} 11 12let name = input("Your name: ") 13print(greet(name)) 14print("fib(10) =", fib(10))
0
dependencies
C
written in pure C
.br
file extension
MIT
open source

// features

Everything you need.
Nothing you don't.

Brody strips away complexity and gives you a clean, expressive scripting environment that just works.

Zero Dependencies

Pure C implementation. No external libraries, no package managers, no configuration files needed.

🔤

Clean Syntax

Readable and minimal syntax inspired by Python. If you know Python, you already know Brody.

🔁

Closures & Recursion

First-class functions with full closure support and recursive calls out of the box.

🐚

Shell Integration

Run shell commands directly from your script with the built-in shell command.

📦

Module Imports

Split your code into modules and import them with a single import statement.

🛠

Rich Built-ins

Math, string manipulation, list operations, type conversion — all built right in.

🔢

Type Inference

Variables automatically infer their type. int, float, string, bool, list — just write let.

📋

Lists & Iteration

Dynamic mixed-type lists with push, pop, join, slice, and full for-loop iteration.

📦

apt / dpkg Install

Install as a real Debian package and use brody system-wide instantly.


// architecture

How Brody works

A tree-walking interpreter written in pure C. Simple pipeline, fast execution.

01

Lexer

Tokenizes your source text into a stream of typed tokens ready for parsing.

02

Parser

Builds an Abstract Syntax Tree via recursive descent — no external parser generators.

03

AST

Node definitions and memory management. Typed union nodes for every expression.

04

Interpreter

Tree-walking evaluator with scoped environments. Executes AST nodes directly.

fizzbuzz.br
1for i in range(1, 101) { 2 if i % 15 == 0 { 3 print("FizzBuzz") 4 } elif i % 3 == 0 { 5 print("Fizz") 6 } elif i % 5 == 0 { 7 print("Buzz") 8 } else { 9 print(i) 10 } 11}

// examples

See it in action

A few scripts that show off what Brody can do right out of the box.

closures.br
1fn make_multiplier(factor) { 2 fn multiply(x) { 3 return x * factor 4 } 5 return multiply 6} 7 8let double = make_multiplier(2) 9let triple = make_multiplier(3) 10 11print(double(5)) # 10 12print(triple(5)) # 15
lists.br
1let nums = [1, 2, 3, 4, 5] 2push(nums, 6) 3 4let total = 0 5for n in nums { 6 total += n 7} 8 9print("Sum:", total) 10print("Joined:", join(nums, ", ")) 11print("Length:", len(nums))
shell.br
1# Run shell commands directly 2shell "echo Hello from bash!" 3shell "mkdir -p /tmp/brody" 4 5let code = shell "ls /tmp/brody" 6 7if code == 0 { 8 print("Directory ready") 9} else { 10 print("Something went wrong") 11}

// install

Get started in seconds

Multiple ways to install Brody. Pick what works for your system.

Debian / Ubuntu recommended
$ wget brody_1.0.0_amd64.deb
$ dpkg -i brody_1.0.0_amd64.deb
$ brody myscript.br
Build from source gcc + make
$ git clone github.com/NickIBrody/brody
$ cd brody && make
$ make install
↓ Download Latest Release

// community

Join the community

Follow development, report bugs, suggest features, or just say hi.

GitHub

Source code, issues, pull requests and releases. Star the repo if you like it.

Telegram

Chat with the author, get updates and discuss ideas for the language.