#后端
43 篇

Bun 1.4.4 塞进一个格式化器:跑 Prettier 的仓库 59 毫秒,快 286 倍
bun fmt 直接兼容 Prettier 配置与插件,在 Prettier 自己的仓库上 59.7 毫秒对 17.1 秒,内存 48 MB 对 459 MB。真正值得看的是它怎么证明自己「输出一致」:逐字节比对加语义回归检查。

Deno 2.9.8 里最该看的一条:它开始不信任被攻破的 eMudhra 根证书
这个补丁版 13 条修复,一半是权限与沙箱边角,一半是 Node 兼容层的语义对齐。其中「不再信任被攻破的 eMudhra CA」这条,和同期 uv、CPython 的处理连成一条线。

Electron 45 上 Chromium 156、Node 24.22、V8 15.6:破坏性变更都在沙箱边界上
v45.0.0 的破坏性变更集中在三处:沙箱预加载脚本不再有 events/timers/url 与 Buffer 等全局、iframe 里创建的 Worker 不再自动拿到 Node、扩展页面不再无条件注入预加载脚本。

Home Assistant 2026.10.3 的补丁清单:集成修复占八成,剩下的在追基础设施
这个补丁版三十来条改动里,绝大多数是具体集成的 bug(Proxmox、UniFi Access、Sensibo、KNX、FRITZ!SmartHome…),其余是 Python 3.14.8、uv 一路升到 0.13.5、runner 换 Ubuntu 26.04 这类底座更新。

llama.cpp 的第 11899 号构建:给多模态客户端一个「问它支持什么」的接口
b11899 是每日构建,主要改动只有一条:mtmd 增加 get_capabilities,能报出音频流、参考音色、文本生成等能力,同时保留旧接口兼容。构建号本身说明这个项目的节奏。

Node 三条线同一天发安全版:11 个 CVE,5 个高危,两个在 tls、一个在 dns
10 月 21 日 Node 同时发 26.12.1、24.22.1、22.23.4,修 11 个 CVE。高危集中在 tls 与 dns 的输入解析,另有两条权限模型的边角修复,以及根证书换到 NSS 3.131.1。

Ollama 0.40.11 开始出声:macOS 本地语音生成,加一套只会回答「是/否/打分」的决策模型
这个版本两件事:ollama run 能在 macOS 上边生成边播放语音,并暴露 OpenAI 兼容的 /v1/audio/speech;另外引入 d3 决策模型族,专门做分类、判断与概率打分。

Redis 三线同日发安全版:集群总线传播超过 4GB 的消息会堆溢出
8.10.3、8.8.4、8.6.8 修同一个问题:cluster 模式下通过总线传播大于 4GB 的 PUBLISH/SPUBLISH 消息会堆溢出。影响面窄,但触发条件里有值得记住的东西。

Ruff 0.17.2:新增一条「正则不必重复编译」的预览规则,外加一批误报修复
这个补丁版主要修误报:星号约束的类型变量、pydocstyle 的反斜杠转义、pylint 对星号元素的判断;另外把删除注释的修复标记为不安全,并做了两处性能优化。

Traefik 3.7.16:ForwardAuth 终于支持 NTLM 与 Kerberos,同时修一个 CVE
这个补丁版两件事:修 GHSA-hrpp-p4fc-wwf8 对应的漏洞;让 ForwardAuth 与 ingress-nginx 的 auth-url 支持 NTLM/Kerberos。后者解决的是「企业内网 SSO 挂在网关后面就登不上」的老问题。

TypeScript 7.1 Beta:ambient 模块终于能声明 import attributes,还顺手把 target 推到 es2026
7.1 Beta 有六节内容:ambient 模块的 import attributes、source phase imports、--target es2026、新库方法、7.1 的 API(快照 / 文件系统 / content mappers)与若干行为变更。

uv 0.13.5:换掉被攻破的根证书,顺手把托管的 CPython 升到三个安全补丁版
0.13.4 从 uv 自己的证书库里删掉 eMudhra/emSign 根,0.13.5 把托管的 CPython 3.11+ 全部换到 python-build-standalone 20261021,含 3.15.1 / 3.14.9 / 3.13.17 与 pip 26.2.2。升级后要跑一次 uv python upgrade。

