启用 JavaScript 和 Cookie 以继续。
启用 JavaScript 和 Cookie 以继续。
## PostgreSQL 事务ID环绕:生产事件总结 本文详细描述了PostgreSQL生产环境中由于事务ID(XID)环绕引起的严重且隐蔽的故障——当用于事务ID的有限计数器接近其上限时的情况。 与典型的宕机不同,这不是由负载或配置更改引起的,而是由于时间流逝,旧数据没有充分“冻结”造成的。 PostgreSQL使用MVCC,为每个写入事务分配XID。 为了安全地重用这些ID,必须冻结较旧的行版本,将其标记为永久可见。 如果autovacuum(负责冻结的进程)被禁用或无效,XID会累积,最终达到安全阈值(大约20亿)。 此时,PostgreSQL会停止所有写入操作以防止数据损坏,从而有效地使数据库变为只读。 该事件发生在稳定的系统上,负载适中(每秒10次写入),并且autovacuum在几年前被禁用作为临时性能修复,但从未重新启用。 恢复涉及手动强制冻结,但根本原因揭示了其他系统也存在类似风险。 关键要点是,XID环绕不是性能问题,而是基本的安全机制。 它可以根据写入速率和时间进行预测,并且很容易在测试中被忽略。 定期监控`relfrozenxid`并确保autovacuum已启用对于防止这种隐蔽的、潜在灾难性的故障至关重要。 与使用不同版本系统的SQL Server不同,PostgreSQL *需要*主动冻结才能维护数据完整性。
Top (现代 Common Lisp 与 FSet) 版本 1.0 (适用于 FSet v2.4.2) © 2026 Scott L. Burson。本文档以知识共享署名-非商业性使用-相同方式共享 4.0 许可协议发布。该许可协议允许使用者在任何媒介或格式中分发、混编、改编和在此材料基础上创作,但仅限于非商业用途,并且必须注明创作者。如果您混编、改编或在此材料基础上创作,您必须以相同的条款对修改后的材料进行许可。本文档不包含 LLM 生成的文本——零,没有,一点也没有。(是的,我使用 em 破折号和分号;是的,我亲手写了每一个。)对于发现的错误或其他建议,请在 Common-Lisp.Net 的 GitLab 实例或 GitHub 上提交问题。
## 集成光子学:迈向基于光明的未来 美国国家标准与技术研究院(NIST)的科学家在开发用于光的集成电路——“光子芯片”方面取得了重大进展,可能引发一场类似于电子芯片驱动的革命。这些芯片利用光来处理信息,由于光的速度以及在人工智能和量子计算等新兴技术中的重要作用,它们比电子设备具有优势。 这项突破在于一种新颖的“分层蛋糕”芯片设计,将锂铌酸盐和五氧化钽等材料结合在硅晶圆上。这使得对光的有效控制和操纵成为可能,甚至可以将光转换为不同的颜色——对于需要特定波长的应用(如当前受笨重昂贵激光器限制的量子时钟和计算机)来说,这是至关重要的能力。 新技术能够制造紧凑、高效的电路,产生宽光谱的光,大约可以在一个杯垫大小的晶圆上安装10,000个光子电路。这有望使量子技术更具便携性和可负担性,并可能提高人工智能和虚拟现实系统的性能。与初创公司Octave Photonics的合作旨在扩大这项技术的应用范围。
## 优化 Intercom 的 CI:Ruby 性能调整
加入 Intercom 后,一个关键项目是提高其大型 Ruby 单体应用的 CI 管道速度。作者发现,减少 worker 启动时间——获取代码、启动应用程序——对整体构建时间有不成比例的影响,尤其是在 1350 个并行 worker 的情况下。虽然优化单个测试很有价值,但即使减少一秒钟的启动时间也能节省大量的计算资源。
重点转向应用程序启动时间,从而深入研究 **Bootsnap**,一个用于缓存文件加载路径的 Ruby gem。Ruby 的默认文件加载效率低下,无法很好地扩展到大量 gem。Bootsnap 缓存文件位置以便快速查找,但 CI 系统上的缓存失效(由于 git checkout 不保留文件修改时间)仍然是一个挑战。
优化集中在 Bootsnap 的扫描过程上。一项关键改进是利用目录条目类型(在某些系统上可用)来避免代价高昂的文件系统调用。进一步的收益来自于优化 `File.join`,包括简化多字节编码处理以及反转尾随分隔符的搜索。这些看似微小的改变为 `File.join` 带来了 **7 倍的速度提升**,并改善了整体 CI 性能。
作者强调,找到一个优化往往会发现其他的优化,并继续将类似的改进应用于其他路径处理方法,从而证明了细致的性能分析的价值。
## PgQue:一种零膨胀的Postgres队列
PgQue是一个健壮、生产就绪的队列,直接构建在PostgreSQL内部,复兴了Skype最初使用的PgQ系统的架构。与许多数据库内队列不同,PgQue通过独特的基于快照的批量处理和表轮换系统,避免了因“死元组”累积而导致的性能下降和膨胀——这意味着无需频繁的vacuum或调优。
它专为高吞吐量事件流和扇出而设计,提供ACID事务和完整的Postgres持久性,*无需* C扩展、外部守护进程或特定于提供商的批准。安装很简单:一个SQL文件和一个调度器,如pg_cron。
PgQue在优先考虑负载下稳定性和语言无关的SQL API的场景中表现出色。虽然不适合超低延迟(亚毫秒级)分发,但它能提供典型的端到端延迟1-2秒。当事件驱动架构和无膨胀操作是关键时,它是一种强大的传统作业队列替代方案。
## 在 ARM MCU 上导航浮点 ABI(nRF52840 和 ESP32-S3) 这篇文章深入探讨了在 ARM 微控制器(特别是 nRF52840 和 ESP32-S3)上使用 PSA Crypto API 的复杂性,重点是浮点处理。一个常见的链接器错误源于混合了不同的浮点应用程序二进制接口 (ABI):`soft`、`softfp` 和 `hard`。 ARM 根据处理器是否具有浮点单元 (FPU) 以及参数如何传递给函数(通过整数寄存器或浮点寄存器)来定义这些 ABI。`hard` 利用 FPU 寄存器以提高速度,而 `soft` 和 `softfp` 依赖于软件模拟,通过整数寄存器传递参数。混合使用这些会导致链接器错误,因为 ABI 由对象文件中的属性决定。 nRF52840 具有 FPU,默认使用 `soft` ABI,除非在 Zephyr 中使用 `CONFIG_FPU=y` 明确配置,从而启用 `hard` 或 `softfp`。文章详细介绍了如何通过编译后的代码观察每个 ABI 的影响,演示参数传递和指令使用情况。 最后,它探讨了动态启用 FPU “即时” 作为始终启用它的替代方案,强调了潜在的权衡以及用于电源优化的用例,但警告不要轻易实现。
## 康奈尔大学教授使用打字机对抗人工智能在德语课上的应用
为了鼓励更深入的参与并减少对人工智能的依赖,康奈尔大学德语教师格里特·马蒂亚斯·菲尔普斯每学期都会在她的课程中引入手动打字机。菲尔普斯对学生使用人工智能翻译工具感到沮丧,从2023年开始实施这项“模拟”作业,旨在重现数字时代之前的写作体验。
许多学生不熟悉打字机的操作,他们完成写作作业——例如电影评论或诗歌——时,不能使用拼写检查、在线词典或删除键。这项练习迫使学生放慢速度,更周密地思考,并与同学合作寻求帮助。
像拉差蓬·勒特达蒙翁这样的学生发现缺乏数字工具出人意料地有益,他指出这促进了更多的课堂互动,并迫使他们独立解决问题。虽然具有挑战性——需要体力劳动并接受不完美——但学生们欣然接受了这种独特的体验,甚至有些人计划展示他们充满错误的草稿,以提醒自己这个过程。这种方法与全国范围内旨在防止在教育中滥用人工智能的“老式”测试方法相一致。
## Rail:一种自举的系统编程语言
Rail 是一种新颖的、自举的系统编程语言,专为速度和简洁性而设计。它不依赖 C 语言,并且占用的空间非常小——一个 729KB 的 ARM64 二进制文件可以编译自身,并达到字节级的固定点。核心运行时功能,包括垃圾回收,直接用 ARM64 汇编实现。
最近的进展(v3.0.0)引入了通过纯 Rail TLS 1.3 协议栈实现的本地 HTTPS 支持,消除了对 OpenSSL、curl 或类似库的依赖。这允许直接与 Anthropic 的 Claude 等 API 通信。
Rail 支持多种后端(macOS ARM64、Linux ARM64/x86_64、WASM),并具有独特的自我改进系统,编译器充当 AI 训练的适应度函数。它包括原生浮点数、效果处理程序以及带有模式匹配和 ADT 的函数式编程风格等特性。
Rail 不追求形式化验证或 ANSI 标准化,而是优先考虑性能、可靠性和狭窄、明确定义的表面积。它采用商业源代码许可证,可免费用于非生产用途。
## 微型浮点数的兴起 历史上,浮点数从32位发展到如今标准的64位精度。虽然程序员们欣赏更高的精度,但现代神经网络正在推动一个令人惊讶的趋势:对*更低*精度的需求。这些网络包含数十亿个参数,最小化它们的内存占用至关重要——通常将数量优先于单个精度。 这促使人们对诸如4位浮点数 (FP4) 之类的格式产生兴趣。虽然可以使用整数,但FP4提供了更宽的*动态范围*——能够表示非常小和非常大的数字。FP4格式因其在符号、指数和尾数之间分配4位的方式而异(例如,E3M0、E2M1)。E2M1格式很常见,并受到Nvidia硬件的支持。 FP4数字使用偏差来表示指数,即使在这种有限的格式中,也存在诸如+0和-0之类的概念。Python库Pychop有助于使用这些降低精度的格式。FP4并非孤例;许多4位格式正在涌现,例如NF4旨在更好地表示LLM权重。