Doom Runs in Brainfuck Now
A weekly roundup of 13 new GitHub repos in the Brainfuck and Befunge ecosystems, May 5–12 2026. Headlined by BFDoom — the full Doom source compiled to a 518 MB Brainfuck file — and TopoCore, a Befunge-inspired spatial execution architecture down to FPGA-ready SystemVerilog. Plus a cat-noise dialect, a Brainfuck JIT on MLIR, and a Java repo whose entire README is "I'm bored."
Someone compiled Doom to Brainfuck this week. Not a toy demo, not a proof of concept that crashes after the title screen — a 518 MB
.bf file that runs the actual game, in a window, with controls, and can be installed in two seconds with npx. That's the week's headline. There's also a spatial computer that treats your program as a 2D map you walk through, a compiler that speaks exclusively in cat noises, and a Java project whose entire README is the Portuguese phrase for "I'm bored." Thirteen new esolang repos in seven days. The genre is doing fine.Doom compiled to Brainfuck
jasperdevs/BFDoom 1 is exactly what it says: Doom compiled to Brainfuck (the notorious "do everything with eight characters" language) and playable in a desktop window. The main source file is 518 MB uncompressed, stored as a 30 MB gzip in the repo to keep GitHub from crying, and represents the entire Doom codebase expressed in
+, -, >, <, [, ], ., and ,. WASD moves you, keys 1–7 switch weapons, Space fires, Tab opens the automap. It launched on May 10 to 15 stars and one fork in its first two days.To run it, you do not need to clone anything:
npx @jasperdevs/bfdoomNode.js 20 or newer required. The author describes it as "Doom compiled to Brainfuck and playable in a small desktop window" and notes that "BFDoom is playable and still being brought closer to Doom. The biggest unfinished pieces are sound, menus, and full engine/rendering parity." So: no music yet, and the menus are placeholders, but the actual shooting-demons part works.

Image from: jasperdevs/BFDoom
The fact that this exists at all requires a brief moment of appreciation. Brainfuck's tape model was never intended to describe framebuffers, input polling, or texture mapping. Whatever intermediate layer jasperdevs built to make this work is doing tremendous conceptual violence to the language, and the result is a half-gigabyte stream of angle brackets and plus signs that renders a first-person shooter. The repo is GPL-2.0 licensed, which makes sense given the Doom source lineage.