Python 3.15 落地:UTF-8 成了默认,frozendict 进内建,JIT 再快一档
Python 3.15.0 于 10 月 9 日发布,含 5643 个提交、1012 位贡献者。按「会改你代码行为」的顺序,讲清 UTF-8 默认、惰性导入、frozendict 与 JIT。

Zig 0.17:语法开始冻结,构建系统被拆成两半
Zig 0.17.0 于 10 月 2 日发布,5 个月、206 位贡献者、925 次提交。这篇挑出会打断编译的语法改动、标准库重命名与构建系统的结构性变化。

Node.js 24 进入 LTS:Krypton 管到 2028,升级前先看这几个变化
Node.js 24 在 2025 年 10 月 28 日转为 LTS,代号 Krypton,维护到 2028 年 4 月。V8 13.6、npm 11、权限模型稳定、require(esm) 默认开启,升级前有几个真实的坑要先知道。

PHP 两个 9.2 分 RCE:官方说的根因,和公开 PoC 演示的不是一条路
10 月 21 日 PHP 修掉 CVE-2026-109618 与 109619(CVSS 9.2),次日社区就放出了 PoC。这篇讲清 longjmp 与 stale global state 两条根因,附可复现的靶场与 PoC,以及这个 PoC 与官方描述对不上的地方。

PostgreSQL 18:异步 I/O 把读盘拉快三倍,uuidv7 终于进主线
PostgreSQL 18 在 2025 年 9 月发布,新的异步 I/O 子系统让部分读场景快了三倍,uuidv7() 与虚拟生成列进了主线,OAuth 2.0 认证也补上了。这篇说清哪些升级理由是真的。

PHP 今天 14:00 UTC 修两个 9.2 分漏洞:在那之前能做的三件事
PHP 官方在 10 月 20 日晚发预警,说 10 月 21 日 14:00 UTC 会发一个安全版本,修两个 CVSS v4.0 都是 9.2 的严重漏洞。细节要等发布,但排班和回滚预案现在就能定。

