请启用 JavaScript 并禁用任何广告拦截器。
请启用 JavaScript 并禁用任何广告拦截器。
## 从零到竞争:优化一个微型解释器 这篇文章详细介绍了为动态语言 Zef 优化一个简单的 AST 遍历解释器的过程,使其性能与 Lua、QuickJS 和 CPython 竞争——速度提升了 16.6 倍(使用 Yolo-C++ 端口则提升了 67 倍)。重点在于在处理 JIT 编译或高级垃圾回收等复杂功能*之前*进行的初始优化。 关键技术包括改进**值表示**(使用标记值避免数字的分配),实现**内联缓存**(使用专门的 AST 节点减少分派开销),以及改进**对象模型**(使用预分配存储和观察点避免哈希表查找)。 显著的收益来自于看似重大的改变,例如将对象模型改进与内联缓存和观察点结合,从而实现了 4.55 倍的速度提升。 作者使用了一个基准测试套件 ScriptBench1(Richards、DeltaBlue、N-Body 和 Splay 的移植版)来跟踪进度。实验在配备 Intel Core Ultra 5 处理器的 Ubuntu 22.04 上进行。最终结果使使用 Fil-C++ 编译的 Zef 能够与成熟的解释器相媲美,而 Yolo-C++ 端口则提供了进一步的 4 倍加速(尽管存在内存管理方面的注意事项)。该项目表明,即使在基本的解释器基础上,通过仔细、有针对性的优化,也可以实现显著的性能提升。
## Nebula 1.10:现代网络的重要更新 Nebula 1.10 历经一年开发,带来了显著的增强,包括对覆盖网络的 **IPv6 支持**——一项长期要求的特性。此更新通过消除 IPv4 地址限制并实现跨多个站点的无缝连接,为网络做好未来准备。升级过程简单直接,允许在零停机的情况下实现 IPv4/IPv6 混合环境。 主要改进还包括 **新的 v2 证书格式**(使用 ASN.1 代替 Protocol Buffers),以支持 IPv6 和每个主机的多个 IP,从而提供更大的灵活性和面向未来的能力。 除了核心网络功能外,Nebula 1.10 还引入了 **企业级安全**,支持使用 HSM 进行 P256 密钥的 PKCS#11 支持,从而实现安全的密钥管理。 **高级路由** 功能,如 `unsafe_routes` 的 ECMP 和 Linux 上的 `SO_MARK` socket 选项支持,进一步增强了网络控制和集成。最后,通过可配置的日志记录和版本控制改进了库集成。 Nebula 1.10 为各种规模的团队提供更强大、更安全、更面向未来的网络解决方案。
## 三元盆景:高性能、低内存语言模型 PrismML 发布了三元盆景,这是一种新型的 1.58 位语言模型系列(8B、4B 和 1.7B 参数),旨在实现高效性能。在他们之前的 1 位盆景模型的基础上,三元盆景通过利用三元权重(-1、0、+1)在内存使用和准确性之间取得了平衡。 这些模型比标准的 16 位模型内存占用小约 9 倍,同时在 MMLU、GSM8K 和 HumanEval+ 等关键基准测试中*优于*许多同等参数的模型。例如,8B 模型实现了 75.5 的平均基准分数,超越了 1 位盆景 8B,并与更大的模型(如 Qwen3 8B)竞争,尽管其尺寸明显更小。 三元盆景还提供令人印象深刻的吞吐量和能源效率,在 M4 Pro 和 iPhone 17 Pro Max 等平台上,运行速度比 16 位模型快高达 5 倍,并且能耗降低 3-4 倍。这些模型通过 MLX 在 Apple 设备上原生支持,并采用 Apache 2.0 许可证提供。它们代表了性能-尺寸权衡的转变,与 1 位系列相比,在内存略有增加的情况下,提供了一个更强大的模型。
## 语言模型中的“退缩”:所谓的“无审查”模型真的自由吗?
最新研究表明,即使是作为“无审查”销售的语言模型,也表现出一种微妙但普遍的偏见——一种对某些词语和话题的“退缩”。这种退缩不是拒绝回应,而是一种统计上的微调,降低了生成文本中出现“敏感”词语(例如与暴力、政治或侮辱性词语相关的词语)的概率。
研究人员在来自五家实验室的七个预训练模型中测量了这种退缩,包括来自谷歌、阿里巴巴、OpenAI和开源选项的模型。他们发现*所有*模型都表现出这种行为,商业过滤模型比开放数据模型表现出更强的退缩。即使是“拒绝消除”模型——那些被设计用来绕过安全限制的模型——仍然表现出退缩,这表明偏见嵌入在核心预训练数据中,而不仅仅是安全层。
这项研究强调,这不仅仅是关于避免明确的拒绝;而是对语言进行系统性的塑造。这引发了对信息微妙控制以及在大型语言模型背景下“无审查”的真正含义的担忧。该研究提供了一个新的框架来理解和量化这些偏见,为更透明和负责任的AI开发铺平了道路。
## 数据库性能的零拷贝 本文探讨了在数据库引擎中实现零拷贝数据处理以提高性能,尤其是在数据不适合CPU缓存的高负载情况下。传统的数据库架构涉及在磁盘、操作系统页面缓存、缓冲池和更高级别之间进行多次CPU拷贝——所有这些都是浪费的工作。 第一步是使用**直接IO (O_DIRECT)**绕过操作系统页面缓存,这需要对齐的缓冲区和仔细的处理以避免错误。 这消除了一个关键的拷贝。 接下来,重点转向消除数据库引擎*内部*的拷贝,特别是缓冲池和更高级别之间的拷贝。 核心策略是**借用而非拥有**数据。Rust 的生命周期系统被用来创建缓冲池中固定页面字节的视图(例如 `PageReadGuard`、`HeapPageView`),从而避免冗余拷贝。实现了单独的读取 (`PageReadGuard`) 和写入 (`PageWriteGuard`) 访问路径,以维护数据完整性并利用 Rust 的借用规则。 虽然这种方法引入了生命周期注解的复杂性,并且需要显式的方法实现(由于缺乏像 `Vec` 那样的统一的可变/不可变视图),但它显著减少了数据移动。设计将所有权集中在缓冲池中,所有更高级别都在借用的视图上操作,最终提高性能并减少潜在的错误。
向门罗币项目捐款
通过向以下门罗币地址(通用基金)捐款,您将支持门罗币项目。如果您希望向特定提案捐款,请参阅所需资金。
888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H
## Jujutsu 的“巨合并”工作流:摘要 本文介绍了 Jujutsu 中的“巨合并”工作流,这是一种管理复杂开发环境和频繁小 PR 的强大技术。与传统的分支不同,“巨合并”并非关于隔离的工作;它是一个具有*多个*父 commit 的单个 commit——本质上将您所有活跃的工作(错误修复、功能、PR,甚至实验代码)合并到一个地方。 主要好处是什么?您始终在统一的、可编译的代码库上工作,从而最大限度地减少合并冲突和上下文切换的摩擦。使用 `jj absorb`(自动压缩)或 `jj squash --interactive` 将更改集成到现有 commit 中,或使用 `jj rebase` 创建新的 commit。别名,如 `jj stack` 和 `jj stage`,简化了合并整个分支的过程。 巨合并*不*直接推送;而是像往常一样发布各个分支。一个自定义的 `jj restack` 别名有助于使您的巨合并与主分支 (`trunk()`) 保持更新。虽然在视觉上很复杂,但此工作流提供了一种无缝高效的方式来同时管理多个任务,从而实现快速迭代并减少开发开销。
## Holos:简化的KVM管理 Holos简化了在单个主机上运行多虚拟机堆栈的操作,使用KVM,提供类似Docker Compose的体验,*无需* libvirt、XML配置或分布式控制平面的复杂性。它将虚拟机视为基本单元,为每个虚拟机提供专用的内核、磁盘叠加(qcow2)和cloud-init种子。 您在`holos.yaml`文件中定义堆栈,指定带有镜像、资源分配(vCPU、内存)、依赖项、端口映射和cloud-init配置以进行自定义的服务(虚拟机)。`holos up`、`down`、`ps`、`start`、`stop`、`console`和`exec`等命令管理堆栈生命周期。 主要功能包括:通过专用内部网络实现自动网络连接、持久化卷、用于管理服务依赖项的健康检查、通过自动生成的密钥进行SSH访问,以及能够直通PCI设备,如GPU。Holos还支持从Dockerfile构建镜像,并与systemd集成以实现跨重启的持久运行。 **重要的是,Holos *不是* Kubernetes。** 它专注于简化单主机KVM的使用,避免了编排和集群的复杂性。