Jane Street 技术博客

RSS: https://blog.janestreet.com/feed.xml
Jane Street 技术博客,关于 OCaml 与系统编程的深度技术分享。

你能设计一块芯片吗?协议模拟器 ASIC 竞赛正式启动

Jane Street 继上月“逆向工程芯片”挑战后推出新竞赛:设计一款开源的通用协议模拟器 ASIC。目标不是简单集成 UART、SPI、I2C 模块,而是打造一颗带专用指令集的小 CPU,通过精确控制引脚读写和时序,让芯片流片后仍能以固件方式支持新协议, 可用于硬件调试与逆向工程,灵感可参考 RP2040 的 PIO 和 TI Sitara 的 PRU。 基础目标是 UART、SPI、I2C,进阶目标包括低速 USB 和 10Mbit 以太网,也可考虑 JTAG、SWD、PS/2、CAN 等。 工艺采用 IHP 的 130nm CMOS5L,经 Tiny Tapeout 流片,从 CMOS5L Verilog 模板起步,面积上限为 8×4 共 32 个 tile,约 1 mm²、每 tile 约 1K 逻辑单元,指令存储建议用 SRAM 而非触发器,并提醒尽早综合、检查布局布线和时序。 作品须开源,建议组队,截止 2027 年 1 月 18 日,最具新意的设计将由 Jane Street 出资在 2027 年 3 月的 CMOS5L shuttle 上流片,获奖者可拿到芯片和开发板实测。 官方还鼓励展示设计语言与验证方法,包括形式化方法、约束随机测试和 AI 辅助验证,并认为随着 AI 辅助设计普及,验证将愈发关键。
评论点赞收藏20 天前

A study of sequence weighting at scale

TL;DR: We study the scaling laws of data weighting across in-house and open-weight LMs, finding non-monotonic behavior across scales. We vary the weight assigned to sequences during training and measu...
评论点赞收藏51 天前

你能逆向工程一款 ASIC 芯片吗?

Jane Street 发布了一道 ASIC 逆向工程谜题,给出芯片 GDS 布局文件,要求从物理布局恢复网表、推断电路功能,最终找到隐藏字符串。 提供二进制加法器作为入门示例,使用 KLayout 或 Magic VLSI 等开源工具即可上手。今年晚些时候还将举办芯片设计竞赛,优秀作品将实际流片。
评论点赞收藏54 天前

关于命名的笔记

Jane Street 工程师总结命名系统的实用原则:优先复用现有名称以降低认知负荷,常用系统可用简短记忆名,罕见系统需具描述性。强调命名即沟通,应避免随意更改已嵌入生态的名称。
评论点赞收藏73 天前

使用 OxCaml 实现 OCaml 与 Python 间的类型安全引用计数

Jane Street 博客介绍其开发的 OxCaml 库如何解决 OCaml 与 Python 之间的类型安全引用计数问题。文章探讨了在多语言基础设施中,如何平衡 OCaml 的性能与 Python 在数据分析和机器学习领域的优势,通过具体的工程实现细节展示了跨语言内存管理的最佳实践。
评论点赞收藏107 天前

形式化方法与编程的未来

Jane Street 宣布成立专门团队研究形式化方法。作者 Yaron Minsky 指出,尽管过去因成本过高而排斥形式化验证,但 Agentic Coding 带来的代码质量验证瓶颈及反馈需求,使得形式化方法的投入产出比发生逆转。 文章分析了利用自有语言控制权建立证明友好型生态的优势,并招募相关人员。
评论点赞收藏107 天前

Strace-ui, Bonsai_term, and the TUI renaissance

strace-ui 把 strace 变成了可交互的终端界面——按 h 隐藏无关系统调用、按 m 打开 man page、自动将 IP 解析为主机名。背后驱动是 Jane Street 的 OCaml 框架 Bonsai_term,而文章的核心论点是:AI 编程代理(Claude Code)正在推动 2025-2026 年的终端 UI 复兴。 作者分享了一手工程经验:开发者等了 8 年才用 Bonsai_term 在 10 分钟内做出 strace-ui 原型;截图式 expect 测试让 AI 也能直观验证 UI 正确性;团队内部每天涌现大量新 TUI 工具(调试器、CI 监控、部署管理、日志浏览)。 也有坦诚的技术局限讨论(FD 追踪、js_of_ocaml 库兼容问题)。有具体代码、使用案例和真实工程判断,不是空洞趋势文。
评论点赞收藏120 天前

