v0.4.3 โ€” VM Parity, Panic Safety & Deadlock Fixes

Code that
reads like
English.

The internet-native programming language with built-in HTTP, databases, crypto, AI, and a JIT compiler. 18 modules. 238+ functions. Zero dependencies.

$ brew install humancto/tap/forge โŽ˜ copy
238+
Built-in Functions
18
Stdlib Modules
30
Interactive Tutorials
626
Tests Passing
Everything built in.
Nothing to install.

Modern development means installing dozens of packages before writing a single line of logic. Forge ships with the internet baked in.

๐ŸŒ

HTTP Server in 3 Lines

Decorators like @server and @get give you a production-ready REST API with zero boilerplate. No framework needed.

๐Ÿ—„๏ธ

Database โ€” Just Query

SQLite and PostgreSQL are built into the runtime. db.query() and db.execute() โ€” no ORM, no driver installs.

๐Ÿ”

Crypto Without Libraries

SHA256, MD5, base64, hex encoding โ€” all built in. crypto.sha256("data") just works.

๐Ÿ“–

Reads Like English

Dual syntax โ€” write set name to "Forge" or let name = "Forge". Both compile the same. Your choice.

๐Ÿค–

AI Built In

Ask LLMs directly with ask "prompt". Built-in chat mode with forge chat. AI is a first-class citizen.

โšก

JIT Compiler

Three execution tiers โ€” interpreter, bytecode VM, and Cranelift JIT. The JIT runs 11x faster than Python on compute-heavy workloads.

๐ŸŽ“

Learn in Your Terminal

30 interactive tutorials built into the CLI. Run forge learn and start writing Forge in minutes โ€” no docs to read first.

๐Ÿš

Shell Integration

Run shell commands, pipe data, check exit codes โ€” sh(), pipe_to(), which(). Replace fragile bash scripts with Forge.

Dual Syntax
Write it your way.

Classic syntax for developers who think in code. Natural syntax for everyone else. Mix them freely โ€” both compile identically.

โœฆ Natural Syntax
set name to "World"
say "Hello, {name}!"

define greet(who) {
    say "Welcome, {who}!"
}

set mut score to 0
repeat 5 times {
    change score to score + 10
}

if score > 40 {
    yell "You win!"
} otherwise {
    whisper "try again..."
}
โš™ Classic Syntax
let name = "World"
println("Hello, {name}!")

fn greet(who) {
    println("Welcome, {who}!")
}

let mut score = 0
for i in range(0, 5) {
    score += 10
}

if score > 40 {
    println("You win!")
} else {
    println("try again...")
}
From API to database in minutes.

No frameworks. No packages. No boilerplate. Just the code that matters.

api.fg โ€” REST API
@server(port: 3000)

@get("/hello/:name")
fn hello(name: String) -> Json {
    return {
        greeting: "Hello, {name}!",
        language: "Forge"
    }
}

@post("/users")
fn create_user(body: Json) -> Json {
    db.execute("INSERT INTO users ...")
    return { created: true }
}
data.fg โ€” Data Processing
let users = db.query("SELECT * FROM users")

let active = users
    .filter(fn(u) { u.active })
    .map(fn(u) { u.name })

term.table(active)

// Export to CSV
csv.write("report.csv", users)

// Or hash some data
let hash = crypto.sha256("sensitive")
say hash
devops.fg โ€” Shell Automation
say sh("whoami")

if sh_ok("which docker") {
    say "Docker installed"
}

let files = sh_lines("ls /etc | head -5")
for f in files {
    say "Found: {f}"
}

// Pipe Forge data into commands
let sorted = pipe_to(data, "sort")
app.fg โ€” Innovation Keywords
// Error handling that reads
safe { risky_function() }
must parse_config("app.toml")

// Retry with a keyword
retry 3 times {
    fetch("https://api.example.com")
}

// Pattern matching + ADTs
type Shape = Circle(Float) | Rect(Float, Float)
match shape {
    Circle(r) => say "r={r}"
    Rect(w, h) => say "{w}x{h}"
}
Performance
Three engines. Pick your tradeoff.

Full stdlib with the interpreter. Raw speed with the JIT. The Cranelift JIT puts Forge alongside Node.js for compute-heavy code.

--jit
10ms
11x faster than Python
Cranelift JIT โ€ข Hot functions
--vm
252ms
Bytecode VM
Compiled bytecode
interpreter
2.3s
Full stdlib access
All 238+ functions available

fib(30) benchmark โ€” lower is better

Rust
1.5ms
Go
4.2ms
Node.js
9.5ms
Forge JIT
10ms
Python
114ms
18 modules. No imports needed.

Every module is available from the first line of code. No package manager, no dependency hell.

