Comparison Guides
Braid vs Python
Speed: Braid compiles to native code via C codegen + GCC, typically 10-100x faster than CPython for tight loops. Braid's ARC memory management avoids CPython's reference counting overhead per operation. Tensors in Braid are stack-allocated or GPU-resident with no Python object overhead.
Typing: Braid uses strong static typing with Hindley-Milner inference. Python uses gradual typing (type hints) that are not enforced at runtime. Braid catches type errors at compile time without requiring explicit annotations everywhere.
Syntax: Both use Python-like keywords but Braid uses braces and semicolons instead of indentation. Braid adds explicit fn declarations and typed parameters.
# Python
def add(x, y):
return x + y
// Braid
fn add(x: int, y: int) -> int {
return x + y
}Braid vs Rust
Safety model: Rust enforces memory safety through its borrow checker with ownership, lifetimes, and borrowing rules. Braid uses ARC with cycle detection — less strict, no borrow checker errors, but may have runtime reference counting overhead. Both prevent use-after-free and double-free.
Syntax: Braid uses fewer sigils (&, 'a, <, >) and has simpler generics syntax. No turbofish (::<>).
// Rust
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() { x } else { y }
}
// Braid
fn longest(x: string, y: string) -> string {
if len(x) > len(y) { return x }
return y
}Braid vs C
Memory model: C requires manual malloc/free. Braid uses ARC with automatic deallocation. No dangling pointers, no memory leaks (cycle detector handles reference cycles).
Metaprogramming: C uses macros via #define (text substitution). Braid supports @autograd and @layer decorators, Diameter constructs, and inline compiler.eval() for metaprogramming.
// C
typedef struct { int x; int y; } Point;
Point* p = malloc(sizeof(Point));
p->x = 10;
free(p);
// Braid
struct Point { x: int; y: int }
let p = Point { x: 10, y: 20 }
// automatically freed when out of scopeBraid vs Go
Concurrency: Go uses goroutines with channels. Braid uses spawn for green threads and async/await for cooperative concurrency. Braid's concurrency model is similar to Go's but with explicit async syntax borrowed from Rust/JS.
Syntax: Go uses C-like syntax but omits semicolons in practice. Braid requires semicolons explicitly. Braid has more expressive type inference (Hindley-Milner) compared to Go's limited := inference.
Braid vs Python for ML
Runtime compilation: Braid compiles ML models ahead-of-time via its tensor graph compiler, fusing operations into optimized kernels. Python relies on eager execution (PyTorch) or JIT compilation (JAX, TorchScript) at runtime.
DTS: Braid's DTS (Distinction Tree) branching enables multi-dimensional dispatch for tensor operations that would require nested if/else or pattern matching in Python.
Feature Comparison Table
| Feature | Braid | Python | Rust | C | Go |
|---|---|---|---|---|---|
| Typing | Static + inference | Dynamic | Static + inference | Static (weak) | Static + inference |
| Memory | ARC + cycles | GC | Ownership | Manual | GC |
| Tensors | Native [[ ]] | Library | Library | None | Library |
| Autograd | Built-in @autograd | Library | Library | None | None |
| Concurrency | spawn/async/await | async/await | async/await | Threads | Goroutines |
| FFI | extern + native | ctypes/CFFI | extern | Header includes | cgo |
| Dialectics | Diameter | None | None | None | None |
| Web framework | Junction + Bond | Django/Flask | Rocket/Actix | None | Gin/Echo |