strace-ui、Bonsai_term 与终端 UI 的复兴

<p>我们一直觉得 strace 很有用,但操作起来有些困难。它的输出往往<br>晦涩难懂,难以追踪子进程或线程,而且如果你想过滤系统调用,就必须为每一个调用重新运行跟踪。在调试时,你想要的是一种能够进行探索、优化等操作的工具,但 strace 却让这些工作变得十分棘手。</p>
评论点赞收藏120 天前

Jane Street 的开发者教育体系

Jane Street 详细披露了内部开发者教育体系,包含 OCaml Bootcamp 和 Dev Teach-ins 两大板块。Bootcamp 侧重语言基础与内部工具链上手;Teach-ins 则覆盖测试策略(expect tests、Quickcheck、Datafetcher)、行情数据系统、高级函数式编程(GADT、finger tree、自动微分)、OCaml 性能分析(magic-trace、memtrace)、自研前端框架 Bonsai 开发实践、以及系统级调试(strace、gdb、内核调试)等六个深度课程。 每个课程均为2-3天全脱产小班授课,配有专门教室和讲师。文章还提到公司设有全职开发者教育岗位(前教授转行),强调将教学视为"重要工作本身"而非副业。 对于关注量化机构技术栈、函数式编程工程实践或企业内训体系的人,这是一手且具体的参考信息,非泛泛的品牌宣传。
评论点赞收藏151 天前

用群论探索注意力机制中的位置编码空间

简街博客从群论这一抽象代数工具切入,将Transformer中多种位置编码方案置于统一数学框架下进行分析,而非停留在经验调参。注意力机制让模型内部表示相互引用,位置编码则决定序列顺序信息如何注入——该文用群论系统化地刻画这一设计空间。 对于关注LLM底层原理、位置编码演进或数学与AI交叉的技术读者,是一个角度新颖、有启发性的高质量短篇。
评论点赞收藏161 天前

你能逆向工程我们的神经网络吗?

Jane Street 发布了一个与众不同的 ML 谜题:不是常见的黑盒逆向,而是公开神经网络完整规格和权重,要求参与者用机械可解释性(mechanistic interpretability)工具来逆向分析网络结构。 这个思路源于他们在研究复杂模型特征时的真实需求——需要理解模型的内部运作机制。如果你对神经网络逆向、可解释性或 CTF 式挑战感兴趣,这是一个有趣的上手练习。
评论点赞收藏218 天前

FPGA Advent of Code 挑战赛结果公布

Jane Street 在去年底首次举办了与 Advent of Code 并行的 FPGA 硬件设计挑战赛,社区反响远超预期,收到了大量极具创意的参赛作品。 不过本文仅简要宣布了活动结果已出炉,并未列出具体获奖名单、作品亮点或技术细节,更像是一篇结果上线的通知,缺乏可消费的实质性内容。
评论点赞收藏231 天前

如果写测试本身就是一种享受?

一位 Jane Street 工程师用亲身经历告诉你:写测试可以像 REPL 或 Jupyter 一样愉悦。核心是"期望测试"(expect test / snapshot testing)——你不需要手写断言值,只需放一个空白的期望块,编译器自动算出正确结果并帮你填入。 作者对比了传统 RSpec 式测试的繁琐(手动算 Fibonacci、手写每个属性断言),展示 expect test 如何让测试变成"摆弄代码、观察 diff、再调整"的探索式体验。 文中给出多个真实案例:Bonsai 网页 UI 测试(DOM 自动渲染对比)、magic-trace 底层符号测试、订单簿状态机测试、Hardcaml FPGA 波形测试。 作者坦诚讨论了反对意见(懒测试、不明确),但指出 expect test 同样可以做精确断言,只是把"必须手动写"变成了"可选"。Jane Street 内部采用后迅速普及,成为测试主力。 文章有强烈个人立场、一手实操经验、完整代码示例,不是公司软文,而是一个有经验的工程师真诚分享一个改变工作流的实践。
评论点赞收藏236 天前

我现在用 Claude 做设计比 Figma 还多

<p>很长一段时间里,我对大语言模型持怀疑态度——每当我尝试使用它们时,都会对结果感到失望。去年,我试用了Copilot和Cursor来优化自己开发的一款游戏,但两者都未能生成有效的修改内容。<br><br>在之前的工作中,我曾尝试用Gemini来撰写产品简报并生成线框图,却最终把所有成果都扔掉了。每次我尝试使用大语言模型,都是为了完成自己已经擅长的任务,而它们的表现甚至比我自己预期的还要差。</p>
评论点赞收藏237 天前

