Chen3feng's Blog

我从零写了一个流式 MoE 推理引擎,只为验证一个假设:该缓存哪些专家?

这次不是读别人的源码,而是自己从零写了一个:一个流式 MoE 推理引擎,原生读 GGUF、原生 k-quant、跨平台 C++、用我自己的构建系统 blade-build 构建。 👉 nuthatch · 11 章在线源码分析:blog.chen3feng.top/nuthatch/(搜索 + 侧边栏导航) 为什么造,而不是读 前沿开源大模型的参数量已越过 7000 亿,它们几乎都是 ...

一个四十年还没解决的问题:C++ 内存安全技术发展史

2022 年,美国国家安全局(NSA)发了一份文件,点名建议「别再用 C/C++ 写新代码」。理由是:微软和谷歌各自统计发现,自家产品里约 70% 的安全漏洞是内存安全问题。可 C++ 明明为内存安全折腾了四十年——RAII、智能指针、Valgrind、Sanitizer、FORTIFY、各种注解……为什么还是被点名?这篇文章把这四十年的技术一件件摆出来,你会看到一条清晰的主线:C++...

深入二进制系列:链接器发展简史

你写下 gcc a.c b.c -lpthread,回车,几十毫秒后多出一个能跑的可执行文件。这中间发生的事,叫链接。七十多年里,链接器要解决的核心问题——「把分散编译的代码片段,解析符号、重定位、拼成一个能跑的整体」——其实一个字都没变,变的只是规模和约束。本文按这条主线,从「为什么需要链接器」一路讲到 mold、wild 这些新一代链接器,以及它们身上背的那些优化。 这是「深入...

深入二进制系列:C++ 全局优化技术简史

编译器的 -O2 / -O3 已经很努力了,但它有两个天生的盲区:看不远(优化卡在单个翻译单元的边界上)、看不到未来(不知道程序真正跑起来是什么样)。这篇文章把 PGO、LTO/ThinLTO、AutoFDO、LLVM-BOLT 串成一条线——它们其实都在干同一件事:一步步把优化器的视野放大,直到放大到「已经链接成型的二进制」本身。 最近给 blade 构建系统补三平台支持时,我把...

深入二进制系列:线程局部存储演化简史

多线程程序里,errno 凭什么能让每个线程各看各的?一个 thread_local 变量,如何让每个线程有自己的副本?这件看似轻而易举的事,背后有四十年的演化:从手动管理的 API,到编译器原生支持的段寄存器寻址,再到 C++、Java 的语言级抽象。本文按时间顺序,把线程局部存储(TLS)从「为什么需要它」一路拆到今天的 thread_local、ThreadLocal 和 TLS...

在 Wine 里打开并读一个文件,到底发生了什么

一个 Windows 程序编译成 PE,Linux 的库编译成 ELF——两种格式天差地别,本来连放进同一个可执行文件都做不到。可 Wine 跑起来后,Windows 程序里一句 CreateFile + ReadFile,最终却落到了 ELF 里的 open()、read()。这中间到底经过了什么?拆开来看,背后藏着三种不同的”跨界”机制:进程内的 NT 系统调用门、进程内的 uni...

逛 GitHub 逛到的一个项目:一个人 4 个月、88 万行、一个 AI 造出来的编译器

一个叫 Perry 的项目:把 TypeScript 直接 AOT 编成原生二进制,性能贴着 Rust / C++。但比技术更让我吃惊的,是这 88 万行代码——一个人借助 AI,在四个半月里写了出来。从 NaN-Boxing、隐藏类到自研 GC,再到一点关于「AI 正在改写软件开发方式」的感想。 我有个习惯:平时爱逛 GitHub,刷到觉得有意思的项目就顺手 star 一下。可说...

© chen3feng. Some rights reserved.

Using the Chirpy theme for Jekyll.