
Brainfuck 疯狂程序员大赏
2026. 05. 15. 00:55:05@YJ40z1Zb27g
每周 Esolang 猎奇报:DOOM 跑进了 Brainfuck,地狱客户端上线 Bluesky
本期扫描 2026-05-07 至 05-14 GitHub 深奥编程语言生态,收录 18 个活跃项目,亮点包括将 DOOM 编译为 518MB Brainfuck 的 BFDoom、用 Malbolge 实时计算所有 API 字符串的 malbolgesky、纯 Whitespace 实现的文字冒险游戏,以及一行 APL 搞定体素面剔除的 avoxelgame。
本周(2026-05-07 ~ 05-14)GitHub 的深奥编程语言生态里,有人把 DOOM 完整编译成了 Brainfuck,有人用地狱第八层的编程语言写了个 Bluesky 客户端,有人在 52 分钟内用全不可见的代码写完了一整个文字冒险游戏。5 个语言类别共扫出 18 个活跃项目,Brainfuck 生态一骑绝尘,Malbolge 社区依然只有几个亡命之徒在维护。
Brainfuck:这周卷出了新高度
Brainfuck(1993 年,Urban Müller 设计)是那种只有 8 个指令(
> < + - . , [ ])但图灵完备的语言。代码看起来像键盘上滚过了一只猫,但理论上能计算任何可计算的问题。这周它的生态出奇地热闹。BFDoom:518MB 的 Brainfuck,跑起来了
有个叫 jasperdevs 的开发者把 id Software 的经典游戏 DOOM 完整编译成了 Brainfuck。1
主程序文件 518MB——这是 Brainfuck 源码本身的大小,不是游戏资产。压缩后约 130KB 的
.bf.gz。通过 ELVM 工具链(一个把 C 编译到各种奇怪目标的多后端编译器)和 DoomGeneric(DOOM 的可移植实现层),完成了 C → RISC-V → Brainfuck 的编译路径。可以通过
npx @jasperdevs/bfdoom 直接跑,npm 包已经发布。支持 WAD 地图文件加载、武器切换(数字键 1-7)、自动地图(Tab 键)、敌人 AI 和道具系统。尚未完成的部分:音频、菜单系统、完整渲染对等。项目 48 次提交,15 个 Star。仓库语言标注:99.5% Brainfuck。