代数效应实战:从玩具示例到Hardcaml仿真

核心看点:Jane Street工程师分享了将Hardcaml仿真库从monad迁移到OCaml 5代数效应(algebraic effects)的真实经验,并提出一个鲜明观点——代数效应能以更优雅的方式实现绝大多数monad能做的事。 文章从零开始讲解代数效应的基础概念,通过逐步深入的例子展示其与monad的对比,最后落实到Hardcaml_step_testbench库的实际迁移案例。 作者提供了具体代码示例和使用Handled_effect库的操作指南,是一篇有实战经验、有明确立场、有可复用知识的硬核技术分享。
评论点赞收藏267 天前

从通过测试到经得起实战考验

Jane Street 分享如何将软件测试从"能跑通"提升到"经得起实战冲击"的工程经验。文章指出测试不仅是验证正确性的手段,更是文档、是历史错误的备忘录、也是重构时的安全网。 团队投入大量精力改进测试工具与写法,让测试更清晰、更有效、写起来也更愉快。核心看点在于工程团队对"battle-tested"这一标准的理解——不仅是覆盖率数字好看,而是测试能否真正在复杂生产环境中撑住压力、暴露边界问题。 适合对高质量工程实践感兴趣的开发者阅读。
评论点赞收藏301 天前

FPGA 降临历——Jane Street 挑战赛

Jane Street 更新了 FPGA 挑战赛进展:已收到超过200份横跨多种 HDL 语言和硬件平台的提交,并发布了结果博客精选优秀作品。这是一个面向硬件工程师和 FPGA 爱好者的编程挑战活动公告,信息简洁但指向明确,对关注该领域的人群有信息价值。
评论点赞收藏310 天前

实习生成果展,2025 年版

这是一篇近乎空白的季末预告,仅表示"实习季结束,该总结实习生的工作了",没有任何具体项目介绍、数据或个人观察。典型的机构号任务式发文,缺乏实质内容、观点或讨论入口,信息价值极低。
评论点赞收藏399 天前

63 位整数带来了什么,又牺牲了什么?

OCaml 用 63 位整数表示(最低位作为类型标记位)来避免装箱,但代价是算术运算需要额外修正位操作。文章深入拆解了内存布局(未装箱 vs 装箱)、位运算翻译成 CPU 指令的具体开销(如加法变 x+y-1,乘法变 (x>>1)*(y-1)+1),并给出 Sandy Bridge 上的基准测试数据——独立加法慢 2.7 倍、依赖乘法慢 3.3 倍、依赖移位慢 4.3 倍。 还指出 Intel LEA 指令在近几代 CPU 上变慢,进一步拉大差距。最终抛出一个开放问题:能否既保持 int 未装箱,又实现快速算术?适合对编译器实现、语言设计和底层性能优化感兴趣的读者。
评论点赞收藏409 天前

Linux 内核中的「希格斯幽灵」Bug 追猎记

一家量化交易公司的核心交易数据分发系统 Gord 中出现了一个难以复现的诡异内核 Bug。作者以第一视角详细记录了从现象观察到逐步排查的调试全过程,并邀请读者一同猜测根源。 这是一篇有真实现场感、有技术细节、有叙事悬念的一手调试经验,适合对 Linux 内核和系统编程感兴趣的读者。没有营销味,没有小编体,只有工程师面对真实难题时的思考与记录。
评论点赞收藏455 天前

如何打乱大规模数据集

大型数据集洗牌是机器学习训练中关键但少有人深入讨论的工程难题。Jane Street 工程师以亲身实践分享处理十亿级样本的方案:两遍洗牌算法——先随机将数据分散到 M 个堆文件(第一遍),再对每个小堆在内存内完成 Fisher-Yates 洗牌(第二遍)。 文章不仅给出算法正确性证明(等价于排序随机数法),还深入处理了堆溢出概率控制、并行化、将第一遍融入预处理实现近乎零额外开销、延迟洗牌(训练时才加载并洗牌每个堆)、以及用循环缓冲区增量维护滑动窗口数据等生产环境技巧。 附录实测数据非常硬核:220M 样本、单条 9KB、压缩后 320GB 的数据集,随机访问需 2.75 年遍历一次,两遍洗牌仅约 1 天,加速比达 1000 倍。 全篇有真实问题、可复现方法、一手性能数据,适合数据工程与 ML 工程从业者深读。
评论点赞收藏470 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。