bendlang/bend

▲ 4,069 stars today★ 23,719⑂ 750

Bend 2: a fast language that blocks AI mistakes via proof. Install: curl -fsSL https://bend-lang.com/install.sh | sh

About bendlang/bend

bendlang/bend is an open-source project on GitHub, mainly written in TypeScript. Bend 2: a fast language that blocks AI mistakes via proof. Install: curl -fsSL https://bend-lang.com/install.sh | sh It currently holds 23,719 stars and 750 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the Today's Trending board.

GitHub Repository Details

Repository bendlang/bend · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

https://github.com/bendlang/bend/blob/HEAD/Bend: a fast language that blocks AI mistakes via proof

In the post-AGI economy, humans will eventually stop writing and reading code, but we still need an ambiguity-free language to communicate our intents to the AIs building the world around us. Bend is that language.

With laws, intents can be more precise than natural language. With proofs, we can mechanically verify the AI implemented our prompts correctly. And with a fast compiler, we can run that code at peak compute.

That's Bend - and nothing else.

Bend runs FAST

Target: be as fast as C on the CPU, as fast as CUDA on the GPU. Status:

https://github.com/bendlang/bend/blob/HEAD/Runtime benchmarks: Bend vs C, TypeScript, Lean, on 1 core, 16 cores and the GPU

Thanks to strong types, purity and linearity, Bend compiles to fast executables as fast as hand-written C (single-core), and even faster (on 10000s cores). The entire language runs on the GPU, with full memory unification.

Bend checks FAST

Target: outperform every proof assistant by several OOMs. Status:

https://github.com/bendlang/bend/blob/HEAD/Checker benchmarks: Bend vs Isabelle, Agda, Lean, Rocq

Bend's compiler is so powerful it can verify mathematical proofs. Usually, this is slow. Bend is not. It checks, in under a second, files that other projects would take minutes, making proofs way more practical.

Bend is PARALLEL

No threads, no locks, no kernels to write. Split the work in two, and Bend spreads the calls over every core it can find, then joins them back. Below, pow2(20) divides until one task sits on each of 4,096 GPU cores:

https://github.com/bendlang/bend/blob/HEAD/pow2 splitting over 4,096 GPU cores, then folding back

Bend BLOCKS mistakes - with proof

PROBLEM: How can you trust AI code, without reading it?

SOLUTION: By forcing your AI to write a correctness proof.

Bend introduces LAWS.bend, a file where you declare rules that your app must not break. Bend's compiler then guarantees that these laws always hold, by demanding mathematical proof whenever your code is edited. For example, consider a game with one law: winning is impossible. Here's how it plays out:

Law: winning is impossible
https://github.com/bendlang/bend/blob/HEAD/The player walks up and bumps the wall of the flag's room
So far, it works!

New feature: "Claude, make the board wrap around"

Without LAWS.bend:
https://github.com/bendlang/bend/blob/HEAD/The player wraps around the edge and takes the flag
Laws broken. AI mistake: merged.

With LAWS.bend:
https://github.com/bendlang/bend/blob/HEAD/A wall on the far edge stops the player
Laws intact. AI mistake: blocked!

Without LAWS.bend, a bug was merged. With it, the AI had to retry, until no bugs were left! In this case, it added a wall, but it could have moved the flag, made the room kill you, or whatever. The only thing it can't do is commit a bug, because it is mathematically impossible to break laws in LAWS.bend. The compiler enforces it.

Using LAWS.bend is simple.

1. Ask your AI to formalize your app's rules in LAWS.bend. Example:

2. Ask your AI to run bend PROOF.bend after editing any code.

3. That's it. Rejoice as your app never again breaks or violates your rules.

You can also edit LAWS.bend yourself. Here's how it looks:

# LAWS.bend
law you_cant_win:                           # "winning is impossible"
  for moves: List                # any sequence of moves
  board = Game.replay(Game.start(), moves)  # replayed from the start
  {Game.is_won(board) == False{} : Bool}    # never leads to victory
# PROOF.bend
def Laws.you_cant_win(moves):
  # ... written by the AI

In short, LAWS.bend is AGENTS.md backed by proof.

With LAWS.bend, "make no mistakes" becomes enforceable.

Skeptical? Edit the demo's code and break the "you can't win" law!

Get Started

1. Install:

curl -fsSL https://bend-lang.com/install.sh | sh

This bend ignores a project's bunfig.toml and .env; bun bend2/main.ts from a checkout reads them, so check untrusted code with bend.

2. Tell your agent to use Bend:

Add this to your AGENTS.md:

When using Bend:
  • run bend guide to learn it
  • use LAWS.bend to keep important rules
  • run bend PROOF.bend before committing
  • parallelize the code whenever possible

Then, just say: "use Bend"!

3. Enjoy bug-free, fast vibe-coded apps!

Hints:

Bend works best on the back-end, on Linux or macOS.

Examples

Syntax == Python + dependent types

import Base

Performs effects on the CPU.