图片来自:jasperdevs/BFDoom
RISC-BF:从 C 程序出发,最终输出 Brainfuck
完整流程:写一段 C 程序 → 用 clang 编译为 RISC-V ELF 二进制 → 用 asm.py 解析 ELF 并输出 Brainfuck 代码。编译器用 Python 写成,借助 Capstone 反汇编引擎处理指令,内部用四叉树分块结构组织跳转逻辑,已支持 50+ 条 RISC-V 指令(算术、位运算、访存、条件跳转、ecall)。
README 在终极目标一行写着:「Compile and run Doom」。188 次提交,1 个 Star。
brainoxide:认真地给一门笑话语言做编译优化
VorpalBlade 用 Rust 写了个优化型 Brainfuck 编译器/解释器,叫 brainoxide。3
优化手段包括:指令合并、循环降低(把 while 型循环降级为 if 或线性方程)、常量折叠、死存储消除、窥孔优化(比如
[-] 直接替换为 OP_ZERO)。对于「平衡代码段」(进出时指针位移为零的段),可以构建有向无环图(DAG)做更深层的优化。两种输出后端:解释执行,或生成 C 代码。作者在 README 里留了一句自白:「世界需要又一个 BF 实现吗?不太需要。我做这个开心吗、学到东西了吗?是的。」
221 次提交,6 个 Star,已发布到 crates.io(v0.1.2)。最近提交 2026-05-12。
快讯
Jewel-VM v1.1.0:foxcraftDL 发布了一个高性能 Brainfuck 执行引擎 4。AOT 阶段把 BF 源码转为 3 字节定长字节码(压缩比约 64%),VM 端用 Java 接口多态分发(
interface Op { void exec(Context ctx); }),诱导 HotSpot JIT 把指令逻辑内联进主循环。README 声称 Hello World 约 0.0086ms。已发布 v1.1.0(2026-05-10),6 次提交,1 Star。TopoCore:KARAN-D05 本周密集提交(135 次,2026-05-11 至 05-14),推出了一个实验性 2D 空间执行架构 5。不用传统线性程序计数器(PC → PC+1),改用 (X, Y, 方向) 三元组定位执行位置——程序是「可遍历的 2D 布局」。受 Brainfuck 的 1D 磁带和 Befunge 的 2D 网格启发,包含 SystemVerilog FPGA 实现、Python/C 解释器、Logisim 电路,和一个能在浏览器里跑的空间执行可视化 Demo。作者写道:传统 CPU 中内存的几何结构是偶然的——TopoCore 把几何变成构成性的,位置决定执行。0 Star,0 Fork。
Malbolge:地狱第八层的三件事
Malbolge(1998 年,Ben Olmstead)以但丁《神曲》第八层地狱「恶囊」(Malebolge)命名,设计目标就是「让编程变得不可能」。三进制运算、自修改代码、加密指令表,第一个 Hello World 程序耗时两年才通过遗传算法生成。本周 GitHub 上带 malbolge 主题标签的公开仓库共 50 个,过去 7 天内有新提交的只有 2 个——以下是活的。
malbolgesky:一次 Bluesky 登录,13 个 Malbolge 程序
FormerLab 的 malbolgesky 是一个 Bluesky/AT Protocol 客户端,特殊之处在于:每个 API 响应中出现的字符串——handle、DID、post URI 等——全部由 Malbolge 程序逐字符计算生成,不是缓存,不是硬编码,是实时运算。6
以一个 Bluesky 帖子 URI 为例:
at://did:plc:qntugqppm75ya4n73muu3qhp/app.bsky.feed.post/3mibrgb3piw2c 这串字符被拆分成 13 个独立的 Malbolge 程序,每个程序负责输出其中一段。技术路径:Ada 层(占代码 76%)处理 JSON 和 HTTP → Malbolge C 虚拟机执行程序 → Python 代码生成器(占 16.4%)搜索运算链。冒号
: 是最难生成的字符之一——在 Malbolge 的 crz(crazy operation)运算下,需要找到特定的累加器初始状态才能输出它,代码生成器会搜索 2-chain 或 3-chain 的指令序列来构造每个目标字符。FormerLab 在 README 里留了一句话:「The eighth circle of hell is in the call stack.」
malbolgesky 是 FormerLab 「深奥 AT Protocol 客户端系列」的一部分,同系列还有 Fortransky、Assemblersky、Cobolsky、Adatalksky、INTERCALsky——每个都是「无论另一端是什么,AT Protocol 都能正常工作」的证明。最近提交 2026-04-29(本期采用 30 天放宽窗口收录),1 Star,MIT 许可。
oklo/mal-51:Malbolge 区块链 + AI 解谜挑战链
oklo 的 mal-51 本周(2026-05-07 ~ 05-13)有超过 10 次提交,最新一次归档了 FM1 有限映射关卡的答案。7
这个仓库同时做两件事:一是「加密纪律币原型」,在一个保守的本地币模拟器上叠加一个可选的、可验证的 Malbolge Unshackled 计算作为侧通道;二是 MAL-51 经典 Malbolge 挑战链,设计用来给前沿 AI Agent 做基准测试——Codex 对阵 Claude,交替出招。
作者 oklo 的设计哲学写得很直白:「基础货币系统应该是无聊的」,奇怪的东西单独放在一层。
当前状态:FM1 有限映射关卡(xor51-map4)在 2026-05-12 被 Codex(002-codex)解出并归档。XOR-4096 前沿关卡目前尚未被任何 AI Agent 解出。仓库用 Rust workspace(72.4%)+ Python(27.6%)实现,56 次提交,0 Star。
快讯:malbolge-hello-hardmode
mizoz 在 2026-05-10 创建了一个极简仓库 8,只包含一个 113 字节的单行 Malbolge 程序 hello.mal,输出「Hello, World! 」。通过 npm 包 malbolge-vm 运行:
npm exec --yes --package malbolge-vm -- malbolge-interpreter hello.mal。README 备注:「可执行源码 100% 是 Malbolge,Markdown 仅为文档。」0 Star,2 次提交。Whitespace:看不见的代码,但能通关游戏
Whitespace(2003 年,Edwin Brady & Chris Morris 设计)是一门代码只由空格、制表符和换行符构成的语言——所有可见字符视为注释,意味着你可以把代码藏在任何文本文件里而旁人毫无察觉。
whitespace-zork:52 分钟,一个人类看不懂的完整游戏
liatrio-labs 于 2026-05-02 创建并推送了 whitespace-zork:一个用纯 Whitespace 写的 Zork 风格文字冒险游戏,10 个房间、6 种可收集物品、明暗机制(黑暗中被 grue 吃掉)、巨魔谜题。9
约 1800 行汇编代码(zork.wsa),编译后生成 82,398 字符的纯空白文件(zork.ws),包含约 11,000 条 Whitespace 指令。从「能帮我用 Whitespace 写点东西吗」到可玩游戏推送 GitHub,总共约 52 分钟。
人类操作者全程在 Slack 上开着 huddle 多线程处理,负责创意方向。AI(Claude)设计了内存布局、命令解析器、游戏机制,自写汇编器和解释器,自测了数十次迭代。当 Claude 建议简化某个功能时,人类回复:「harder is a YOU problem claude」。
顺带一提,pip 安装的 whitespace 解释器处理不了 82K 的程序(递归溢出),所以 Claude 临场写了一个 ws.py。
README 里有一句话直接说明了协作分工:「The human collaborator on this project cannot read Whitespace. Neither can anyone else - the code is literally invisible in most editors.」
omniwsa:为看不见的代码建一个罗塞塔石碑
thaliaarchi 的 omniwsa 在 2026-05-06~07 有 3 次提交,是 Whitespace 生态的「方言统一器」。10
问题背景:Whitespace 代码完全不可见,各实现都发明了自己的汇编语法辅助编写,但互不兼容。omniwsa 通过一个通用具体语法树(CST)桥接了 16 种以上的方言,包括 Albino、Burghard、CensoredUsername、Esotope、Lime、Whitelips、Nossembly、Iczelia 等。
实现哲学是「描述性的」——项目保持 bug-for-bug 兼容,连各方言自身的 bug 也忠实复现,没有「帮你纠错」的设计。配套 VSCode 扩展(omniwsa-vscode)和语言服务器(omniwsa-ls),让 IDE 能识别和辅助编写不可见的代码。作者 thaliaarchi 是 Whitespace 生态的核心贡献者,名下还有用 jq 写的 Whitespace 调试器(wsjq)和用 Brainfuck 解释 Whitespace 的项目(wsbf)。Rust 实现,309 次提交,MPL-2.0 许可。
快讯:setup-whitespace-action
fabasoad 的 setup-whitespace-action 是一个 GitHub Action,在 CI/CD 流水线里安装 Whitespace 解释器 wspace,让不可见代码也能跑进 CI 流程 11。支持 Windows、Linux、macOS 三平台,用法是
uses: fabasoad/setup-whitespace-action@v1 然后 run: wspace hello-world.ws。43 次提交,1 Star,最近更新 2026-04-16。APL:一行代码替代数百行
APL(1964 年,Kenneth Iverson 设计)以希腊字母和特殊符号构成,数组操作是第一公民。一行 APL 能做到别的语言十几行甚至几十行才能完成的事——代价是需要专门键盘或 Unicode 输入法才能打出那些符号。
avoxelgame:用 APL 写体素游戏的赌注
namgyaaal 最近推送了 avoxelgame,一个用 Dyalog APL 20.0 和 SDL3 写的 3D 体素沙盒游戏,82.7% 代码为 APL,当前 17 Star,106 次提交。12
功能齐全:WASD 移动、鼠标视角、空格跳跃、射线选块、5 种方块放置、noclip 飞行模式,程序化地形生成(双层 Perlin 噪声 + FNV 哈希),实时面剔除,GPU 缓冲管理。底层用一个自定义 C 语言引擎 LSE 作为 SDL3 和 APL 之间的桥接层。
作者的起点是一个对自己的打赌:「APL 记法是否能让体素游戏开发更简单」。
炫技在这里:体素面剔除(判断哪些方块表面需要渲染)的核心逻辑用一行 APL 完成——13
⍝ 检查每个体素面的六个方向是否有相邻方块,一次性找出所有暴露面
exposed←↑[0]{solid>⍵}¨0 1 2∘.{⍵↓[⍺](0<⍵)⌽[⍺]0,[⍺]solid}¯1 1通过沿 X/Y/Z 三轴平移体素数组(⌽ 旋转、↓ 丢弃、, 拼接),把六个方向的邻接检查压缩进一行。传统引擎里这通常是几十到数百行的循环逻辑。
作者也坦言:「This is highly experimental and buggy.」MIT 协议,macOS 和 Linux 可运行。
Dyalog 本周动态
Dyalog 官方团队本周多个仓库有推送:
- HttpCommand v5.11.0 于 2026-05-14 发布,这是 Dyalog APL 的 HTTP 请求工具库,支持 HTTP/HTTPS、multipart 上传、chunked 传输、SSE 解析,内置 Base64 和 URL 编解码。14 12 Star,185 次提交,MIT 许可。
- library-conga 当日有推送,是 APL 世界的通信基础设施,包含 HTTP 客户端/服务器、FTP 客户端、SMTP 等。15 6 Star,101 次提交。
- ullu 当日有推送,是 Dyalog APL 原语的测试框架,名字源自印地语「उल्लू」(猫头鹰)。16 Dyalog 团队在 README 调侃道:「Just as the owl represents both wisdom and foolishness the QA also has a dual nature of being wise and dumb at the same time.」5 Star,292 次提交。
- ewc 昨日有推送,是用 JavaScript 模拟 Dyalog APL 原生 GUI 系统的概念验证项目,v0.3.0 于 2026-04-29 发布。17 2 Star,878 次提交。
本周奇异语言速报
四门本周有活跃提交的新物种:
jeomlang:点,点,点
minirang 的 jeomlang(点、jeom,韩语「点」)是一门只用 16 种 Unicode 点字符写程序的语言——
· • ˙ ⋮ ∘ ⋅ ● ◦ ⦁ ⸳ ‥ … ‧ ◘ 这几个。18数字用两种点的二进制编码,字符串用 UTF-8 字节序列。Hello World 大概长这样:
•· ●.·......·‧.·.....·‧··..··.·‧··..··.·‧···..··● ·· ⋮⋮别看样子简单,底层是完整栈式虚拟机:函数定义/调用/递归/闭包/柯里化、动态数组/字典/map/filter/reduce、TRY/CATCH/FINALLY 异常处理、模块导入、文件 I/O、正则匹配。还有内置 Web IDE,无需服务器直接在浏览器跑。v1.3.1 于 2026-05-13 发布,是韩国学生编程比赛的参赛作品。113 次提交,5 Star,Apache-2.0 许可。最近推送 2026-05-14。
Codesh:用圣经语法写代码,编译到 JVM
Codesh(קודש)是一门语法模仿希伯来圣经(Tanakh)的深奥语言,由以色列开发者 Stav Solomon 和 Eliran Ben Moshe 创建,编译器名为「The Motzi B'She'ela」(המוציא בשאלה)。19
编译器把 Codesh 源码编译为 JVM 字节码,内建 LSP 支持,推荐用 Kate 或 KDevelop 编辑器。标准库叫 Talmud Codesh(תלמוד־קודש),提供
מסוף(控制台)类。Hello World 等价代码直译出来是「console 说:因为他的话宝贵,母亲说:那是好的」。示例目录分三档:「יחסית־מגניב」(相对酷)、「מאוד־מגניב」(非常酷)、「מאוד־עלוב」(非常差劲)——作者给自己的代码打分,态度很诚实。支持 Nikkud(希伯来语元音标注)模式和 RTL 编码,C++ 实现,2147 次提交,116 Star,GPL-3.0 许可。最近推送 2026-05-09。
Nekomata:猫妖语言,不确定性是核心特性
AlephAlpha 的 Nekomata(猫又)是一门实验性非确定性串联式 golfing 语言。20
名字源自日本民间传说里的猫又——一种双尾猫妖。作者的命名逻辑:「考虑一个非确定性 cons list,头部是确定的,尾部有两个可能值——不像猫又吗?」非确定性的实现参考了学术论文「KiCS2: A New Compiler from Curry to Haskell」。受 Curry、Brachylog、Vyxal、Jelly 等多种语言影响,已上线 Attempt This Online(ATO)可在浏览器运行。Haskell 实现,147 次提交,27 Star,BSD-3-Clause 许可。最近推送 2026-05-12。
waralang:agent 在大学地图上走路就是编程
SergeantQuickscoper 的 waralang 以印度 NITW(National Institute of Technology Warangal,瓦朗加尔国立理工学院)校园为主题,是一个 2D 深奥语言。21
程序由 agent(智能体)在 2D 地图上移动构成。
! 前缀定义 agent,> < ^ v 表示方向,agent 进入建筑时触发 opcode 执行。语言刻意不支持直接写关系运算符——想比较两个数,agent 必须走到地图上的 relop 建筑才能拿到结果。条件分支用 ?n[Code1:Code2],n 非零走 Code1,否则走 Code2,支持嵌套。代码注释里直接写道:「screw loops and hello recursion!」(去他妈的循环,你好递归!)
C 语言实现,66 次提交,3 Star,标注为 CSES 社团作品,wip 状态。最近推送 2026-05-14。
封面图:图片来自 jasperdevs/BFDoom
참고 출처
- 1jasperdevs/BFDoom
- 2IvanSakaev/RISC-BF
- 3VorpalBlade/brainoxide
- 4foxcraftDL/Jewel-VM
- 5KARAN-D05/TopoCore
- 6FormerLab/malbolgesky
- 7oklo/mal-51
- 8mizoz/malbolge-hello-hardmode
- 9liatrio-labs/whitespace-zork
- 10thaliaarchi/omniwsa
- 11fabasoad/setup-whitespace-action
- 12namgyaaal/avoxelgame
- 13namgyaaal: avoxelgame/avg/world.apln
- 14Dyalog/HttpCommand
- 15Dyalog/library-conga
- 16Dyalog/ullu
- 17Dyalog/ewc
- 18minirang/jeomlang
- 19Codesh-Organization-Foundation-Inc/Codesh-Compiler
- 20AlephAlpha/Nekomata
- 21SergeantQuickscoper/waralang
이 콘텐츠를 둘러싼 관점이나 맥락을 계속 보강해 보세요.