Image from: jasperdevs/BFDoom
Brainfuck builders
Seven more Brainfuck repos shipped this week, spanning interpreters, compilers, and one embedded language extension.
RISC-BF — the pipeline behind the madness
IvanSakaev/RISC-BF 2 does something structurally similar to BFDoom but from a different angle: it compiles RISC-V ELF binaries into Brainfuck source. The workflow is
C source → clang (RISC-V target) → asm.py → .b file → ibf interpreter. The translator handles 50+ RISCV32IM instructions — arithmetic, bitwise, loads and stores, jumps, conditional branches, and read/write syscalls. At 188 commits, it is clearly not a weekend sketch. The README lists "Compile and run Doom" as a future goal, citing the DoomBF project as reference. Given that BFDoom appeared two days later, this has been a productive week for people porting id Software's work through the most inconvenient intermediate representation imaginable.meow-compiler — cat dialect, machine code output
k1114linux/meow-compiler 3 replaces Brainfuck's eight symbols with cat sounds:
meow for >, purr for <, hiss for +, growl for -, chirp for ., mew for ,, scratch for [, nap for ]. Hello World is a sequence of meowing, purring, hissing, and chirping. Crucially, this is not an interpreter — the compiler produces standalone x86_64 Linux ELF binaries directly. The implementation is C, the memory tape is allocated via mmap at 30,000 bytes, and the pipeline runs lexer → code generator → ELF writer. Zero stars so far, which is a genuine shame.Jewel-VM — Brainfuck in microseconds
foxcraftDL/Jewel-VM 4 is a Java-based Brainfuck execution environment with AOT compilation to 3-byte fixed-width bytecode. Hello World executes in approximately 0.0086 ms. The optimizer does run-length encoding on repeated operations, collapses
[-] sequences into a single OP_ZERO instruction, resolves jump targets statically, and achieves up to 64% source-to-bytecode compression. The README explains the JIT angle: "By using a polymorphic dispatcher with final classes, the VM encourages the JIT compiler to inline instruction logic directly into the main execution loop." v1.1.0 released May 10, 2 releases total, 1 star. Compatible with the self-hosting awib compiler and math-heavy workloads like PI16.bf.brainfuck-zlx — Brainfuck blocks inside ZLang
zlangdevs/brainfuck-zlx 5 is a ZLang extension that lets you drop
brainfuck { ... } blocks directly into .zl source files. Tape length and cell width (8, 16, 32, or 64 bit) are configurable per block. ZLang variables can be loaded into the Brainfuck tape on entry and written back on exit, which is an unusual degree of language interoperability for a project built on one of the least interoperable languages ever made. The codegen layer runs run-length contraction, zero-set detection, scan loops, multiply-and-zero, and dead-loop elimination. Written in Zig (99.1%).mlir-bf-jit — Brainfuck meets LLVM infrastructure
Peruere1828/mlir-bf-jit 6 wires Brainfuck into the MLIR (Multi-Level Intermediate Representation) compiler infrastructure from LLVM 20.1.8. Two tools:
bf-translate reads a .bf file and emits MLIR in the bf dialect; bf-opt reads that MLIR and optimizes it. Standard 30,000-cell tape, uint8_t values wrapping at 256. The project uses roughly 66% C++. No stars yet, and no license either — so treat it as read-only for now.flux — assembly all the way down
GreenBox34/flux 7 is a Brainfuck interpreter written entirely in x86_64 assembly using GAS (the GNU Assembler) with AT&T syntax. Linux-only, because it calls Linux syscalls directly. Install with
make, run with ./flux examples/hello.b. The author tested it against rdebath's Brainfuck test suite. GPL-3.0, 3 commits, 0 stars — but there is something perversely correct about implementing Brainfuck in assembly. Layers of unnecessary difficulty, all the way down.brain-needle — Rust, learning, puns
RobbeDenis/brain-needle 8 is a work-in-progress Brainfuck-to-x86-64 compiler written in Rust. The author is transparent about the motivation: "The reason for making this project is to familiarise myself with rust." The tokenizer (
bnlex.rs) collapses consecutive increments, decrements, and pointer shifts into single tokens; the parser (bnparse.rs) does single-pass jump resolution. The name is a pun. 22 commits, Rust at 63.7% alongside 36.3% Brainfuck test files.Befunge's week
Befunge (the 2D language where program flow depends on which direction your instruction pointer is currently moving) had a strong showing this week, led by something genuinely ambitious.
TopoCore — geometry as execution
KARAN-D05/TopoCore 9 starts from the observation that conventional CPUs treat memory geometry as incidental: two consecutive addresses can be physically distant and execution carries on regardless. TopoCore inverts this. Programs exist as 2D spatial layouts, and the execution model is
(X, Y, Direction) → fetch → interpret → move rather than the usual PC → fetch → decode → execute → PC+1. The author's framing: "Normal CPUs encode logical flow through address order. Geometry of memory is incidental... TopoCore encodes logical flow through spatial continuity. Geometry is constitutive. Position determines execution."The implementation stack runs deep: Python and C interpreters, Logisim digital circuit designs, a SystemVerilog hardware description, and a pipeline targeting FPGA synthesis. There is also a full theoretical document arguing that programs written this way are "semasiographic" — meaning lives in spatial arrangement rather than arbitrary symbolic addressing. The project tagline is "Teaching a machine to read meaning from space."
GitHub classifies the repo as 54.8% Befunge and 45.2% Brainfuck. MIT license for the code, CC BY 4.0 for the documentation and diagrams. 113 commits, 0 stars. This is the find of the week.
Summer-of-Esolangs/befunge — project three of summer
Summer-of-Esolangs/befunge 10 is part of a personal challenge: implement as many esolangs as possible over the summer. This is number three, following Brainfuck (#1, May 9) and q47 (#2). The interpreter is in Zig: it reads a source file as a 2D grid, tokenizes by newline, pads short rows with spaces, then steps through execution. The charming artifact: the error message for a missing file still reads "Missing brainfuck file!!!" — the codebase was ported from project #1 and that string did not get updated. 5 commits, 63 lines in
main.zig, 100% Zig.ErickLimonG/befunge-interpreter — clean, tested, ready
ErickLimonG/befunge-interpreter 11 is a Python Befunge interpreter with a properly structured codebase:
befunge_interpreter.py for the core, instructions.py for opcode definitions, and test_befunge_interpreter.py + test_instructions.py for unit tests. There is also a Makefile. No README description, but the code organization signals someone who has worked in professional settings. 9 commits, Python 99.2%.And then there's this
skenjilev/criando-brainfuck-plus-plus-plus 12 is a Brainfuck+++ interpreter in Java. The repository description, in its entirety, is "estou atoa" — Portuguese for "I'm bored." The repo name translates to "creating brainfuck-plus-plus-plus." There is no further README, no license, and no stars. 1 commit. The commitment to the bit is absolute.
The quiet corners
Malbolge, Whitespace, and the APL family were all quiet during May 5–12. No substantive Malbolge repos appeared (the only hit was a single-file hello-world verification with 2 commits). Whitespace came up empty on a date-filtered search and against the whitespace-language topic page. APL, BQN, and J all returned zero new repositories.
Thirteen repos in seven days across Brainfuck and Befunge is a reasonable haul regardless. BFDoom and TopoCore landed at opposite ends of the absurdity spectrum: one asks what it looks like when Doom becomes 518 MB of angle brackets, the other asks whether a CPU should have a sense of place. Both are reasonable questions, given the genre.
Cover image from jasperdevs/BFDoom
补充配图
2 张

围绕这条内容继续补充观点或上下文。