我从零写了一个流式 MoE 推理引擎,只为验证一个假设:该缓存哪些专家?
这次不是读别人的源码,而是自己从零写了一个:一个流式 MoE 推理引擎,原生读 GGUF、原生 k-quant、跨平台 C++、用我自己的构建系统 blade-build 构建。 👉 nuthatch · 11 章在线源码分析:blog.chen3feng.top/nuthatch/(搜索 + 侧边栏导航) 为什么造,而不是读 前沿开源大模型的参数量已越过 7000 亿,它们几乎都是 ...
这次不是读别人的源码,而是自己从零写了一个:一个流式 MoE 推理引擎,原生读 GGUF、原生 k-quant、跨平台 C++、用我自己的构建系统 blade-build 构建。 👉 nuthatch · 11 章在线源码分析:blog.chen3feng.top/nuthatch/(搜索 + 侧边栏导航) 为什么造,而不是读 前沿开源大模型的参数量已越过 7000 亿,它们几乎都是 ...
2022 年,美国国家安全局(NSA)发了一份文件,点名建议「别再用 C/C++ 写新代码」。理由是:微软和谷歌各自统计发现,自家产品里约 70% 的安全漏洞是内存安全问题。可 C++ 明明为内存安全折腾了四十年——RAII、智能指针、Valgrind、Sanitizer、FORTIFY、各种注解……为什么还是被点名?这篇文章把这四十年的技术一件件摆出来,你会看到一条清晰的主线:C++...
你写下 gcc a.c b.c -lpthread,回车,几十毫秒后多出一个能跑的可执行文件。这中间发生的事,叫链接。七十多年里,链接器要解决的核心问题——「把分散编译的代码片段,解析符号、重定位、拼成一个能跑的整体」——其实一个字都没变,变的只是规模和约束。本文按这条主线,从「为什么需要链接器」一路讲到 mold、wild 这些新一代链接器,以及它们身上背的那些优化。 这是「深入...
编译器的 -O2 / -O3 已经很努力了,但它有两个天生的盲区:看不远(优化卡在单个翻译单元的边界上)、看不到未来(不知道程序真正跑起来是什么样)。这篇文章把 PGO、LTO/ThinLTO、AutoFDO、LLVM-BOLT 串成一条线——它们其实都在干同一件事:一步步把优化器的视野放大,直到放大到「已经链接成型的二进制」本身。 最近给 blade 构建系统补三平台支持时,我把...
一台 Apple Silicon 的 MacBook Pro,怎么同时当 Linux 和 Windows 的开发测试机?Linux 用 OrbStack 跑容器和虚拟机,Windows 用 VMware Fusion / UTM 装 ARM 版虚拟机、配 Visual Studio 2022 + 2026 Build Tools(含 ARM 编译器)和 OpenSSH Server。把...
多线程程序里,errno 凭什么能让每个线程各看各的?一个 thread_local 变量,如何让每个线程有自己的副本?这件看似轻而易举的事,背后有四十年的演化:从手动管理的 API,到编译器原生支持的段寄存器寻址,再到 C++、Java 的语言级抽象。本文按时间顺序,把线程局部存储(TLS)从「为什么需要它」一路拆到今天的 thread_local、ThreadLocal 和 TLS...
一个 Windows 程序编译成 PE,Linux 的库编译成 ELF——两种格式天差地别,本来连放进同一个可执行文件都做不到。可 Wine 跑起来后,Windows 程序里一句 CreateFile + ReadFile,最终却落到了 ELF 里的 open()、read()。这中间到底经过了什么?拆开来看,背后藏着三种不同的”跨界”机制:进程内的 NT 系统调用门、进程内的 uni...
一个叫 Perry 的项目:把 TypeScript 直接 AOT 编成原生二进制,性能贴着 Rust / C++。但比技术更让我吃惊的,是这 88 万行代码——一个人借助 AI,在四个半月里写了出来。从 NaN-Boxing、隐藏类到自研 GC,再到一点关于「AI 正在改写软件开发方式」的感想。 我有个习惯:平时爱逛 GitHub,刷到觉得有意思的项目就顺手 star 一下。可说...
「只是多写个 dllimport」的差异,在工程上怎么一步步变成构建系统的麻烦?从头文件三态、/EXPORT 烤进 .obj 逼出双编译,到 .def / COMDAT 过滤 / export_map,再到导入库与 Borland / MinGW 的不同处理。是上一篇《符号导出三国志》的工程续篇。 上一篇《符号导出三国志》讲清了底层机制:Windows 把「间接寻址」做成 opt-...
写跨平台 C/C++ 库的人,大概都被 Windows 的 __declspec(dllimport) / dllexport 折磨过,换到 Linux / macOS 却什么都不用写。本文把 PE / ELF / Mach-O 三家「动态库符号到底怎么访问」的底层机制——IAT / GOT / PLT、copy relocation、two-level namespace、可见性控制...