Factor 0.102 now available
本文为原文前 6,000 字符的节选翻译,完整内容请查看原文。
Factor 0.102 now available
Factor 0.102 现已发布。
Tuesday, October 13, 2026 #release “You don’t want just to develop for ARM, you want to actually use ARM in your day-to-day work on the desktop.” - Linus Torvalds I’m very pleased to announce the release of Factor 0.102!
2026 年 10 月 13 日,星期二 #发布 “你不仅想为 ARM 开发,还想在日常桌面工作中实际使用 ARM。” —— 林纳斯·托瓦兹(Linus Torvalds)。我非常高兴地宣布 Factor 0.102 的发布!
OS/CPU Windows macOS Linux ARM64 0.102 x86 0.102 0.102 x86-64 0.102 0.102 0.102 Source code: 0.102
| 操作系统/CPU | Windows | macOS | Linux |
|---|---|---|---|
| ARM64 | 0.102 | 0.102 | |
| x86 | 0.102 | 0.102 | |
| x86-64 | 0.102 | 0.102 | 0.102 |
| 源代码:0.102 |
This release includes 1,068 commits from the following contributors: Aleksander Sabak, Andrii Puhachenko, Chris Double, Dmitry Matveyev, Doug Coleman, Eric Willigers, Giftpflanze, John Benediktsson, Leo Mehraban, Rudi Grinberg, Sebastiaan Speck, Zoltán Kéri, @knottio, @ronnie-w
此版本包含来自以下贡献者的 1,068 次提交:Aleksander Sabak、Andrii Puhachenko、Chris Double、Dmitry Matveyev、Doug Coleman、Eric Willigers、Giftpflanze、John Benediktsson、Leo Mehraban、Rudi Grinberg、Sebastiaan Speck、Zoltán Kéri、@knottio、@ronnie-w。
Highlights of this release include: Working native ARM64 support on macOS, Linux, and Windows! A new GTK4 UI backend, now the default on 64-bit Linux; 32-bit Linux continues to use GTK3, which remains a build option on other supported Linux architectures.
此版本的亮点包括:在 macOS、Linux 和 Windows 上实现了原生的 ARM64 支持!全新的 GTK4 UI 后端,现已成为 64 位 Linux 上的默认设置;32 位 Linux 继续使用 GTK3,GTK3 在其他受支持的 Linux 架构上仍然是一个构建选项。
New 32-bit and 64-bit RISC-V Linux ports, with optimizing compiler backends, foreign calls and callbacks, and support in both the C++ and Zig VMs. DirectWrite text rendering on Windows, including color glyphs, typography controls, and better support for large output and complex scripts.
新增了 32 位和 64 位 RISC-V Linux 移植,配备了优化编译器后端、外部调用和回调,并在 C++ 和 Zig 虚拟机中提供支持。Windows 上采用 DirectWrite 文本渲染,包括彩色字形、排版控制,以及对大输出和复杂脚本更好的支持。
More responsive rendering and selection of large text across platforms, with fixes for display scaling, listener scrolling, and adjacent text backgrounds. Experimental register allocators and optional compiler optimizations, alongside fixes to stack inference, generated code, and GC root tracking.
跨平台的大文本渲染和选择响应速度更快,修复了显示缩放、监听器滚动和相邻文本背景的问题。引入了实验性寄存器分配器和可选的编译器优化,同时修复了堆栈推断、生成代码和垃圾回收(GC)根跟踪的问题。
Updated Unicode data to 18.0.0 and timezone data to 2026c, with bindings for SQLite 3.53.4, Raylib 6.0, and Lua 5.5. Faster process launching and native process-exit notifications on Linux, macOS, BSD, and Windows, with polling as a fallback. Extensive fixes to HTTP parsing, TLS identity checks, cooperative waits, resource cleanup, signal handling, and VM memory safety.
将 Unicode 数据更新至 18.0.0,时区数据更新至 2026c,并提供了 SQLite 3.53.4、Raylib 6.0 和 Lua 5.5 的绑定。在 Linux、macOS、BSD 和 Windows 上实现了更快的进程启动和原生进程退出通知,并以轮询作为备选方案。对 HTTP 解析、TLS 身份检查、协作等待、资源清理、信号处理和虚拟机内存安全性进行了广泛修复。
Compatibility notes: 64-bit Linux builds now select GTK4 by default; use -ui-backend=gtk3 when bootstrapping if GTK3 is required. 32-bit Linux uses GTK3 and does not support GTK4. Windows UI text now uses DirectWrite by default, so text metrics and appearance may differ from the previous Uniscribe backend.
兼容性说明:64 位 Linux 构建现在默认选择 GTK4;如果需要 GTK3,请在引导时使用 -ui-backend=gtk3。32 位 Linux 使用 GTK3 且不支持 GTK4。Windows UI 文本现在默认使用 DirectWrite,因此文本度量和外观可能与之前的 Uniscribe 后端有所不同。
callable is now a mixin that includes words; code that assumes all callables support the sequence protocol should use quotation-like instead. Fixed-array struct fields now validate input buffer lengths, and stricter HTTP and multipart parsing rejects malformed or incomplete input previously accepted.
callable 现在是一个包含 words 的 mixin;假设所有 callable 都支持序列协议的代码应改用 quotation-like。定长数组结构字段现在会验证输入缓冲区长度,更严格的 HTTP 和多部分解析会拒绝之前被接受的格式错误或不完整的输入。
PEG repetition and list parsers now omit ignore values. Minimum counts refer to successful matches, so repeat1 and list-of-many can return empty output when all matched items are hidden. The buffered HTTP client now decompresses gzip responses before character decoding and rejects unsupported content codings. with-http-request still provides bytes before content decompression.
PEG 重复和列表解析器现在会忽略 ignore 值。最小计数指代成功的匹配,因此当所有匹配项都被隐藏时,repeat1 和 list-of-many 可能返回空输出。缓冲 HTTP 客户端现在会在字符解码前解压 gzip 响应,并拒绝不支持的内容编码。with-http-request 仍然在内容解压前提供字节流。
Ambiguous Objective-C selectors now require a class-qualified name such as Class.selector when imported signatures differ. Tuple literals reject duplicate slot names, and minimum and maximum now throw for empty iota and repetition instead of returning a value. Command-line option names and aliases must now be unique, including the default —help option. Exact names take precedence over no- negation.
当导入的签名不同时,歧义的 Objective-C 选择器现在需要类限定名称,例如 Class.selector。元组字面量会拒绝重复的槽名,minimum 和 maximum 现在对空的 iota 和重复操作会抛出异常,而不是返回值。命令行选项名称和别名现在必须唯一,包括默认的 —help 选项。精确名称优先于 no- 取反。
SQLite connections now use persistent WAL mode, which requires a local filesystem. with-transaction uses BEGIN IMMEDIATE and acquires the write lock at transaction start, including for read-only work. Write serialization is per process; wrap raw SQL and DDL writes in with-transaction or serialize-transaction to participate.
SQLite 连接现在使用持久化 WAL 模式,这需要本地文件系统。with-transaction 使用 BEGIN IMMEDIATE 并在事务开始时获取写锁,包括只读工作。写序列化按进程进行;将原始 SQL 和 DDL 写入操作包装在 with-transaction 或 serialize-transaction 中以参与序列化。
What is Factor? Factor is a concatenative, stack-based programming language with high-level features including dynamic types, extensible syntax, macros, and garbage collection. Factor has a full-featured library, supports many platforms, and has extensive documentation. The implementation is fully compiled for performance, while still supporting interactive development. Factor applications are portable across supported platforms and can be deployed as standalone applications. Full source code for the Factor project is available under a BSD license.
什么是 Factor?Factor 是一种基于栈的连接式编程语言,具有动态类型、可扩展语法、宏和垃圾回收等高级特性。Factor 拥有功能齐全的库,支持多种平台,并有详尽的文档。其实现完全编译以保证性能,同时仍支持交互式开发。Factor 应用程序可在受支持的平台间移植,并可作为独立应用程序部署。Factor 项目的完整源代码基于 BSD 许可证提供。
New libraries: alien.c-types.varargs (added ABI-aware argument promotion and type support for C variadic calls), alien.varargs (added ARM64 variadic callbacks and native argument-list access), benchmark.neon (added benchmarks for ARM64 SIMD and optional NEON extensions), benchmark.spawn-cat (added a subprocess-launch benchmark with a Bun comparison), bootstrap.compat (added compatibility support for refreshing older images), checksums.cityhash (added pure Factor implementations of CityHash), checksums.farmhash (added portable FarmHash checksums), compiler.cfg.linear-scan.checker (added checks for register assignments), compiler.cfg.loop-optimization (added optional loop preheaders), compiler.cfg.memory-optimization (added optional reuse of managed-object slot loads), compiler.cfg.metrics (added compiler pass timings), compiler.cfg.multiply-negate (added a compiler pass that combines a multiply followed by negation), compiler.cfg.register-allocation (added a common interface for selecting register allocators), compiler.cfg.register-allocation.backtracking (added an experimental allocator), compiler.cfg.register-allocation.chordal (added an experimental SSA graph-coloring allocator), compiler.cfg.register-allocation.greedy (added an experimental allocator).
新库:alien.c-types.varargs(增加了对 C 可变参数调用的 ABI 感知参数提升和类型支持)、alien.varargs(增加了 ARM64 可变参数回调和原生参数列表访问)、benchmark.neon(增加了 ARM64 SIMD 和可选 NEON 扩展的基准测试)、benchmark.spawn-cat(增加了与 Bun 进行比较的子进程启动基准测试)、bootstrap.compat(增加了刷新旧镜像的兼容性支持)、checksums.cityhash(增加了 CityHash 的纯 Factor 实现)、checksums.farmhash(增加了可移植的 FarmHash 校验和)、compiler.cfg.linear-scan.checker(增加了对寄存器分配的检查)、compiler.cfg.loop-optimization(增加了可选的循环预头)、compiler.cfg.memory-optimization(增加了可选的托管对象槽加载重用)、compiler.cfg.metrics(增加了编译器传递计时)、compiler.cfg.multiply-negate(增加了一个合并乘法后跟取反操作的编译器传递)、compiler.cfg.register-allocation(增加了选择寄存器分配器的通用接口)、compiler.cfg.register-allocation.backtracking(增加了一个实验性分配器)、compiler.cfg.register-allocation.chordal(增加了一个实验性 SSA 图着色分配器)、compiler.cfg.register-allocation.greedy(增加了一个实验性分配器)。