Goose 编程语言:内存安全、没有 GC,编译器几乎全由 AI 写成
一种内存模型:数据栈
Wouter van Oortmerssen 设计的 Goose 只有一种内存模型。程序有原生调用栈、静态数据,以及若干由编译器算出的数据栈。每个数据栈是一大块预留地址空间加一个 bump 指针(递增分配指针),没有堆分配器,也没有垃圾回收器。
同一个栈上最多只有一个可调整大小的值存活,而且它总在栈顶。增长不会移动已有数据,编译器在编译期证明这一点,运行时只跟踪指针。直接结果是引用在增长后依然有效:往数组里 push 一百万次,最初拿到的元素引用仍指向原处。C++ 的 vector 或 Rust 的 Vec 重新分配后给不了这个保证。
嵌套数据保持内联。字符串、字符串数组、带可变大小字段的记录,每一层都是连续、不含指针的内存。作者给的例子是一个订单记录:C++ 里 160 字节加 1 次分配,Goose 里 29 字节、0 次分配。相对引用 T&<u32> 是从字段自身算起的 32 位偏移,结构位置无关,可以直接写文件再读回来,读取时校验坏数据。
性能与边界
作者自己的 16 项基准里,Goose 比惯用 C++ 快约 3.3 到 3.5 倍,比手写优化的 C++ 快 1.16 到 1.26 倍,比最好的安全 Rust 快 1.12 到 1.19 倍。峰值内存分别少 1.9、1.3 和 1.2 倍。线程不共享内存,thread_fn 编译成独立程序,线程间通过类型化队列传递 flat 值,一次 memcpy。数据竞争、锁、原子操作在语言里不存在。
限制也明确。开发者需要思考数据放在哪、谁拥有、作用域多长。递归函数不能跨递归调用保留可增长数据。可变大小元素的数组能迭代不能索引。没有逃逸闭包、函数指针,只支持全程序编译。reusable 池里归还后仍被引用的槽位会读到下一个占用者写入的值,作者说这是逻辑 bug,不是内存损坏。
AI 写的编译器和文档争议
Goose 的编译器约三万行 C++,几乎完全由 AI 生成。作者几年前设计过 Goose 并开始实现,后来经营游戏创业公司没时间完成。Claude Fable 出现后,他让 AI 克隆自己另一个编译器 Lobster 的风格,逐 pass 写出新编译器,初始设计里许多未指定的地方在和 AI 的讨论中定下来。
HN 上的批评集中在文档。adastra22 说会扔掉全部文档重写,他需要知道哪些设计是作者的、哪些是 AI 的偶然,才能判断项目是否匹配自己的用例。jcmoyer 找到一个具体错误:教程说 C++ 的 vector<string> 每个字符串一次堆分配,但示例短字符串符合小字符串优化(SSO),不会逐串分配。支持者 felixgallo 反问,如果一个功能是 Claude 实现的或是人实现的,你会采取什么不同行动。作者回应说已经编辑过不少,但更希望人们先去玩一玩。
有开发者把商业 Rust 代码库里的几个算法移植到 Goose,明显更快。他认为更大的收获是 Goose 引导 LLM 用了更高效的数据结构,移植回 Rust 也保留了大部分收益。
美国创意产业四年少了 20 万个岗位,AI 占多少?
数字艺术全线收缩
美国创意产业过去四年丢掉超过 20 万个工作岗位,仅过去一年就减少约 5 万。这是现代美国媒体就业史上最糟糕的时期之一,强度和持续时间只有 2001 年和 2008 年两次衰退可以相比,不同之处在于今天没有全面衰退。
好莱坞四年丢了超过 10 万个岗位,接近该行业总就业的三分之一。今年夏天触底时,总就业接近 30 年最低。文字出版减少超过 7 万,是第二大来源。直播、流媒体、平面设计这些部门最近的下滑,与此前的平静相比显得反常。数字艺术所有子部门都在丢工作,线下娱乐仍在健康增长,这是文章认为最清晰的证据。
精确归因很难。媒体公司对 AI 使用守口如瓶,既怕公众反弹,也更怕动摇版权的法律基础。AI 的影响与好莱坞整合、制作离岸、社交媒体创作者取代传统媒体混在一起。
互联网那次转型的教训
文章用 Napster 和 Metallica 的官司解释第一次数字转型。Metallica 在法律上或许正确,却站在了技术的错误一边;美国唱片业协会赢了战斗,输了战争。文件共享让版权稀释,单曲价值跌到流媒体可以进场整合、收取微薄费用的程度。2000 年买一张专辑的钱,现在能换一个月几乎全部人类创作音乐的无限访问。音乐产业再没回到 CD 鼎盛时期的高薪时代,音乐本身越来越像现场演唱会和周边商品的亏本广告。
视频走的是相反方向:从影院到家庭,每次技术跃升都增加了总观看时间,行业得以在剧变中繁荣,直到流媒体时代。今天视频选择过多,免费用户生成内容在 ChatGPT 发布前多年就已构成竞争。去年电影票房比 2019 年峰值低 25%,有线收入低 18%,流媒体收入补不上缺口。好莱坞几乎没有现场演唱会那样的止痛药。
社区的几种解释
HN 评论里,jparishy 看到一个更广的模式:娱乐业把工作移出洛杉矶“省钱”,会有长期连锁反应。依赖电影业的本地企业关门,专业人才减少,人才变贵,洛杉矶拍摄变得太贵,其余工作也走了。solatic 补充地理逻辑:好莱坞鼎盛时,演员、经纪人、制片人、摄影机、剪辑、VFX 都在开车距离内。现在青少年用手机摄像头就能做出吸引注意力的故事,地理位置邻近的价值下降。
echelon 住在亚特兰大,这个前洛杉矶电影外包地拍过很多漫威和 Netflix 项目。他说工作都去了欧洲,现在那里拍摄更便宜。icantevenhold 组织电子地下音乐之夜 15 年,基本停了,他认为 COVID 及其后果比 AI 因素大得多。
timr 直接质疑文章:印刷和音视频自 90 年代以来明显下滑,归因于印刷、CD 和有线电视的死亡,AI 可能只是斜率微小变化。blltprfmnk 引用斯坦福 SIEPR 的政策简报说,经济学家反复说 AI 迄今对经济影响最小。georgemcbay 提醒,经济学家也曾集体反对 Brooksley Born 关于不受监管衍生品的警告。
关于流媒体,999900000999 说娱乐首先被砍,每个服务越来越对用户有敌意。kaseijin 说 binge 完就取消,流媒体靠头几集炒作拿到订阅,留下不满意结局。andyferris 认为苹果最初是对的:唯一让用户满意的服务是聚合器。
Cerebras 怎么把万亿参数模型摊到 59 个晶圆上
一层一层算内存
一台 Cerebras WSE-3T 晶圆有 44 GB 片上内存,万亿参数模型的权重单独就要 TB 级。Cerebras 在博客里拆解了部署方法,例子是 Kimi K3:3 万亿参数,69 个线性注意力层加 24 个稠密层,共 93 层。
按 4-bit 量化存储,3T 参数原始载荷 1.5 TB,除以 93 层,每层约 16 GB。稠密层要为每个活跃请求的每个 token 存 key 和 value,一个晶圆只放一层,剩下 28 GB 留给 KV cache。线性注意力层不为每个 token 存 key/value,每个请求只维护固定大小状态,所以一个晶圆放两层。69 个线性层需要 35 个晶圆,24 个稠密层需要 24 个,总共 59 个。
晶圆之间用 RDMA over Ethernet 连成流水线,每次跳转约 2 微秒。整层直接放在芯片上,权重不用移动,层也不用跨晶圆切分,晶圆之间只传激活值。
流水线与功耗
单个请求像流水线:1 号晶圆跑 1 到 2 层,把激活传给 2 号,直到最后一个晶圆产出下一个 token。多请求时整个流水线装满不同请求,每个阶段同时处理不同请求的 token。在途请求数约等于阶段数乘以 micro-batch 大小。
文章说评估推理系统吞吐量更有意义的指标是每单位功率的 token 吞吐。有人按每个晶圆平均 20 kW 算,59 个晶圆约 1.18 MW;假设每请求 1500 tokens/s、190 个并发请求,约 4.1 J/token。shrubble 补充 Nvidia 一个机架 120 kW,整套功耗约等于 10 个 GPU 机架。
讨论:可用模型与故障域
评论区反复出现的问题是实际可用模型太少。keyle 说 Cerebras 上能用的只有 GPT OSS 120b 和 Qwen 3.8 27B,“飞得快但基本是错的”。2001zhaozhao 订阅过已下架的 coding plan,1000 TPS 当时独一无二,现在 Qwen 3.8 被 Mercury 3 在成本和性能上全面超过。
zhyblife99 问 59 晶圆流水线的故障域:GPU 部署掉一个节点可以降级,这里模型就是机架,一个坏晶圆拖垮整条流水线,也没法滚动升级。关于 2k tokens/s 是否真有用,lifeisloving 认为审查负担才是瓶颈,一个开发者跟不上多个 50 tps 会话的产出;visarga 建议用多个 agent 互相差分测试来减轻审查负担。
小程序与小语言为什么吸引人
小到不可思议
ratfactor 写《Implementing a Forth》时收到不少反馈,由此想到小东西为什么吸引人。200 行代码比 2000 行更容易读。如果 20 行代码做了他预期 2000 行才能做的事,他很想读那 20 行。
Luke Jackson 的 DOM diffing 库 ijk 只有 25 行。Philippe Brochard 回复过一个 46 字节的“Forth”,小到可以直接贴出 hexdump。Arthur Whitney 用一个下午在一页纸上写出数组语言解释器,122 行晦涩的 C。Geo Carncross 讲的 kOS 把 k 语言、kdb 数据库、GUI 和窗口管理器塞进 90KB 可启动镜像。
Justine Tunney 的带垃圾回收 Lisp 可以小到 436 字节。Frank Force 把 3D 浏览器游戏塞进 2KB 极度压缩的 JavaScript。HN 用户 zzo38computer 用 uxn 写了一串有用小程序:十六进制解码器 39 字节,JSON 转 NDJSON 125 字节,带图形和音效的卡牌游戏 1853 字节。
三种小语言
语法极小的高级语言里,Forth、Lisp、Tcl 是三个典型。Forth 唯一的语法结构是空格;Lisp 核心语言小、表达力大;Tcl 的一切都是字符串。理解几个核心概念就能获得很大力量,语法核心能写在一张索引卡上。但要用好它们,习惯 Algol 式过程语言的人得经历一次思维大转弯。
Lua 兼顾小和简单。作者有印刷版 Lua 5.1 手册,语言部分只有 27 页。C 也紧凑,虽然不容易安全有效地使用。JavaScript 的核心语言大概和 Lua 相当;函数、数组、对象几乎就是他用的全部 JS。David Ungar 反思 Self 的多继承错误时说:“让系统稍微简单一点,让人多写一些东西,也比系统行为古怪、没人能理解要好。简洁胜过表达力。”
约束与愉悦
社区里,abainbridge 正在做一个简单的编译型脚本语言。他不理解为什么大多数脚本语言先编译成字节码再解释:那需要设计字节码、写编译器、写解释器三步。直接用机器码当字节码可以省掉两步,程序还跑得更快。他的 mortar 项目目前能让 Fibonacci 生成器跑起来,比几乎相同的 Python 程序快 380 倍。ozgrakkurt 反驳说字节码可移植,机器码不可移植。
作者一直迷恋微型模型和透视画。Stephanie Langin-Hooper 在《Tiny Things and Why We Love Them》里写,把实物缩小会产生影响:物体变得可爱、更易接近,也更可控。他看到一小段有用代码时正是这种反应。计算机领域很多“大”东西,都是个人用新方式解决“小”问题时积累起来的“小”胜利。
SpeedCrunch 1.1 发布
功能与修复
SpeedCrunch 是免费开源的跨平台高精度科学计算器,面向 STEM 从业者、学生与教师。1.1 版支持最高 50 位精度和复数,内置 140 多个函数、大量单位和常量,用户可以自定义变量、函数和单位,还支持向量与矩阵。历史记录可以改写成新表达式重新计算,键盘区能完全自定义,多会话可以用标签页、窗格或独立窗口打开,提供 40 多种翻译和配色。
HN 用户 unanimous 提到一个拖了很久的运算顺序修复:输入 1/2(-9.8) 以前会得到 -0.05102040816326530612,现在得到 -4.9。表达式还会渲染成 1 / 2 × (−9.8),把隐含的乘法标出来。dataflow 认为这种写法应该直接报错,而不是靠补一个乘号来消歧。
长期用户与 AI 回复
borner791 说这是最实用的计算器,位运算和进制转换都顺手,他在 Windows 2000 计算器消失后找了很久。smusamashah 几乎每天用它看二进制位和移位操作。他最近提了一个界面偏暗的 issue,一小时内收到回复,内容看起来是 AI 写的,非常正式、篇幅较长,但并不敷衍。跟进之后请求被接受了。他说不介意 AI 参与,只是第一次在这个项目里见到这种流程。
有人提醒,科学计算器做对并不容易。SpeedCrunch 这次修的就是计算错误,多数和运算顺序有关,但不总是。amelius 分享说,他让 Claude 先列出科学计算器该有的函数,自己加上复数支持,再让 Claude 写实现,一次就得到看起来完美的结果。girvo 回应说想看看准确度,也好奇有没有底层库可以直接复用。
一台三星电视的 root shell 里有什么
固件拆解与发现
安全研究者 @log4j 说,他那台 2025 年的三星电视推送的广告精准得奇怪,于是决定拆固件。固件被 AES 加密,不拆机、不用 UART/JTAG 就拿不到密钥。他走零日漏洞拿到了 root shell,随后发现常开热麦克风、自动内容识别(ACR,分析屏幕播放内容)、地理位置定位、网络测绘、定向广告服务、4 种 DRM 服务和大量遥测数据。他提到一个叫 security-policy.xml 的文件,表示稍后公开更多细节。
澄清与对比
HN 用户 luma 补充,狗叫检测和婴儿哭声检测是三星 SmartThings 集成中公开宣传的功能,本地芯片只识别特定声音模式,不等于把录音传回服务器。pawelduda 查证后确认功能存在,同时批评原帖强调“PRIVACY HORROR”的写法更像推特式夸张。
luma 还引用对主流电视品牌的对比测试:用户拒绝隐私授权后,三星是唯一真正停止发送数据的品牌;LG 在德克萨斯州的诉讼和解后加入强制仲裁条款,数据收集反而更多。这不抹去三星电视里那些功能的存在,但“谁更糟”要看具体机型和设置。
@liminalsunset_ 从可 root 的角度补充,三星用 Knox 做安全框架,但没有 EL2 hypervisor(底层的虚拟化隔离),所以 root 比预想容易。另有用户提到,LG 电视上的开源项目 Glasshouse 能关掉遥测、增加功能,但对应漏洞最近已被修补。
用户能做什么
讨论延伸到 AI 和逆向工程。多条评论提到,@log4j 的 OpenAI 账号因“Cyber Abuse”被暂停,原因不明。几位开发者担心,如果连在自有设备上做安全分析都可能被封,大模型对这类工作的价值会下降。也有人分享成功经验:明确说目标是验证自己设备的行为,申诉通常能通过。
对普通用户,评论区给出的路线是:让电视完全断网,只用 HDMI 接 Apple TV 或开源播放器;买电视时找商用显示器或明确标注非智能的型号;不怕折腾的话,拆掉 Wi-Fi 模块或加金属屏蔽。有用户提到,智能电视的广告和数据收入压低了整机价格,高画质、低价格和不被追踪往往只能选两样。
监听 11175 kHz:美国核力量的紧急行动信息
消息长什么样
短波 11175 kHz 的上边带,一个声音在念字母,念完一遍说 “I say again”,再念一遍。这是美国核力量的紧急行动信息(EAM)。导弹兵出身的 Daniel Frenkel 做了 missileer.watch:两台接收机把抄到的 EAM 录下来,机器转写成字符,听错的地方由登录的听众修正。你也可以放一段真实录音,把听到的每个字符写下来,再和网站的版本对照。
EAM 形状固定:先网络呼叫,六字符的前导念三遍,每遍前说 standby,然后 “message follows”,接着整串字符。可用字符只有 32 个:A 到 Z 加 2 到 7,没有 0、1、8、9。1985 年 Ashton Carter 在《科学美国人》上把它叫作“短的、预先排好格式的加密信息”。外面的人解不开,能做的只有听。
发射控制舱
消息落到发射控制舱:地下 60 英尺,8 吨重的防爆门后,两名军官值 24 小时班,房间有一辆校车那么大。头顶的红色时钟走祖鲁时间,每天对着美国海军天文台的母钟校准到秒。两人都确认信息真实,才轮到下一步。系统设计成没有一个人能单独发射:各持一把钥匙,冷战时期保留的 Delta-01 舱里,两个钥匙开关相距 12 英尺;也没有一个舱能单独发射,通常要第二个发射控制中心附和。
今天的力量是 400 枚民兵 III,分属怀俄明、蒙大拿、北达科他三个联队。民兵 III 是三级固体燃料导弹,1970 年首次部署。固体燃料是它能一直等的原因:没有东西要泵,也没有东西要补加。
网站与讨论
Frenkel 2012 到 2016 年在 F.E. Warren 第 321 导弹中队当作战值班员。他说自己讨厌这份工作,但也为它骄傲:训练多年就为了什么都不做,穿着运动裤坐在舱里等。他退役后才知道同样的通联在短波上公开播发,四年舱内值班没听过一次 EAM 被读出来。
评论区相当一部分在聊网站文案太像 AI 写的。有人抓出 “Mostly static. The net is quiet until it isn’t.”,说自己一两句话就能认出“Claudenglish”。也有人提醒,能认出的只是模型未经调校的默认风格,给几个样本做微调,模仿特定的人并不难。
技术细节上,一位海军老兵说,当年演习里他们整天守着 HF 接收机抄这些字符,重复播发就是为了核对。有人断定加密用了一次性密码本;也有人不同意“HF 只是备份”。至于消息变多意味着什么,有评论把话说死:什么也不意味,刚结束一场大演习,流量涨落很正常。评论区还提到 13 分钟:潜射导弹从发射到命中目标大约要这么久,陆基大约翻倍。
日本柴鱼:世界上最硬的食物怎么做
手火山法
kottke.org 分享了一段视频,走进西伊豆 1882 年创立的 Kanesa Katsuobushi Shoten。第五代匠人芹泽泰久仍在使用有 200 年历史的手火山(tebiyama)手工烟熏干燥法,全日本只有少数作坊保留这门手艺。
流程是:新鲜鲣鱼切片,煮 90 分钟,在手工照看的柴火上方烟熏干燥 10 多次,用鲣鱼膏修补鱼身,再用曲霉(koji mold)发酵,日晒数月。前后超过半年,鱼变得像木头一样硬,表面像宝石一样发亮。手火山法要在约 2 米深的竖坑底部烧伊豆本地的橡木、麻栎、樱木,用明火高温直接烟熏。作坊网站说这是现存最古老的烟熏法,可追溯到约 300 年前的江户时代。
刨片与味道
ggm 描述旧筑地市场:木箱里盛着柴鱼片,在风中轻轻飘动;人们用绿色搪瓷电动台式刨床刨片,燃气市场推车装着冷冻金枪鱼块和鲍鱼箱穿梭。他说澳大利亚买到的包装柴鱼片在运输中碎成小块,但放进三文鱼米饭的蒸汽里,香气照样散开。柴鱼片让他想到木工车床周围的碎屑,在那里是废料,在这里却是全部目的。
halflife 在东京一家鱼汤拉面店见过一块柴鱼和手摇刨片机,样子像巨型卷笔刀。柴鱼片装在小网兜里端上来,店员建议泡 10 秒,但不超过 30 秒,否则味道太浓。nkrisc 提到在家做汤底很简单:柴鱼加昆布就行,两种原料都耐储存。
过敏与工序讨论
spike021 说自己对鱼过敏,不能吃金枪鱼和三文鱼,但几乎任何柴鱼汤底做的菜都没问题。aidenn0 的妻子同样对鱼过敏,却能吃柴鱼、鱼露和金枪鱼罐头,任何新鲜鱼都会让她严重不适。rprwhite 解释,这听起来像蛋白质过敏,蛋白质变性后就不再有反应,高温、低 pH 或氧化都可以让蛋白质变性。tux3 纠正“过敏都是蛋白质”的误解:抗体不一定只结合蛋白质,脂质、碳水化合物,任何足够大的分子都可能引发过敏。
avadodin 指出江户时代 1868 年就结束了,1882 年创立的店和 2017 年创立的店,在“像江户时代那样做”这件事上没有区别。Walf 回应:这家店做同一产品 144 年,保留了仅 14 年前的技艺,这本身就是成就。
关于手工去骨,jazdw 感叹处理那么多鱼片太疯狂。27183 分析,如果在初切时就剔骨,会损失大块肉,也未必剔得干净;煮后再去骨大概是时间、难度和浪费之间的帕累托最优。
牙釉质里的中世纪铅污染
用牙齿重建生产史
剑桥大学出版社《Antiquity》发表的一项开放获取研究,用牙釉质中的铅浓度重建了英格兰德比郡峰区公元 600 至 1500 年的铅生产史。峰区位于英格兰中部、奔宁山脉最南端,是中世纪欧洲最大的产铅区之一,但早期生产的时间线一直不清楚。
诺丁汉大学的 Christopher Loveluck 等人分析了 17 个个体的牙釉质。牙釉质形成后不再重塑,保存的是大约 4 到 12 岁童年的铅暴露记录。研究用英国地质调查局的电感耦合等离子体质谱(ICP-MS)测定浓度,并配合锶、氧、铅同位素分析判断个体童年是否生活在本地。
结果显示,后罗马时代的铅冶炼在七世纪中叶已经建立,到八世纪中叶,Castleton 等矿冶中心周边出现大规模生产和环境污染。这为峰区提供了第一批绝对年代。此前该地区的冶炼活动只能靠瑞典比尔卡砝码的铅同位素分析,推断在公元 760 至 860 年之间。
谁暴露得更多
按现有标准,牙釉质铅浓度高于 0.6 至 0.7 ppm 指示人为活动,低于 0.5 ppm 属于自然背景。中世纪样本中除一人外全部超过 10 ppm,四人超过 40 ppm,十人在 15 至 40 ppm 之间。
Wigber Low 的样本呈现出与社会身份和性别相关的分化:两名随葬武器的本地男性浓度最低,可能不直接参与生产,而是受益于对生产的控制;无随葬品的男性 29.5 ppm,可能来自地位较低的家庭或从外地迁入;两名女性偏高,分别为 69.1 ppm 和 13.2 ppm,她们都葬在幼童附近。怀孕会把沉积在骨骼中的铅重新动员到血液,母亲和胎儿因此更易受害,作者只把这种早逝称为“关联方向”。
稍晚的 Joule Yard 样本全部超过 25 ppm,指向一个以采矿冶炼为业的专业化社区。Spital Field 的五人浓度在 25 至 68 ppm 之间,最高的两人年代为 1175 至 1270 年,恰好对应《Pipe Rolls》记录中 1180 至 1215 年的中世纪产量顶峰,也与瑞士阿尔卑斯冰芯和瑞典湖底沉积记录的欧洲铅污染高峰一致。
本地传统与参照价值
锶和氧同位素显示,峰区中世纪人口的迁入很少,铅生产更像一项本地世代相传的传统。研究还修正了锶比值 0.714 以上即代表外来人口的旧假设:对当地土壤的分析表明,这一数值在峰区生物圈内并不罕见。
作为对照,特伦特河谷 Repton 的维京营地相关人群铅暴露较低;16 世纪瑞典 Sala 银矿墓地中一部分人的牙釉质铅浓度也明显低于峰区,因为那里的矿工包含大量童年在外地度过的强制劳工。作者认为,峰区人群的铅水平可以作为识别其他地区和时代银铅产区的参照基准。
2026 年为什么还用 Gopher
Wayne 在 2026 年 5 月写下 phlog(Gopher 上的日志)第一篇,标题问的是为什么 2026 年还用 Gopher。他先猜读者:大概是那种不满足于只用工具、还想弄明白它怎么运作的人。好厨师、好机修工不少,但有多少人会往自己擅长的事情里再钻一层。
像这样的人会为了好玩搭一个 phlog,感受技术已经走了多远。也许你来是为了怀旧,也许是想关掉现代科技的噪音。Wayne 注意到 17 岁的孩子和他们的 ADHD 朋友想关掉世界的噪音,回到更简单的年代。作为从那个年代过来的人,他有点自豪,也有点想说“滚出我的草坪”。回不去了,无论好坏,都得弄明白现在站在哪里。
他提到科技处在一个奇怪的位置,既有帮助又没什么帮助:什么都要订阅,服务总在变,利润决定一切的方向。找到一个像 sdf 这样按老方式运转的地方,让人舒服。
HN 上 prologic 说 Gopher 协议今天依然相关,美就美在简单,他多年前写的 go-gopher 库现在还有人用。anthk 补了具体路径:Gemini 在老机器上表现不错,有些客户端精简到 awk 加 less;Reticulum 在 32 位机器上跑不起来。起步地址有 gopher://magical.fish 和 gopher://sdf.org。Lagrange 客户端同时覆盖 Gemini 和 Gopher,还能设 HTTPS 代理去读新闻站和博客。文章末尾有一条 2026 年 5 月 24 日的评论,来自 y4my4m:一方面回不去,另一方面又必须回去,只知道“我自己需要慢下来”。
播客全文
女:Hello 大家好,欢迎收听 Agili 的 Hacker Podcast,我是莓莓。
男:大家好,我是阿迪。
女:今天这期跨度挺大,从一门系统编程语言聊到一条短波电台,中间还有柴鱼、电视和牙釉质。你想从哪儿开始?
男:从 Goose 吧。Wouter van Oortmerssen 设计的一门系统编程语言,卖点很直接:内存安全,没有堆分配器、垃圾回收器,也没有生命周期标注。
女:没有生命周期标注还能内存安全,这听起来像是把 Rust 最让人头疼的那部分直接绕过去了。
男:它只有一种内存模型,叫数据栈。程序有原生调用栈、静态数据,还有编译器算出来的 N 个数据栈。每个数据栈是一大块预留地址空间加一个 bump 指针,也就是递增分配指针,除此之外没有别的内存。
女:那往数组里 push 元素的时候,数组变大了怎么办?
男:同一个栈上最多只有一个可调整大小的值,而且它总在栈顶。所以增长永远不移动已有数据,也不需要检查容量。编译器在编译期证明这件事,运行时只跟踪 bump 指针。
女:这意味着你最早拿到的那个元素引用,push 一百万次之后还在原地。
男:对。C++ 的 vector 或 Rust 的 Vec 会重新分配,给不了这个保证。作者说稳定引用是多项基准领先的来源之一。在 16 项基准里,它比惯用 C++ 快约 3.3 到 3.5 倍,比手写优化的 C++ 快 1.16 到 1.26 倍。
女:嵌套数据呢?字符串数组、带可变大小字段的记录,这些通常会散落到堆上。
男:Goose 里每一层都是一块连续、不含指针的内存。文章举了个订单记录的例子,C++ 里是 160 字节加 1 次分配,Goose 里是 29 字节、0 次分配。
女:这个数字挺具体。线程呢?现在写系统代码很难绕开多线程。
男:线程不共享内存。thread_fn 编译成独立程序,有自己的内存和全局变量副本,线程之间通过类型化队列传 flat 值,一次 memcpy。数据竞争、锁、原子操作、内存序在语言里不存在。
女:评论区肯定有人问,那复制本身怎么在没有原子的情况下完成。
男:复制由运行时做,底层当然用原子,用户不碰。作者也承认消息传递要写两次内存,先建自己的缓冲区,再复制给对方,消息很大时 Rust 的共享缓冲区会更快。他自己的基准大多是单线程。
女:这个项目还有一个很特别的点,编译器几乎完全由 AI 生成。
男:对。作者几年前设计过 Goose 并开始实现,但经营游戏创业公司没时间完成。Claude Fable 出现后,他让 AI 克隆自己另一个编译器 Lobster 的风格和结构,逐 pass 写出新编译器。初始设计里很多没定下来的地方,是和 Fable 来回讨论时定的。整个编译器约三万行 C++,有规范、标准库、31 个示例程序。
女:然后社区对文档的批评就来了。有人说会扔掉全部文档重写,因为需要知道哪些设计是作者的、哪些是 Claude 的偶然,才能判断项目适不适合自己。
男:这个批评挺具体。spuz 说 AI 写的系统文档很难信任任何一句话,哪怕 100% 准确,你也会担心某个关键事实是错的。AI 能说出 what,往往说不出 why。还有人找到一个具体错误:教程说 C++ 的 vector<string> 每个字符串一次堆分配,但短字符串符合小字符串优化,主流 STL 实现都有,不会逐串分配。
女:为作者说话的人也不少。有人说文档完全可读,问“如果一个功能是 Claude 实现的还是人实现的,你会采取什么不同行动”,作者不欠你重写文档。
男:作者自己的回应是,他已经编辑过不少,但更希望人们先去玩一玩,而不是纠结 Claude 腔。还有一位叫 jeff_ciesielski 的人从自己的商业 Rust 代码库移植了几个算法到 Goose,明显更快。但他认为更大的收获是 Goose 引导 LLM 用了更高效的数据结构,移植回 Rust 也保留了大部分收益。
女:这倒是个新角度,语言设计反过来影响模型生成的代码结构。
男:名字没有特殊含义,作者的编程语言历来用动物命名,之前有 Lobster。HN 上不少人认出他是 Amiga E、Cube 2 和 Treesheets 的作者。
女:从一门语言聊到用它的人,接下来这个话题正好是关于人的。美国创意产业过去四年丢了超过 20 万个工作岗位,仅过去一年就减少约 5 万。
男:这是现代美国媒体就业史上最糟糕的时期之一,就业损失的强度和持续时间只有 2001 年和 2008 年两次大衰退可以相比。不同之处在于,今天并没有全面衰退。
女:这就把怀疑指向 AI 了。
男:最清晰的证据也许是,数字艺术行业所有子部门都在丢工作,而线下娱乐仍在健康增长。电影与录音行业受创最重,好莱坞四年丢了超过 10 万个岗位,接近该行业总就业的三分之一。今年夏天触底时,总就业接近 30 年最低。
女:流媒体转型本来就难,传统影视的观看时间流向了用户生成内容,还有越来越多 AI 辅助或生成的内容。
男:文章拿互联网崛起做了对比。Napster 时代 Metallica 起诉侵权,RIAA 也加入,他们赢了官司,但站在了技术的错误一边。音乐产业再也没回到 CD 鼎盛时期的高薪时代,流媒体收入远不及 90 年代实体销售。
女:音乐人有现场演唱会可以依靠,音乐本身越来越像巡演和周边的亏本广告。视频没有这种止痛药。
男:去年电影票房比 2019 年峰值低 25%,有线收入比峰值低 18%,流媒体收入补不上缺口。报纸曾经在美国雇用约 50 万人,比整个石油业还多,现在工资单下降近 85%,还在跌。杂志自 90 年代以来裁掉 66% 的员工,图书出版丢了 40%。
女:但图书销售过去六年激增了 70%,这个反转挺意外。
男:拯救印刷文字的可能是 TikTok。读书的人确实比以前少,但对越来越少但忠诚的重读读者,BookTok 成了获取评论、分析和社区的新方式。AI 工具可能对其他艺术形式产生同样完全不可预测的溢出效应。
女:HN 上有个评论我印象挺深,说娱乐业把工作移出洛杉矶“省钱”,会有长期连锁反应。依赖电影业的本地企业关门,专业人才减少,人才变贵,洛杉矶拍摄变得太贵,其余工作也走了。效率为谁?
男:另一个评论补了地理逻辑。好莱坞鼎盛时,演员、经纪人、制片人、摄影机、布景、剪辑、VFX、编剧都在开车距离内,随时能组织新项目。现在青少年用手机摄像头和零花钱就能做出吸引注意力的故事,地理位置邻近的价值大幅下降。
女:AI 没造棺材,但一直在钉钉子。
男:也有人质疑文章。timr 说印刷和音视频自 90 年代以来明显下滑,归因于印刷、CD 和有线电视的死亡。AI 可能是部分原因,但只是斜率微小变化。最该看到清晰影响的编程行业基本持平。
女:聊到 AI 对行业的冲击,就绕不开算力。Cerebras 那篇文章挺硬核,一台 WSE-3T 晶圆有 44 GB 片上内存,而万亿参数模型的权重单独就要 TB 级。
男:他们拆解了怎么把这种模型摊到多个晶圆上,例子是 Kimi K3,3 万亿参数,69 个线性注意力层加 24 个稠密层,共 93 层。按 4-bit 量化存储,原始载荷 1.5 TB,除以 93 层,每层约 16 GB。
女:44 GB 的晶圆放 16 GB 的层,不是能放两层吗?
男:稠密层不行。full attention 要为每个活跃请求的每个 token 存 key 和 value,一个晶圆只放一层,剩下 28 GB 留给 KV cache。线性注意力层不为每个 token 存 key/value,每个请求只维护固定大小状态,与上下文长度无关,所以一个晶圆放两层。
女:69 个线性层需要 35 个晶圆,24 个稠密层需要 24 个,总共 59 个。晶圆之间怎么连?
男:RDMA over Ethernet 连成流水线,每次跳转约 2 微秒。每层 16 GB 小于 44 GB,整层直接放在芯片上,权重不用移动,层也不用跨晶圆切分,晶圆之间只传激活值。单个请求像流水线一样从 1 号晶圆走到最后一个,产出下一个 token。
女:多请求时整个流水线装满不同请求,每个阶段同时处理不同请求的 token。并发上限由 KV cache 决定。
男:对。文章说评估推理系统吞吐量更有意义的指标是每单位功率的 token 吞吐,tokens/s/MW,前提是在相同输出生成速度下比较。有人按每个晶圆平均 20 kW 算,59 个晶圆约 1.18 MW,假设每请求 1500 tokens/s、190 个并发请求,约 4.1 J/token。
女:评论区有人惊讶晶圆这么大只有 44 GB 内存。
男:那是 SRAM,相当于 44 GB 的 CPU 缓存,正是速度的来源,也是昂贵的原因。传统 SRAM 每位 6 个晶体管,密集 SRAM 可以做到 2 个。有人估每晶圆 1 TB SRAM 会是几年后的上限。
女:还有故障域的问题。GPU 部署掉一个节点可以降级,这里模型就是机架,一个坏晶圆拖垮整条流水线,端到端在线的流水线也没法滚动升级。
男:对,怎么 drain 一个晶圆没有好答案。另外实际可用模型也是评论区反复出现的抱怨。有人说 Cerebras 上能用的只有 GPT OSS 120b 和 Qwen 3.8 27B,“飞得快但基本是错的”。
女:订阅过他们 coding plan 的人说,1000 TPS 当时独一无二,现在 Qwen 3.8 被 Mercury 3 在成本和性能上全面超过,“除非是企业定制合同,没什么理由用”。
男:还有人指出 Qwen3.8 27B 是稠密模型,KV cache 贵,适合 32 到 48 GB 显存本地跑一两个 agent 会话,做多用户批量推理很贵。DeepSeek V4 Flash 是 MoE,KV cache 占用小,规模上成本不到十分之一。有人一句话总结:“Cerebras 是 AI 浪潮的 Transmeta。”
女:从大算力回到小工具。SpeedCrunch 1.1 发布了,免费开源的高精度科学计算器,最高 50 位精度,支持复数,内置 140 多个函数。
男:这个版本最值得说的是一个拖了很久的运算顺序修复。输入 1/2(-9.8),以前会得到 -0.05102040816326530612,现在得到 -4.9。
女:表达式还会渲染成 1 / 2 × (−9.8),把隐含的乘法标出来。有人觉得这种写法应该直接报错,而不是靠补一个乘号来消歧。
男:长期用户说这是最实用的计算器,位运算和进制转换都顺手。有人在 Windows 2000 计算器消失后找了很久。还有人几乎每天用它直观地看二进制位和移位操作。
女:有个细节挺有意思,一位用户提了一个关于界面显示偏暗的 issue,一小时内收到回复,内容看起来是 AI 写的,非常正式、篇幅较长,但并不敷衍。他跟进之后请求被接受了。他说不介意 AI 参与,只是第一次在这个项目里见到这种流程。
男:也有人转向 Numbat,一个支持单位计算的命令行计算器。还有人说科学计算器做对并不容易,这次修的就是计算错误。有人让 Claude 先列出科学计算器该有的函数,自己加上复数支持,再让 Claude 写实现,一次就得到了看起来完美的结果。
女:然后有人回,想看看那个计算器的准确度,也好奇有没有底层库可以直接复用,让正确性不再成为难点。
男:小工具的魅力,和写小代码有点像。ratfactor 写了《Implementing a Forth》,收到不少反馈,尤其是关于微型 Forth 实现的。他由此想到一个问题:小东西为什么这么吸引人?
女:200 行代码比 2000 行更容易读。如果 20 行代码做了他预期 2000 行才能做的事,他很想读那 20 行。
男:有人在 Forth 文章下回复了一个 46 字节的“Forth”,小到可以直接贴 hexdump。很少有人会主动读裸机器码,但 46 字节不让人觉得可怕,只要肯花时间,总能弄明白。
女:还有更夸张的。Arthur Whitney 用一个下午在一页纸上写出了数组语言解释器,122 行晦涩的 C。有人花了一周研究它的组织和风格。
男:kOS 操作系统把 Whitney 的 k 数组语言、kdb 数据库、GUI 和窗口管理器全部塞进 90KB 可启动镜像。GUI 和窗口管理器 60 行 C,kdb 据说是 100 行 C。
女:Kolmogorov 复杂度衡量输出一个对象的最短程序长度。代码高尔夫玩家为全人类生产了代表程序最小复杂度的版本。Justine Tunney 的带垃圾回收 Lisp 可以小到 436 字节。
男:HN 上有人用 uxn 写了一批有用的小程序:十六进制解码器 39 字节,JSON 转 NDJSON 125 字节,DER 转 TER 子集 220 字节,BLAKE2s 1024 字节,一个带图形、音效、字体和计分的卡牌游戏 1853 字节。他提到这些程序不总是检查错误,这是它们短的原因之一。
女:还有 Binary Lambda Calculus 的自解释器只要 168 位,21 字节。它处理比特流,所以必须包含解析器。
男:小语言同样有吸引力。Forth、Lisp、Tcl 是语法极小的三个典型。Forth 唯一的语法结构是空格,灵活和强大得让人不安。Lisp 核心语言小,语法简单,表达力和灵活性巨大。Tcl 的一切都是字符串。这三个语言只需要理解几个核心概念,就能获得无限力量,语法核心能写在一张索引卡上。
女:Lua 兼顾小和简单,不需要流血牺牲。印刷版 Lua 5.1 手册,语言部分只有 27 页。
男:David Ungar 在反思 Self 多继承的错误时说过一句话:“让系统稍微简单一点,让人多写一些东西,哪怕写两遍并注释‘看这里’,也比系统行为古怪、没人能理解要好。简洁胜过表达力。”
女:文章还谈到微型模型和透视画。把实物缩小会产生影响:物体变得可爱、更易接近、更精致,也更无助,因此更可控。小巧的尺寸带来安慰感,完全不具威胁。
男:Simon Garfield 在《In Miniature》里说,答案在于我们对掌控和启明的渴望:把缩小的秩序和光亮带进一个原本混乱的世界。微型事物用更少的东西让我们看见、学习、欣赏更多。
女:HN 上有人正在做自己的简单编译型脚本语言。他不理解为什么大多数脚本语言先编译成字节码再解释,那需要设计字节码、写编译器、写解释器三步。直接用机器码当字节码可以省掉第一步和第三步,程序还跑得更快。
男:他的 mortar 项目目前能让 Fibonacci 生成器跑起来,比几乎相同的 Python 程序快 380 倍。有人回复说字节码可移植,机器码不可移植,生成字节码也比生成 x86_64 机器码容易。
女:他反驳说,现在可移植性没那么真了,桌面和服务器 CPU 都支持 8、16、32、64 位整数,至少有 10 个通用寄存器,同一套代码生成器能覆盖它们。x86_64 有反汇编器可以验证输出,自己发明的字节码没有,而且还能直接问 AI 怎么生成索引加载。
男:有人引用 Greenspun 定律:“任何足够复杂的 C 或 Fortran 程序都包含一个临时、非正式指定、满是 bug、缓慢的 Common Lisp 一半实现。”他说如果自己的语言最后变得像 Lisp,他会不高兴。
女:从代码里的小东西,到食物里的小东西。日本柴鱼被称为世界上最硬的食物。一家 1882 年创立的作坊,第五代匠人还在用有 200 年历史的手火山法手工烟熏干燥。
男:流程挺长。新鲜鲣鱼切片,煮 90 分钟,在手工照看的柴火上方烟熏干燥 10 多次,用鲣鱼膏修补鱼身,再用曲霉发酵,日晒数月。前后超过半年,鱼变得像木头一样硬,表面像宝石一样发亮。
女:手火山法要在约 2 米深的竖坑底部烧木柴,伊豆本地的橡木、麻栎、樱木,用明火高温直接烟熏。作坊网站上说,这是现存最古老的烟熏法,历史可追溯到约 300 年前的江户时代。
男:社区里的回忆比视频还具体。有人描述旧筑地市场:木箱里盛着柴鱼片,在风中轻轻飘动;人们用绿色搪瓷电动台式刨床刨片,燃气市场推车装着冷冻金枪鱼块和鲍鱼箱穿梭,圆形控制面板像鼓。他说那种电动推车别处没见过。
女:他还说,柴鱼片让他想到木工车床周围的碎屑,在那里是废料,在这里却是全部目的。柴鱼片撒在关东煮上会“跳舞”。
男:有人在东京一家鱼汤拉面店见过一块柴鱼和手摇刨片机,样子像巨型卷笔刀。柴鱼片装在小网兜里端上来,店员建议泡 10 秒,但不超过 30 秒,否则味道太浓。
女:过敏的讨论挺有意思。有人对鱼过敏,不能吃金枪鱼和三文鱼,但几乎任何柴鱼汤底做的菜都没问题,锅物、肉土豆、青森风格的粗煮干拉面汤底。
男:有人解释,这听起来像蛋白质过敏,对某一种或一组特定蛋白质过敏,蛋白质变性后就不再有反应。高温、低 pH 或氧化都可以让蛋白质变性。
女:也有人纠正“过敏都是蛋白质”的误解。蛋白质是一大类由氨基酸组成的分子,抗体不一定只结合蛋白质,脂质、碳水化合物,任何足够大的分子都可能引发过敏。
男:评论还对“江户时代做法”的说法提出质疑。江户时代 1868 年就结束了,1882 年创立的店和 2017 年创立的店,在“像江户时代那样做”这件事上没有区别。
女:有人回应,这家店做同一产品 144 年,保留了仅 14 年前的技艺,这本身就是成就。2017 年开张的店也可以按江户时代的方法做。
男:至于这套方法怎么来的,有人推测是渐进的:先是为了其他用途烹饪或熏制金枪鱼,再通过发酵或日晒延长保质期,发现用膏抹平表面有助于保存,最后面对干燥后过硬的问题,想出切薄片的办法。不是先设定“我们需要很薄的干金枪鱼片做汤底”,再发明整套流程。
女:从吃聊到家里那块屏幕。一个安全研究者拆了 2025 年的三星电视,拿到 root shell,发现常开热麦克风、自动内容识别、地理位置定位、网络测绘、定向广告服务、4 种 DRM、用户画像构建,以及大量遥测数据。他写道:“你、上帝、一台 3000 美元的电视,再加上三星和它的 400 个合作伙伴。”
男:固件被 AES 加密,不拆机、不用 UART/JTAG 就拿不到密钥。他走零日漏洞这条路,拿到了 root shell。三星用 Knox 做安全框架,但没有 EL2 hypervisor,所以 root 比预想容易。
女:评论区有人补充,狗叫检测和婴儿哭声检测是三星 SmartThings 集成中公开宣传的功能,本地芯片只识别特定声音模式,不等于把录音传回服务器。
男:还有人引用了对主流电视品牌的对比测试:在用户拒绝隐私授权后,三星是唯一真正停止发送数据的品牌;LG 在德克萨斯州的诉讼和解后加入强制仲裁条款,数据收集反而更多。这并不能抹去三星电视里那些功能的存在,但“谁更糟”要看具体机型和设置。
女:讨论还延伸到 AI 和逆向工程的交叉。多条评论提到,这位研究者的 OpenAI 账号因“Cyber Abuse”被暂停,具体原因不明。几位开发者担心,如果连在自有设备上做安全分析都可能被封,大模型对这类工作的价值会明显下降。
男:也有人分享成功经验:明确说目标是验证自己设备的行为,申诉通常能通过,或者申请专门的网络安全访问计划。还有人用 crackme 做小基准测试,发现 DeepSeek Flash、GLM 5.3 Flash 等模型在逆向任务上表现便宜、快、够用。
女:最高赞的评论从英国木板谈起。1839 年的《大都会警察法》规定,除非在装卸车辆或进出建筑,否则不得在人行道上搬运木板。评论借此质问,木板有人管,大型科技公司采集数据却没人管。
男:回复指出这条法律属于更宽的“妨碍通行”条款,且仅适用于伦敦。英国本身有 UK GDPR,真正缺的是执行力度。社区里反复出现的判断是,罚款对巨头仍然太小,监管机构人手不足,广告收入的利益链让媒体曝光容易停于表面。
女:对普通用户,评论区给出的实际路线是:让电视完全断网,只用 HDMI 接 Apple TV 或开源播放器;买电视时找“商用显示器”或明确标注非智能的型号;不怕折腾的话,拆掉 Wi-Fi 模块或加金属屏蔽。
男:智能电视的广告和数据收入压低了整机价格,所以高画质、低价格和不被追踪往往只能选两样,用外接设备补齐另一块。
女:从客厅里的电视,到天空中的短波。11175 kHz 的上边带,一个声音在念字母,念完一遍说“I say again”,再念一遍。这是美国核力量的紧急行动信息。
男:导弹兵出身的 Daniel Frenkel 做了 missileer.watch。两台接收机,加州 Point Reyes 和冰岛,把抄到的 EAM 录下来,机器转写成字符,听错的地方由登录的听众修正。你也可以自己练,放一段真实录音,把听到的每个字符写下来,再和网站的版本对照。
女:EAM 的形状固定。先网络呼叫,六字符的前导念三遍,每遍前说 standby,然后“message follows”,接着整串字符;再说“I say again”,从头来一遍。可用的字符只有 32 个,A 到 Z 加 2 到 7,没有 0、1、8、9。
男:1985 年 Ashton Carter 在《科学美国人》上把它叫作“短的、预先排好格式的加密信息”。预先排好格式,正是你能听到的那部分。外面的人解不开,能做的只有听。
女:选短波是因为 HF 靠电离层反射,一个发射台能覆盖几千英里。弱点也在同一片天空:核爆把电子灌进电离层,HF 会被吸收而不是反射。所以高频全球通信系统只是若干条路径之一,而它是你能听到的那条。
男:11175 上不全是 EAM。有电台报数上下的 radio check,有两个台交换字母组的 authentication,也有普通的通联。级别更高的是 Skyking,“Skyking, Skyking, do not answer”,比 EAM 还优先。网站说自 2026 年 9 月 21 日以来的 4948 次录音里一次也没碰上。
女:评论区补了段旧事:有段时间 Skyking 测试信息拿乐队名当内容,Iron Maiden、The Cure、Rush 都上过,于是核指挥频道里会出现“DISREGARD ‘THE CURE’ TRANSMITTED AT 19”这样的更正。
男:消息落到发射控制舱,地下 60 英尺,8 吨重的防爆门后,两名军官值 24 小时班,房间有一辆校车那么大。指挥官坐左,副手坐右,中间是控制台、打印机、电话和程序册。头顶的红色时钟走祖鲁时间,每天对着美国海军天文台的母钟校准到秒。
女:两名军官都确认信息真实,才轮到下一步。系统设计成没有一个人能单独发射:各持一把钥匙,冷战时期保留的 Delta-01 舱里,两个钥匙开关相距 12 英尺;也没有一个舱能单独发射,通常要第二个发射控制中心附和,导弹才会出去。
男:今天的力量是 400 枚民兵 III,分属怀俄明的 F.E. Warren、蒙大拿的 Malmstrom、北达科他的 Minot 三个联队。每个联队 150 个发射设施、15 个发射控制中心。一个中队五个舱,每舱主控 10 枚,也都能指挥和监视全中队的 50 枚。
女:Frenkel 2012 到 2016 年在 F.E. Warren 第 321 导弹中队当作战值班员。他说自己讨厌这份工作,但也为它骄傲:常年累、闷、紧张,三者通常占两样;训练多年就为了什么都不做,穿着运动裤坐在舱里等。
男:他退役后才知道同样的通联在短波上公开播发,四年舱内值班没听过一次 EAM 被读出来,直到成了平民,用浏览器打开一台 Kiwi 接收机。
女:评论区相当一部分在聊另一件事:这网站的文案太像 AI 写的。有人抓出“Mostly static. The net is quiet until it isn’t.”,说自己一两句话就能认出“Claudenglish”。
男:也有人提醒,能认出来的只是模型未经调校的默认风格,给几个样本做微调,模仿特定的人并不难;反过来,没被认出来的那些,你也不知道是不是人写的。
女:至于消息变多意味着什么,有评论把话说死:什么也不意味,刚结束一场大演习,流量涨落很正常。评论区还提到 13 分钟这个数:潜射导弹从发射到命中目标大约要这么久,陆基大约翻倍,从 1960 年代起世界就一直处在这个时间尺度上。
男:最后一件事,从天空回到地面之下。剑桥大学出版社《Antiquity》发表了一项开放获取研究,用牙釉质中的铅浓度重建了英格兰德比郡峰区公元 600 到 1500 年的铅生产史。
女:峰区位于英格兰中部、奔宁山脉最南端,是中世纪欧洲最大的产铅区之一,但早期生产的时间线一直不清楚。
男:诺丁汉大学的 Christopher Loveluck 等人分析了 17 个个体的牙釉质。两名铁器时代个体来自 Eldon Hole,用作大规模采矿前的对照;五名来自七世纪的 Wigber Low 墓葬;五名来自 Castleton 的 Joule Yard 墓地,7 到 11 世纪;五名来自同地 Spital Field 墓地,12 到 15 世纪,与一所中世纪医院相关。
女:牙釉质形成后不再重塑,所以保存的是大约 4 到 12 岁童年的铅暴露记录。研究用英国地质调查局的电感耦合等离子体质谱测定浓度,并配合锶、氧、铅同位素分析判断个体童年是否生活在本地。
男:结果显示,后罗马时代的铅冶炼在七世纪中叶已经建立,到八世纪中叶,Castleton 等矿冶中心周边出现大规模生产和环境污染。这为峰区提供了第一批绝对年代。
女:浓度有多高?
男:按现有标准,牙釉质铅浓度高于 0.6 到 0.7 ppm 指示人为活动,低于 0.5 ppm 属于自然背景。中世纪样本中除一人外全部超过 10 ppm,四人,也就是 27%,超过 40 ppm,十人,66%,在 15 到 40 ppm 之间。
女:Wigber Low 的样本呈现出与社会身份和性别相关的分化。
男:两名随葬武器的本地男性浓度最低,10.9 ppm 和 2 ppm,后者随葬一把剑,可能不直接参与生产,而是受益于对生产的控制;无随葬品的男性 29.5 ppm,可能来自地位较低的家庭或从外地迁入;两名女性偏高,69.1 ppm 和 13.2 ppm,她们分别死于 17 岁和 17 到 25 岁,且都葬在幼童附近。
女:怀孕会把沉积在骨骼中的铅重新动员到血液,母亲和胎儿因此更易受害。
男:作者只把这种早逝称为“关联方向”,并非直接因果。稍晚的 Joule Yard 样本全部超过 25 ppm,其中三人为 30 到 54 ppm,年代多集中在 680 到 880 年,指向一个以采矿冶炼为业的专业化社区。到八世纪中叶,Castleton 的居住环境已被高度污染。
女:Spital Field 的五人浓度在 25 到 68 ppm 之间,其中最高的两人年代为 1175 到 1270 年,恰好对应《Pipe Rolls》记录中 1180 到 1215 年的中世纪产量顶峰,也与瑞士阿尔卑斯 Colle Gnifetti 冰芯和瑞典纹层湖底沉积记录的欧洲铅污染高峰一致。
男:十一世纪的《末日审判书》提到 Matlock、Wirksworth、Bakewell 和 Ashford 的铅矿,1086 年还有五个庄园以“纯银”缴纳 40 磅税额,这是全书唯一使用该说法的地方。
女:锶和氧同位素显示,峰区中世纪人口的迁入很少,铅生产更像一项本地世代相传的传统。研究还修正了锶比值 0.714 以上即代表外来人口的旧假设。
男:对当地土壤的分析表明,这一数值在峰区生物圈内并不罕见。作为对照,特伦特河谷 Repton 的维京营地相关人群铅暴露较低;16 世纪瑞典 Sala 银矿墓地中一部分人的牙釉质铅浓度也明显低于峰区,因为那里的矿工包含大量童年在外地度过的强制劳工。作者认为,峰区人群的铅水平可以作为识别其他地区和时代银铅产区的参照基准。
女:今天就聊到这儿。从一门语言、一群人、一堆晶圆,到一块柴鱼、一台电视、一段短波,还有一颗牙。跨度是挺大,但串起来看,都是人在用自己的方式理解手里的东西。
男:嗯,下次见。
女:下次见。喜欢这期节目的话,记得用泛用型播客客户端订阅 Agili 的 Hacker Podcast,我们下期再见。