math
sqrt, pow, abs, sin, cos, pi, random, clamp
fs
read, write, exists, list, mkdir, copy, rename
crypto
sha256, md5, base64, hex encode/decode
db
SQLite โ€” open, query, execute, close
pg
PostgreSQL โ€” connect, query, execute (TLS)
mysql
MySQL โ€” connect, query, execute, pooling
jwt
sign, verify, decode โ€” HS256/RS256/ES256
http
get, post, put, delete, download, crawl
json
parse, stringify, pretty print
csv
parse, stringify, read, write
regex
test, find, find_all, replace, split
term
colors, table, sparkline, bar, banner
env
get, set, has, keys โ€” environment vars
log
info, warn, error, debug โ€” structured logging
io
prompt, print, args parsing
exec
run_command โ€” external processes
time
now, format, parse, elapsed
npc
Fake data โ€” names, emails, IPs, UUIDs
Type System
Shape data. Teach it tricks.

Define data with thing, attach behavior with give, enforce contracts with power, compose with has. Or use classic struct/impl/interface โ€” both compile identically.

โœฆ Natural โ€” thing / give / power
thing Person {
    name: String,
    age: Int,
    role: String = "member"
}

give Person {
    define greet(it) {
        return "Hi, I'm " + it.name
    }
}

power Describable {
    fn describe() -> String
}

give Person the power Describable {
    define describe(it) {
        return it.name + " (" + it.role + ")"
    }
}

set p to craft Person { name: "Alice", age: 30 }
say p.greet()
say satisfies(p, Describable)  // true
โš™ Classic โ€” struct / impl / interface
struct Person {
    name: String,
    age: Int,
    role: String = "member"
}

impl Person {
    fn greet(it) {
        return "Hi, I'm " + it.name
    }
}

interface Describable {
    fn describe() -> String
}

impl Describable for Person {
    fn describe(it) {
        return it.name + " (" + it.role + ")"
    }
}

let p = Person { name: "Alice", age: 30 }
println(p.greet())
println(satisfies(p, Describable))  // true
thingdefine a data type
craftconstruct an instance
giveattach methods
powerdefine a contract
hasembed + delegate
itself-reference
Channels, spawn, async โ€” built in.

First-class concurrency primitives. No runtime to configure, no async coloring to fight. Spawn tasks, pass messages, await results.

channels.fg โ€” Message Passing
// Create a channel
let ch = channel()

// Spawn a producer
spawn {
    for i in range(0, 5) {
        send(ch, "msg-{i}")
    }
}

// Receive messages
repeat 5 times {
    let msg = receive(ch)
    say msg
}
async.fg โ€” Async / Await
// Natural syntax
forge fetch_data() {
    set resp to hold http.get("https://api.example.com")
    return resp.body
}

// Classic syntax
async fn fetch_data() {
    let resp = await http.get("https://api.example.com")
    return resp.body
}

// Fire-and-forget
yolo { http.post("/analytics", data) }
Debug Kit
Debug like it's 2026.

Forge ships a GenZ-inspired debug toolkit alongside the classics. Same functions, more personality.

๐Ÿ”
sus(x)
= inspect / debug
Inspect any value with type info and structure
๐Ÿ’€
bruh(msg)
= panic / crash
Crash with a message when something is deeply wrong
๐Ÿ’ฏ
bet(expr)
= assert
Assert a condition is true โ€” crash if it ain't
๐Ÿงข
no_cap(a, b)
= assert_eq
Assert two values are equal โ€” no cap
๐Ÿคฎ
ick(expr)
= assert_false
Assert something is false โ€” that's an ick
debug.fg โ€” Plus: cook, slay, ghost, yolo
// Profiling
cook {
    let result = expensive_operation()
}  // prints execution time

// Benchmarking
slay 1000 {
    fibonacci(20)
}  // runs 1000 iterations, prints stats

// Silent execution โ€” swallow all errors
ghost { might_fail() }

// Fire-and-forget async
yolo { send_analytics(data) }

// Classic debugging still works
sus(my_object)        // inspect with type info
bet(score > 0)         // assert it's positive
no_cap(result, 42)    // assert equality
Same task. Fewer lines. Zero deps.

Common tasks that require packages and boilerplate elsewhere are one-liners in Forge.

Task Forge Python Node.js Go
REST API server 3 lines 0 deps 12 lines flask 15 lines express 25 lines stdlib
Query SQLite 2 lines 0 deps 5 lines stdlib 8 lines better-sqlite3 12 lines go-sqlite3
SHA-256 hash 1 line 0 deps 3 lines stdlib 3 lines crypto 5 lines stdlib
HTTP GET request 1 line 0 deps 3 lines requests 5 lines node-fetch 10 lines stdlib
Parse CSV file 1 line 0 deps 4 lines stdlib 6 lines csv-parser 8 lines encoding/csv
Terminal table output 1 line 0 deps 5 lines tabulate 4 lines cli-table 10 lines tablewriter
Retry with backoff 1 line 0 deps 12 lines tenacity 15 lines async-retry 20 lines retry-go

Start forging.

One install. 30 tutorials. Everything built in.

$ brew install humancto/tap/forge โŽ˜