原代码

原代码

By 原代码Technology
Download on the App Store

原代码 episodes

  • QEMU
    QEMU:一台可以被改写的机器

    一台电脑正在一部 iPhone 里面启动。UTM 把 QEMU 链接成 shared library,藏进应用的一条线程;KVM 可以拿走处理器的主要执行工作,Android Emulator 可以增加手机设备,xemu 可以把它改成一台原始 Xbox。底层不断被拆开、包裹和改写,为什么它们仍然属于 QEMU 的故事?

    本期《原代码》从 Fabrice Bellard 在空闲时间里维护、没有一张通往 1.0 日程表的个人项目出发,追踪 KVM 与 Xen 的分叉怎样逐步回到共同上游,维护责任怎样从一个名字拆成许多具体位置,以及 QEMU 怎样在服务器之外进入 Android、UTM、xemu 与 GNOME Boxes。它被业界接受,并不是因为所有人最终运行同一个原版程序,而是因为越来越多人能够拿走它最显眼的部分,同时继续处理自己与 upstream 的距离。

    你可在官方网站 https://yuandaima.xyz 中查看本期逐字稿、证据引用关系和证据快照。

    时间轴
    • 00:00 一条 iPhone 线程

    • 02:27 从程序到机器

    • 06:07 没有一张通往 1.0 的日程表

    • 07:52 内核拿走处理器

    • 10:47 -enable-kvm

    • 15:28 分叉怎样回来

    • 19:02 没有唯一的交接日

    • 22:50 四个窗口,四种 QEMU

    • 28:24 一台不再属于一个人的机器

    • 本期资料
      • QEMU linux-user:2003 首发邮件与 user-mode 历史
      • Fabrice Bellard:QEMU 0.4 release
      • QEMU, a Fast and Portable Dynamic Translator
      • Fabrice Bellard:Qemu development schedule?
      • QEMU:The Role of Maintainers
      • 源码与工程记录
        • Linux commit 6aa8b732:KVM userspace interface
        • Avi Kivity:kvm, the Linux Virtual Machine Monitor
        • QEMU commit 7ba1e619:Add KVM support to QEMU
        • Anthony Liguori:QEMU 0.10.0 KVM tree
        • Ian Jackson:qemu and ioemu
        • Xen 4.3 released
        • QEMU Linux-style MAINTAINERS discussion
        • AOSP Android Emulator QEMU README
        • UTM Architecture
        • xemu:About
        • GNOME Boxes:What is the technology used by Boxes?
        • Apple WWDC19:Getting the Most Out of Simulator
        • 公司与产品采用
          • Red Hat 收购 Qumranet
          • IBM PowerKVM: Configuration and Use
          • SUSE:Managing KVM Virtualization
          • 访谈与历史原声来源
            • Anthony Liguori:QEMU 2.x and Beyond: The Foundation of the Open Cloud,The Linux Foundation,2013;本期使用约 31 秒 Anthony Liguori 原声,按来源标记的 CC BY 许可署名。
            • Alex Bennée、Christoffer Dall、Peter Maydell:QEMU for ARMv8 and the 64-bit Android Emulator,Linaro Connect,2014;本期为技术史评论使用约 27 秒 Alex Bennée 原声,并保留人物、会议和原视频入口。
            • 说明与延伸阅读
              • “业余项目”来自 Bellard 2004 年的同期邮件;“玩具”不是他的原话,也不是本期对早期 QEMU 用途的判断。
              • 2003 年 3 月 23 日首发邮件的文字来自后来维护者演讲中的转录。本期没有找到可确认的 Bellard 本人 QEMU 录音,也没有把旁白读信伪装成作者声音。
              • KVM 进入 Linux 内核不表示 QEMU 被并入内核。KVM 负责受控的 guest 执行与内存、虚拟 CPU 接口,QEMU 继续提供用户空间机器和设备模型。
              • Red Hat 收购的是 Qumranet、KVM 团队和相关产品,不是 QEMU。收购与 KVM 支持进入 QEMU upstream 处在相近时间窗口,但现有材料不支持把收购写成该 commit 的单一原因。
              • KVM 和 Xen 的 downstream tree、upstream 支持、默认路径与兼容路径在不同时间变化。一次合入或默认值切换,都不表示分叉和维护成本立即消失。
              • 现有材料只能确认到 2013 年 Bellard 已不再参与项目,不能给出唯一的正式离场日,也不能把后来的 QEMU 写成由一个人完整接手。
              • Android Emulator 的固定源码快照说明它是 QEMU downstream,并保留从 upstream 合并的路径;快照日期不代表首次采用年份,也不证明全部现代 backend。
              • UTM、xemu 和 GNOME Boxes 都有项目方材料支撑其 QEMU 关系。Dolphin、RPCS3、Xenia 等其他游戏主机模拟器没有进入本期 QEMU 系谱;Apple Simulator 则明确不是 emulator。
              • 31 min
              • sqlite.c
                sqlite.c-公共领域

                SQLite 的源码属于公共领域,任何人都可以把它用于任何目的。可要让这句话真的进入手机、浏览器、操作系统和应用,还需要什么?本期《原代码》从 SQLite 首页的承诺出发,沿着 D. Richard Hipp、Motorola、AOL、Mozilla、Symbian 与 Android,追踪一段代码怎样离开许可桌、进入别人的产品,又怎样把维护压力带回核心团队。

                从一份可以放进别人 source tree 的 sqlite3.c,到保险柜里证明权利来源的纸:代码向外走得越远,进入官方主线的路反而越窄。

                你可在官方网站 https://yuandaima.xyz 中查看本期逐字稿、证据引用关系和证据快照。

                时间轴
                • 00:00 两个大得失真的数字

                • 02:14 故事的起点

                • 07:34 许可桌被移开以后

                • 11:52 数据库消失进产品

                • 18:39 一份可以搬走的 C 文件

                • 24:40 保险柜里的纸

                • 31:18 任何目的,不是任何工作负载

                • 本期资料
                  • SQLite 首页
                  • How SQLite Is Tested
                  • Most Widely Deployed SQL Database Engine
                  • SQLite Is Serverless
                  • SQLite Copyright
                  • SQLite Consortium
                  • Appropriate Uses For SQLite
                  • 源码与工程记录
                    • The SQLite Amalgamation
                    • The Amalgamation Versus Canonical Sources
                    • SQLite check-in 4e926efe2b:Disclaimed copyright
                    • SQLite source repository README
                    • Copyright Release for Contributions To SQLite
                    • Why SQLite Does Not Use Git
                    • Mozilla Bug 245745:use SQLite as the history backend
                    • Mozilla Bug 261861:initial mozStorage interfaces
                    • Mozilla Bug 266174:mozStorage-based history
                    • Firefox Source Docs:Places
                    • AOSP platform/external/sqlite
                    • AOSP SQLite upgrade workflow
                    • 访谈与历史原声来源
                      • Changelog Interviews #201:Why SQLite succeeded as a database
                      • CoRecursive #066:The Untold Story of SQLite
                      • 说明与延伸阅读
                        • SQLite 项目方把部署规模描述为 billions and billions of copies,同时明确说精确数量无法取得。本期不把 copies 改写成可精确统计的设备装机量,也不把数据库文件数量与设备数量混为一谈。
                        • 本期提到的百分之百测试覆盖率,是当前官方文档所说的核心代码在实际部署配置下保持百分之百分支测试覆盖;它不表示 SQLite 从未有缺陷,也不表示历史上每个版本都达到同一口径。
                        • 公共领域承诺主要指 SQLite 核心源码和实际构建产物,不自动覆盖 SQLite 网站、商标、第三方扩展、下游补丁或本期引用的采访音频。
                        • free to everyone to use for any purpose 描述的是使用权,不表示 SQLite 适合每一种工作负载、免费提供支持,或允许任何人直接改变官方主线。
                        • Motorola、AOL 与 Symbian 的部分历史主要来自 Hipp 多年后的本人回忆;Mozilla 的同期 Bugzilla 记录、Firefox 文档与 AOSP 源码树承担的是可以独立核对的采用和维护节点。
                        • GitHub 上的 SQLite 仓库是从 Fossil canonical repository 单向导出的只读镜像。它不接收常见 GitHub pull request,但论坛、错误报告、合同需求和完成权利手续的正式贡献仍可以影响维护工作。
                        • 36 min
                        • 虚拟-番外
                          虚拟-番外:John Carmack 与 Michael Abrash

                          一篇公开发表的技术文章,怎样先于作者本人抵达一个还没见过他的读者,并在多年后把两个人带进同一家公司?本期《原代码》从 Carmack 读到的 EGA 文章出发,经过 Abrash 的能源模拟、Thai Chef 的谈话和 Quake 制作现场,再沿两条独立推进的 VR 路径,追踪他们如何在 Oculus 重逢。

                          从纸上出现的一个名字,到同一张地图上的两种工作尺度:一次公开写作,怎样在读者、作者与尚未成形的未来之间留下回路。

                          你可在官方网站 https://yuandaima.xyz 中查看本期逐字稿、证据引用关系和证据快照。

                          时间轴

                          00:00 机器在别人手里

                          04:45 一个名字从纸上出现

                          09:45 作者从哪里来

                          17:19 先讲未来,再谈工作

                          24:08 这一次,读者先写信

                          29:18 同一张地图,两种互补尺度

                          本期资料
                          • John Carmack 为 Michael Abrash《Graphics Programming Black Book》所写前言
                          • Michael Abrash《Graphics Programming Black Book》公开归档
                          • 美国能源部 OSTI:Abrash 参与的太阳能与电力系统研究记录(1979)
                          • 美国能源部 OSTI:SERICPAC 模拟程序研究记录(1982)
                          • Wired:The Egos at Id
                          • Oculus:QuakeCon Recap and Rift News
                          • Oculus:John Carmack Joins Oculus as CTO
                          • Michael Abrash:The Path to the Metaverse
                          • Michael Abrash:What VR Could, Should, and Almost Certainly Will Be within Two Years
                          • 访谈与本人回顾
                            • Building the Open Metaverse:Metaverse Research,Michael Abrash
                            • John Carmack 2022 年离开 Meta 的全文
                            • 说明与延伸阅读
                              • 本期不把 Carmack 与 Abrash 简化为固定的师徒关系。公开写作的影响、Quake 时期的合作和 VR 阶段的再次共事,是三种不同关系。
                              • Abrash 的 EGA 文章影响了 Carmack,但 Commander Keen 的滚屏实现与最终产品不是 Abrash 一人的工作,也不是 Carmack 一人的作品;公开知识、具体实现和团队产品需要分开归属。
                              • Quake 是程序、美术、关卡、设计与发行团队共同完成的产品。两人在核心图形问题上的密切合作,不能替代 John Cash 及更大团队的贡献。
                              • Abrash 对 Thai Chef 谈话的回忆在用餐时段和持续时间上存在版本差异。本期只采用双方见面、Carmack 阐述未来方向并再次邀请 Abrash 加入 id 这一共同动作链。
                              • VR 的这次复兴不属于单一人物。Palmer Luckey、Atman Binstock、Valve、Oculus、开发者社区和更多硬件、软件与内容团队共同改变了重聚发生的条件。
                              • “两种互补尺度”描述的是近期产品反馈与长期系统研究的不同职责,不是对两人私人冲突的判断,也不把任何一条路线写成唯一正确答案。
                              • 37 min
                              • 虚拟
                                购买未来的人-John Carmack、游戏引擎与虚拟世界(下)

                                玩家按下方向键时,一台没有画完、算完、装下或确认整个世界的机器,为什么仍能立刻回应?本期《原代码》从 1990 年那块没有完整重画却开始移动的 PC 屏幕出发,沿着 Commander Keen、Doom、QuakeWorld、Doom 3 与 Rage,追踪实时路径如何把工作转移给预处理、缓存、预测、工具和内容团队。

                                从只补画屏幕边缘,到每秒六十次必须兑现的现在:玩家越不需要等待,越多工作已经在别处提前开始。

                                你可在官方网站 https://yuandaima.xyz 中查看本期逐字稿、证据引用关系和证据快照。

                                时间轴
                                • 00:00 没有画完的屏幕

                                • 06:38 为了速度,世界先收窄

                                • 09:09 玩家进入以前,地图已经工作

                                • 15:59 服务器还没有同意

                                • 19:07 三十分钟消失以后

                                • 22:35 一张纹理背后的工厂

                                • 31:44 回到玩家的现在

                                • 本期资料
                                  • John Carmack 为 Michael Abrash《Graphics Programming Black Book》所写前言
                                  • Game Developer:Monsters From the Id,Doom 制作期报道
                                  • Wired:The Egos at Id,Quake 制作期报道
                                  • John Carmack:Issues and Rewards of Bleeding Edge Engine Development,GDC 2004
                                  • Digital Foundry:Face-Off: Rage
                                  • PC Perspective:RAGE Performance and Image Quality Evaluation
                                  • 源码与工程记录
                                    • Commander Keen in Keen Dreams 公开源码
                                    • Hovertank 3-D 公开源码
                                    • Catacomb 3-D 公开源码
                                    • Wolfenstein 3D 公开源码
                                    • Fuchs、Kedem 与 Naylor 1980 年 BSP 原论文
                                    • id Software 公开的 Doom BSP 构建工具
                                    • Doom 公开源码
                                    • Michael Abrash:Inside Quake: Visible-Surface Determination
                                    • Quake 与 QuakeWorld 公开源码
                                    • John Carmack:Quake's data access,1996
                                    • John Carmack .plan 文件公开归档
                                    • Doom 3 renderer 与 MegaTexture 公开源码
                                    • 访谈与历史原声来源
                                      • Lex Fridman Podcast #309:John Carmack,本期使用 Carmack 原声
                                      • QuakeCon 2011 John Carmack Keynote,本期使用 Carmack 原声
                                      • Electric Play 1997 年 John Carmack 访谈重刊
                                      • John Carmack Press Interview Collection
                                      • 说明与延伸阅读
                                        • “购买未来”是本期用来描述工程成本交换的叙事隐喻。它受到 Carmack 2006 年关于让应用“假装拥有未来五到十年硬件”的回答启发,但不是他为这些技术建立的统一术语。
                                        • PC 滚屏不是从真空里出现的。Carmack 明确回忆自己从 Abrash 的文章中学习 EGA 控制器知识,再发展具体技巧;Hall、Romero、Adrian Carmack 及后续内容工作又把技术接成了可以发行的游戏。Keen Dreams 公开源码保存的是后续实现,不能冒充 1990 年最初演示的逐行代码。
                                        • BSP 在 Doom 之前已有长期的学术与工业实践。Doom 的离线 BSP 构建、运行时遍历,以及 Quake 的 PVS 和 surface cache 是不同机制,不能合并成一项由 Carmack 发明的算法。
                                        • QuakeWorld 的客户端预测没有消灭网络延迟,权威服务器状态仍会回来;Doom 3 的实时编辑反馈也没有让完整内容生产等比例缩短。
                                        • Rage 的 virtual texturing 不等于无限显存,接近 60 FPS 也不是单项技术或个人独立完成的结果。存储、缓存、驱动、平台、构建基础设施、内容团队与玩家端条件都会改变最终表现和代价。
                                        • 本期用“虚拟”描述一个由被选择的信号、重新安排的计算、及时反馈和人与人的关系共同维持的世界;这不是 Carmack 的术语,也不表示重写版仍讨论 Oculus、VR、timewarp、presence 或 Metaverse。
                                        • 37 min
                                        • 虚拟
                                          图形世界的王-John Carmack、Softdisk 与 id Software

                                          一台只租一个星期的 IBM PC,怎样把一名合同程序员带进 Softdisk,又让他的技术判断逐渐成为别人工作的前置条件?本期《原代码》从 John Carmack 必须归还的机器出发,沿着三十天交付、PC 滚屏、Commander Keen、Quake 和 Rage,追踪稳定设备、同事、发行与引擎怎样不断改变“谁在等待谁”。

                                          从一台到期必须归还的电脑,到一批不能让市场停下来等待的项目:机器留在原处以后,时间却越来越难被留住。

                                          你可在官方网站 https://yuandaima.xyz 中查看本期逐字稿、证据引用关系和证据快照。

                                          时间轴
                                          • 00:00 一个星期

                                          • 02:37 三十天

                                          • 05:08 屏幕滚动的夜晚

                                          • 12:25 技术基础

                                          • 15:44 终于

                                          • 21:07 九个月

                                          • 23:53 省下来的时间去了哪里

                                          • 27:47 任务完成

                                          • 29:00 时间有重量

                                          • 本期资料
                                            • John Carmack Answers,Slashdot 1999
                                            • Apogee 保存的 1990 年 Commander Keen 提案信
                                            • 3D Realms:A Look Back at Commander Keen(互联网档案)
                                            • Jay Wilbur:id Software - The Entrepreneur's Mind(互联网档案)
                                            • Game Developer:Monsters From the Id,Doom 制作期报道
                                            • Wired:The Egos at Id,Quake 制作期报道
                                            • Digital Foundry:Face-Off: Rage
                                            • Game Developer:John Carmack 正式离开 id Software
                                            • 源码与工程记录
                                              • John Carmack 为 Michael Abrash《Graphics Programming Black Book》所写前言
                                              • Commander Keen in Keen Dreams 公开源码
                                              • Doom 公开源码
                                              • Quake 公开源码
                                              • John Carmack:Quake's data access,1996(互联网档案)
                                              • John Carmack .plan 文件公开归档
                                              • 访谈与历史原声来源
                                                • Lex Fridman Podcast #309:John Carmack,本期使用 Carmack 原声
                                                • The Examined Game:The Dial Up Entrepreneur,本期使用 Scott Miller 原声
                                                • Joe Rogan Experience #1342:John Carmack,本期使用 Carmack 原声
                                                • Electric Play 1997 年 John Carmack 访谈重刊
                                                • QuakeCon 2011 John Carmack Keynote
                                                • David Kushner:Masters of Disruption,John Carmack 系列访谈
                                                • 说明与延伸阅读
                                                  • “图形世界的王”描述的是 Carmack 的技术判断如何成为产品和他人工作的边界,不是把 Commander Keen、Doom、Quake 或 Rage 写成他的单人作品。Tom Hall、John Romero、Adrian Carmack、Scott Miller、Michael Abrash 以及更多程序、美术、关卡、工具和发行成员共同改变了最终结果。
                                                  • Carmack 从 Michael Abrash 的文章中学习了 EGA 控制器知识,又发展了自己的实现;公开知识、Carmack 的具体实现,以及 Hall、Romero、Adrian Carmack 等人把技术接成 Commander Keen 的贡献需要分开归属。
                                                  • Shareware 发行、商业引擎授权、产品内的 mod 与数据接口,以及多年后的商业源码公开是不同事件;其中任何一项都不能代替其他几项。
                                                  • Rage 的开发周期和最终结果涉及技术、美术、设计、工具、平台、发行与组织决策。Carmack 在 2019 年关于降低部分技术雄心、更早发布的说法是后见判断,不能把项目结果归因于他一人。
                                                  • “任务已经完成”是 id Software 在 Carmack 离职时的公开表述。Carmack 自己的公开说明只支持顾问安排未能实现,以及同时分配注意力很困难,不足以证明一场未公开的人际决裂。
                                                  • 35 min
                                                  • 跨过山丘

                                                    Dart 为什么没有进入 Chrome,却成为了 Flutter 的核心语言?本期《原代码》从 Lars Bak 的“我没有时间”出发,追踪 V8、Dart、TypeScript、Sky 与 Flutter 如何围绕开发者等待、浏览器治理和真实产品工作负载,走出几条不同的路。

                                                    从 Chrome 里空下的位置,到手机屏幕上的一次 Hot Reload:Dart 如何跨过 Web 没有跨过去的那座山。

                                                    时间轴
                                                    • 00:00 我没有时间
                                                    • 02:38 把等待藏在语言下面
                                                    • 08:14 两只钟
                                                    • 13:23 原声:更稳妥的赌注
                                                    • 15:39 空位与开关
                                                    • 21:25 Flutter 把时间写进 Dart
                                                    • 28:46 一秒以内
                                                    • 本期资料
                                                      核心资料
                                                      • Dart 2011 年发布
                                                      • Dartium 技术预览
                                                      • Dart for the Entire Web
                                                      • V8 十周年官方回顾
                                                      • TypeScript 2012 年发布
                                                      • Dart 团队欢迎 TypeScript
                                                      • ECMA-408 官方页面
                                                      • Dart 2 stable
                                                      • Dart 2.3 UI-as-code
                                                      • Dart VM 十年回顾
                                                      • Flutter 1.0 发布
                                                      • 源码与工程记录
                                                        • Flutter 2014 Open the Sky 初始 commit
                                                        • Sky-Dart 构建开关 commit
                                                        • 首个功能性 Sky-Dart commit
                                                        • Sky 正式切换 Dart 的 Mojo revision
                                                        • Flutter iOS 预编译 snapshot commit
                                                        • Flutter 仓库
                                                        • Dart SDK 仓库
                                                        • 访谈与历史原声来源
                                                          • GOTO Aarhus 2012,Anders Hejlsberg and Lars Bak
                                                          • Dart Developer Summit 2015,Sky: An Experiment Writing Dart for Mobile
                                                          • GOTO Chicago 2016,Want to be a Better Programmer?
                                                          • 说明与延伸阅读
                                                            • Dart 和 Go 最初面向不同的问题域,不能写成直接的内部竞品。
                                                            • TypeScript 的兼容路线与 Dart 有部分重叠,但没有证据证明它直接导致 Chrome 终止 Dart VM 计划。
                                                            • Sky 的 Dart 迁移早于 2015 年 3 月的 Chrome 路线转向;Flutter 不是随后临时创造的“救援项目”。
                                                            • ECMA-408 的规范发布不等于多浏览器原生 Dart VM 的采用。
                                                            • Flutter 深刻影响了 Dart 的运行时与产品语境,但 Dart 2 的类型和语言演进还受到 Web 编译器、Google 内部大型应用与工具链等多重压力影响。
                                                            • 33 min
                                                            • 等待机器

                                                              Bun 为什么会出现?本期节目从“保存文件以后等浏览器更新”的几秒钟讲起,追踪 Bun 如何从 Jarred Sumner 的开发等待中诞生,如何把 JavaScript 工具链压进一个 all-in-one 二进制,又如何在 Anthropic、Claude Code 和 Rust rewrite 的语境里,被重新定义为 AI coding agents 时代的基础设施。

                                                              这不是一集 Bun 教程,也不是一场性能榜单复述。它是一集关于等待、注意力、工具链、开源维护和软件世界如何不断重造轮子的故事。

                                                              时间轴
                                                              • 01:30 等待的史前史
                                                              • 06:08 一个游戏被等待吞掉
                                                              • 08:54 一只大轮子
                                                              • 14:59 掌声变成 issue
                                                              • 19:21 为什么不能让 Node 更快一点
                                                              • 20:38 从人类开发者到 AI agents
                                                              • 24:23 轮子被重铸
                                                              • 30:51 等待没有消失
                                                              • 本期资料

                                                                本期主要资料包括 Bun 官方博客、Bun GitHub 仓库与 PR、Jarred Sumner 的公开访谈、Anthropic 收购新闻稿、Claude Code 安装文档,以及 Hacker News、Lobsters、Ziggit 等社区讨论。

                                                                核心资料
                                                                • Bun 官网
                                                                • Bun 1.0 官方博客
                                                                • Bun joins Anthropic
                                                                • Anthropic acquires Bun
                                                                • Bun GitHub 仓库
                                                                • PR #30412 Rewrite Bun in Rust
                                                                • Bun single-file executable docs
                                                                • Claude Code setup docs
                                                                • 访谈与原始音频来源
                                                                  • PodRocket: Bun with Jarred Sumner
                                                                  • Syntax #544: Supper Club x Bun with Jared Sumner
                                                                  • DevTools FM Episode #37: Jarred Sumner - Bun
                                                                  • InfoWorld Jarred Sumner interview
                                                                  • 社区讨论与背景资料
                                                                    • HN launch thread
                                                                    • HN Bun 1.0 thread
                                                                    • HN Rust rewrite merged thread
                                                                    • OSSInsight Bun stargazers history
                                                                    • Star History Bun chart
                                                                    • DevClass Oven announcement
                                                                    • DevClass Anthropic acquisition
                                                                    • DevClass Rust rewrite
                                                                    • RedMonk Bun analysis
                                                                    • 36 min

                                                                    About 原代码

                                                                    From the publisher's feed

                                                                    一档关于软件开发世界的声音批评节目,追踪代码、工具与人的选择,并为每期节目保存可检索、可复查、可长期保存的公开档案。