def main() -> IO(Unit): do IO: name : String <- IO.try(String, IO.get_env("USER")) IO.print("Hello, " ++ name)

Parallelism == divide-and-conquer

import Base

Computes 2^d in parallel: a tree of d levels, one leaf per unit.

def pow2(+d: Nat) -> U32: match d: case 0n: 1 case 1n+p: a b = pow2(p) pow2(p) (a + b : U32)

Runs pow2 on the GPU, via !.

def main() -> IO(Unit): result = pow2!(20n) IO.print(U32.show(result))

Theorems == laws, Proofs == defs

import Base

CLAIM: for every nat x, x + 0 equals x.

law add_zero: for x: Nat {Nat.add(x, 0n) == x : Nat}

PROOF: induction on x, one rewrite (%) per step.

def add_zero(x): match x: case 0n: {==} case 1n+xp: %add_zero(xp) : {1n+Nat.add(xp, 0n) == 1n+_ : Nat} {==}

References

Community

Limitations

- Bend 2 is a new language. Bend 1 programs and HVM do not carry over.
  • Everything is annotated and nothing is inferred, so code is verbose.
  • No type classes, no traits, and no macros beyond compile-time templates.
  • Bend has no tactics or proof search; proving theorems takes extra effort.
  • Values are affine: closures and arrays cannot be shared.
  • Recursion must terminate; @unsafe or def f?(..) turns the check off.
  • Computed matches (match f(x)) aren't supported. Must split it manually.
  • There is no syntax for if-then-else: a branch is a match on True and False.
  • Numbers are Nat, U32 and F32 only: no U64, I64 or F64 (Metal has no f64).
  • F32 is axiomatic: nothing about floating point can be proven.
  • Strings are linked lists of characters, so text processing is slow.
  • Base is small: expect to write helpers other languages ship built in.
  • Effects are few: print, env, time, sleep, spawn, channels, files, TCP, UDP.
  • No TLS, HTTP library, JSON or regex for now (you can add them as foreigns).
  • Targets are C, Metal, CUDA and JavaScript; Lua, Luau and Python are planned.
  • The JavaScript target runs on one core and has no graphics or audio.
  • Parallelism requires balanced calls. Flexible parallelism will be added later.
  • Atomic arrays shared across threads are experimental and need @unsafe.
  • One GPU per program, one event loop, and no multi-machine execution yet.
  • One C file per program: no separate compilation, no incremental builds.
  • Compiling to native is slow (clang/CUDA/Metal). For fast development, use JS.
  • The compiler is young and has blind spots (unusually slow programs). Report.
  • We don't have as many benchmarks as we'd like yet, especially for the checker.
  • The compiler (not kernel) is 99% AI-written and not yet fully audited.
  • The checker has no proof and may have bugs; --verdict uses a proven kernel.
  • Laws are proven about Bend's semantics. The backends can still differ, for example in F32 NaN. See WONTFIX.
  • --verdict checks the translated terms, the parser and translation into the kernel are not proven.
  • A binary needs clang 14+; ! needs 19+, Metal or CUDA 12.
  • No Windows (WSL works); on Linux, Window and Audio need X11 and ALSA headers.
  • A hub package is a hash, unless its author names and versions it after bend login.
  • Error messages are terse; no debugger, profiler or REPL.
  • The editor tool only formats; the community bend2-lsp adds errors and hover.
  • No test framework and no documentation beyond the guide.
  • And more that escape me. Be patient, report bugs and request features!
Most of these limitations are being addressed and will improve over time!

BEND IS YOUNG. EXPECT BUGS AND REPORT THEM.

Credits

Bend is created by Victor Taelin and built by the team:

If you were part of this and your name is missing, please get in touch so we can add it here.

Thanks to Ayush Somani for reserving the bend-lang name for us.

GitHub Stars & Activity

23,719Stars
750Forks
0Open issues
TypeScriptLanguage

GitHub Popularity

GitHub stars23,719
Forks750
Open issues0
Primary languageTypeScript
License-
Stars gained today4,069
Created-
Last pushed-

Trending History

Monthly boardrank #30 · ▲ 4,069 stars

Related AI Projects

1

morluto / rea

TypeScript★ 288,649⑂ 72,679▲ 25,333 stars
→
2

anomalyco / opencode

TypeScript★ 214,294⑂ 28,757▲ 485 stars
→
3

stablyai / orca

TypeScript★ 94,375⑂ 6,037▲ 1,089 stars
→
4

ruvnet / ruflo

TypeScript★ 75,544⑂ 8,959▲ 672 stars
→
5

Fission-AI / OpenSpec

TypeScript★ 72,154⑂ 4,936▲ 113 stars
→
6

heygen-com / hyperframes

TypeScript★ 65,199⑂ 5,874▲ 826 stars
→
7

mksglu / context-mode

TypeScript★ 30,145⑂ 2,124▲ 449 stars
→
8

krillinai / OpenCreator

TypeScript★ 13,459⑂ 1,473▲ 226 stars
→

More AI Rankings