三天 12 条 PHP 相关 CVE,没有一条出在 PHP 本身
我在 NVD 里按 PHP 关键词拉了 10 月 19 到 21 日的通告,12 条全是插件、CMS 和库的问题。这比"PHP 又有漏洞了"更值得警惕,因为它说明你的风险清单根本不在语言上。
HTTP 终于有了带 body 的安全方法:QUERY
GET 不能带 body,POST 又不敢重试 —— 查询接口被这个两难卡了二十年。IETF 的 QUERY 草案给出了第三个选项:安全、幂等、且能带请求体。这篇讲它解决什么、代价是什么、现在能不能用。
后量子 TLS 已经进了你的握手,但它只解决了一半
浏览器与 CDN 现在默认协商 X25519MLKEM768 这类混合密钥交换,"先存后解"的威胁基本被堵上。没解决的是签名那一半——证书链正在变胖。
MCP 2026-07-28:把会话删掉,协议变回无状态
MCP 新规范删掉了 initialize 握手与 Mcp-Session-Id,把跨调用状态改成显式的服务端句柄。这篇梳理这次改动动了什么、为什么,以及对已经写了 MCP 服务端的人意味着什么。
Node.js 26 进入 LTS:升级这件事,别等平台替你决定
Node.js 26 在 10 月 6 日被确认为 LTS,10 月 7 日发布 26.11.0 与 26.11.1;与此同时,Node.js 20 正在被各大托管平台逐步移除。
Harness 收购 Augment Code:AI 编码工具开始收拢
Harness 拿下 Augment Code 的资产,包括协调多个 Agent 的 Cosmos 平台、Auggie CLI 与 Code Context Engine,把 AI 编码并进交付流水线。
PostgreSQL 19:REPACK、WAIT 和计划器终于可以被劝了
PostgreSQL 19 把 VACUUM FULL 与 CLUSTER 合并成 REPACK,加了等备库追平的 WAIT 命令,还给了两个能固定执行计划的扩展。这篇挑我真正关心的几条,顺带记下三个会咬人的不兼容改动。
SQLite 3.53:修掉一个 WAL 损坏 bug,顺手给 CLI 换了套表格
SQLite 3.53 修掉了一个 WAL 重置导致数据库损坏的 bug,新增结果格式化库 QRF,ALTER TABLE 可以增删约束,还多了一个 REINDEX EXPRESSIONS。最后这条是修复陈旧表达式索引的关键。
维基百科点名失控的 Agent:数百万次请求之后
维基媒体基金会公开指控未获授权的 OpenAI Agent 制造了数百万次请求、可疑编辑与工具篡改,并可能加剧一次罕见的服务中断。
压缩着还能改:一个动态压缩自索引的论文
大规模重复字符串(基因组、网页存档、版本库)能压得很小,但一改就得整体重建。RIKEN AIP 的一篇 ESA 2026 论文提出 dynamic RR-index,第一次在 δ-最优空间下同时做到压缩、检索与增删。
原子写文件:先写临时文件,再 rename
直接覆写会在断电、崩溃、并发读的那一刻留下半个文件。临时文件加 rename 借文件系统的原子性把「半个文件」变成不可能。
工期估算:为什么「大概三天」永远变成三周
估的是「写代码」的时间,交出去的是「写代码 + 联调 + 评审 + 改需求 + 等别人」的时间。把不确定的部分显式列出来,比把天数乘二更有效。
功能开关:它是负债,不是配置
每个开关都会让代码路径翻倍,而开关本身永远不会被删。给每个开关定一个移除日期,比设计一套精巧的开关系统重要得多。
优雅关闭:进程退出方式决定用户看到 502 还是正常响应
收到终止信号立刻 exit 会切断在途请求。正确顺序是停止接收新连接、等在途请求跑完、再释放资源、最后退出。
幂等键:让重试变得安全的那一次写入
网络超时不代表服务端没执行。幂等键把「同一个请求」标识出来,服务端据此返回首次结果而不是再执行一遍。
JSON 规范化:为什么同样的对象算出了两个哈希
键的顺序、数字写法、转义方式都会改变字节流。要让哈希稳定,必须在序列化这一层定死规则,而不是指望 JSON.stringify 每次都给你同一串。
死锁的四个条件:破坏其中任意一个就够了
互斥、持有并等待、不可抢占、循环等待——四个同时成立才会死锁。工程上最容易破坏的是循环等待:全局给锁定一个顺序。
N+1 查询:ORM 最典型的性能陷阱
取 100 条记录再逐条查关联,就是 101 次查询。修法只有三种:预加载、批量查、或者干脆用一次 JOIN。
限流:令牌桶与漏桶的实际差别
令牌桶允许突发,漏桶把流量削成恒定速率。选错的典型症状是正常用户被限、或者限流形同虚设,取决于你的下游能不能吃突发。
SQLite 索引:最左前缀不是限制,是排序的结果
复合索引 (a, b) 只有先按 a 排才能按 b 排,所以「跳过 a 只用 b」自然用不上。理解成排序而非规则,就不会再背前缀口诀。
时区与夏令时:存 UTC,存本地时间一定会出事
夏令时会让某一天有 23 或 25 小时,且切换时刻的本地时间可能不存在或出现两次。只存 UTC 时间戳,展示时再转,是唯一稳的模型。
Unicode 规范化:看起来一样的两个字符串为什么不相等
é 可以是一个码点,也可以是 e 加组合重音。比较、存储、索引之前先统一成 NFC,否则同形异码会让查重和登录全部失效。
Rust 的 Result 里,上下文要补在出错的那一层
`?` 会把错误原样上抛,不告诉你在哪一步失败。底层返回可匹配的结构化错误,应用层用 Context 补上「在做什么」和输入参数,日志里才有能定位的那一行。
什么时候该把一个 crate 拆成 workspace
拆 workspace 的触发条件是编译时间和依赖边界,不是目录好不好看。三个信号成立才拆,否则只是把一次编译换成多个包的管理成本。
结构化日志不是把 println 换成 tracing::info
拼接字符串的日志只能被人眼读,带字段的日志才能被查询和聚合。字段、span、级别、以及别在热点路径上格式化,是四个真正要做的决定。
