经过六年的开发和 360 多次提交,Linux 内核在 7.2 版本中正式移除了 `strncpy()` API。由于其反直觉的空字符(NUL)终止行为以及低效的填充机制,`strncpy()` 长期以来被视为“持久的错误源”,此次替换旨在提升内核的安全性和性能。
开发人员现在需根据具体使用场景,选用更稳健的替代方案:
* **`strscpy()`**:用于标准的空字符终止字符串。
* **`strscpy_pad()`**:用于需要补零的空字符终止字符串。
* **`strtomem_pad()`**:用于无需空字符终止的定长字段。
* **`memcpy_and_pad()`**:用于需要显式填充的定界拷贝。
* **`memcpy()`**:用于简单的已知长度内存拷贝。
此次过渡的完成标志着所有 CPU 架构中 `strncpy` 的剩余实现已被全部移除,大幅精简了内核代码库。
AMD 已确认将在今年 7 月恢复消费级 Ryzen 9000 系列处理器上的透明安全内存加密(TSME),即 Memory Guard 功能。
TSME 是一项固件级功能,通过对 RAM 中的数据进行加密,以防止物理“冷启动”攻击。尽管该功能此前已在非 PRO 版本的 Ryzen 芯片上提供,但在今年早些时候的 AGESA 1.2.7.0 固件更新中被悄然移除。这一举动引发了社区的担忧,特别是在 *Ars Technica* 的安全审计披露 Ryzen 9000 系列硬件无法再使用该功能之后。
起初,AMD 对此变更未作明确解释,导致外界猜测该公司是为了将标准消费级 CPU 与面向商用的 Ryzen PRO 系列产品区分开来而禁用了该功能。然而,在收到大量社区反馈后,AMD 改变了立场。公司在一份官方声明中澄清,其致力于维护安全功能,并确认未来的 BIOS 更新将恢复用户在非 PRO Ryzen 9000 台式机上启用 Memory Guard 的能力。
Tiny 是一门高性能的并发编程语言及运行时系统,专为速度与灵活性而构建。它采用基于栈的字节码、高效的解释器以及即时(JIT)编译器,以实现原生级别的执行速度。
**关键技术特性:**
* **性能:** 具备操作系统级多线程、JIT 加速的热点循环,以及用于优化数据访问的宿主内存镜像功能。
* **灵活类型:** 默认提供动态类型,并支持可选的静态提示、联合类型及泛型。
* **现代设计:** 采用结构化(基于形状)类型系统、通过嵌入实现的类组合,以及强大的模式匹配。
* **并发:** 利用 `spawn` 在多个 CPU 核心上执行并发任务,并为共享状态提供安全、自动化的 `lock` 机制。
* **可扩展性:** 集成原生 WebAssembly 扩展,并支持内嵌 Go 代码。
* **开发体验:** 内置语言服务器 (LSP)、模式验证、UI 容器,以及用于 Web 服务和自动化的丰富标准库。
Tiny 代码既可以作为脚本运行,也可以打包成轻量级的独立可执行文件。凭借快速原型开发与系统级性能的结合,Tiny 专为高效、现代的应用程序开发而设计。相关文档及二进制文件请访问 [tiny-lang-docs.github.io](https://tiny-lang-docs.github.io)。
为了展示其托管 Postgres 服务的性能,ClickHouse 推出了 **PostgresBench**,这是一个针对事务型(OLTP)工作负载的开源、透明且可复现的基准测试工具。该项目使用标准的 `pgbench` 工具和类似 TPC-B 的工作负载,评估了托管 Postgres 服务在真实的重写入条件下的表现。
该基准测试通过在所有受测提供商之间保持基础设施、工作负载参数和配置设置的一致性,来强调结果的稳定性。通过专注于单节点性能并隔离存储影响,测试结果揭示了一个关键的行业见解:**Postgres 的性能瓶颈往往在于存储延迟,而非计算能力。**
基准测试结果表明,与依赖网络附加存储或共享存储(如 EBS)的服务相比,采用与计算资源同地部署的 NVMe 存储的架构(例如 ClickHouse 的托管 Postgres 产品)在性能上具有显著优势,尤其是在高频写入的场景下。
ClickHouse 已将完整的测试方法、原始数据和基准测试脚本在 GitHub 上公开。他们邀请社区对这些结果进行验证、贡献新的测试用例,并提交其他 Postgres 服务的性能数据。该项目旨在成为一个权威且中立的参考标准,基于事实和可复现的数据来比较各家托管 Postgres 服务提供商。
**make-look-scanned** 是一款将整洁的 PDF 文档转换为逼真数字扫描件的工具。通过对页面进行栅格化处理并应用一系列特效流程,它能够模拟物理打印件的瑕疵,包括歪斜、灰度、纸张底色、噪点、模糊、边缘阴影以及 JPEG 压缩痕迹。
该项目提供两种主要运行方式:
* **命令行界面 (CLI):** 基于 Go 语言编写的二进制程序,使用 MuPDF 进行高质量栅格化。默认采用确定性处理(基于内容的哈希),但也支持通过 `config.toml` 配置文件或明确的 CLI 参数进行自定义随机化与设置。
* **Web 端:** 基于 WASM 的浏览器版本,使用 PDF.js 进行渲染。它以单个独立的 HTML 文件形式存在,支持离线使用,无需外部依赖或服务器端处理。
核心功能包括针对每种特效的可调参数,以及定义可复用预设的能力。由于对 MuPDF 的依赖,CLI 版本采用 AGPL-3.0 许可证;而浏览器版本则使用采用 Apache-2.0 许可证的 PDF.js。两个版本都会移除原有的可选中文字,确保输出内容真实还原扫描文档的效果。
自 20 世纪初以来,芭蕾舞鞋的设计几乎停滞不前,这主要受限于芭蕾舞界对传统的刻板坚持、高昂的制造成本,以及对特定外观审美需求的追求。虽然传统的布料与浆糊制舞鞋仍是行业标准,但像 Gaynor Minden 和 act’ble 这样的创新者已经引入了合成材料和 3D 打印设计,旨在提升表现并减少损伤。
然而,这些技术的广泛应用面临着重大障碍。除了在小众市场进行研发所带来的财务风险外,进步还受到“门槛文化”的阻碍;教师、总监甚至舞者本人,往往因为审美偏见、个人喜好或害怕背离传统而拒绝使用现代舞鞋。
在包容性鞋履方面也存在类似的困境。尽管在 2020 年“黑人的命也是命”(Black Lives Matter)运动后,行业曾短暂扩大了肤色系列的选择范围,但经济压力和供应链的现实导致许多品牌选择了撤退。专家认为,真正的进步需要将重点从死守传统转向优先考虑舞者的职业生涯长久性与包容性;但在这样一个资源匮乏且文化保守的行业中,实现这一目标仍然是一个缓慢的、如同“龟速”般的过程。