2026年10月26日,纯面向对象动态语言与开发环境 Pharo 正式发布版本 14(v14.0.0,commit 1ad0bf2)。这项由开发者 @estebanlm 掌舵的发布,打破了 Pharo 十年来固定在每年三至五月春季发版的行业惯例,成为该项目首次推迟到秋季窗口交付的正式版本。

在主代码库合入 978 个 PR、关闭 616 个 Issue 的数字背后,Pharo 14 绝非一次常规的语法糖修补或界面换肤。这是一场为了剥离三十年 Smalltalk 历史包袱而发动的深水区攻坚:虚拟机底层换上 64 位 RISC-V JIT 引擎并重构栈帧,上层工具链则强行斩断沿用多年的 Spotter 与旧重构体系。对于坚守动态镜像执行环境的专业开发者而言,技术底座迎来了现代化的蜕变,但也必须直面工具链断代带来的现实摩擦。

Pharo 14 发布核心工程数据 978 主代码库合并 PR 616 累计关闭 Issue 64-bit RISC-V JIT 支持 55 独立贡献者账户

推迟落地的发布周期,映射双轨演进的工程协调代价

按照 Pharo 既往节奏,新版本本应在 2026 年四至五月面世。然而早在 2026 年 6 月 29 日,官方团队便通告跳过春季窗口,正式宣布将发版周期全面调整为秋季。导致这次推迟的根源在于,Pharo 的架构长期处于镜像(Image)与虚拟机(VM)独立演进的双轨体系中,而配套的 VM v12、SDL3 图形后端以及 Alexandria 等底层工程,未能按既定时间表完成工程收敛。

这种协调断层揭示了动态镜像系统的两难境地。上层镜像环境需要不断吸收现代编程语言特性,而基于 Slang/Cogit 的底层解释器与 JIT 引擎则背负着跨平台适配的沉重包袱。

动态镜像与执行引擎的双轨脱节,终究要靠推迟发布周期来换取工程对齐。

底层虚拟机的最大变化在于异构硬件支持与执行栈清理。2025 年 3 月 31 日,PR #932 合入了 CogRiscV64Compiler 及非内联字面量后端,让 Pharo 14 正式具备了 64 位 RISC-V JIT 的执行能力,尽管初版实现中出于审慎考虑排除了向量指令测试。在内存与调用栈层面,新版统一了栈帧管理,减少了解释器与 JIT 之间的状态切换损耗,并引入了老生代对象的直接分配能力。

发版推迟背后的双轨工程依赖 上层镜像演进(Image) • NewTools 工具栈归一化 • 驱动式重构体系与统一命令注册 • 剥离历史 Morphic 控件与旧包依赖 进度按期推进,等待底层依赖就绪 底层底座延期(VM v12 & 依赖) • RISC-V 64位 Cogit 编译器初版构建 • SDL3 与 Alexandria 集成耗时超预期 • 跨平台自动化编译与栈帧统一校验 核心卡点:6月29日正式宣布延期至秋季

从 Spotter 到 Pulse,激进剥离三十年交互遗留

在用户交互与集成开发环境(IDE)层面,Pharo 14 迈出了激进的一步。统治社区多年的全局检索入口 Spotter 被全新的 Pulse 全面替代,设置浏览器推翻重写并设为系统默认,同时引入了聚焦运行时总览的 Mission Control。

这一调整属于 Pharo 向基于 Spec2 现代工具栈 NewTools 迁移的既定步骤。版本更替中,历史教学工具 ProfStef 和变更记录工具 Epicea 正式迁入 NewTools;系统中最后残留的 RPackage 引用、CommandLineUIManager 以及 MonticelloGUI 被全面移除,上世纪沿用至今的旧式 Morphic 列表控件也遭弃用。而在语言执行语义上,由 @MarcusDenker 提交的 PR #18322 正式启用了 Clean Blocks,使不捕获外部上下文的闭包能在执行期避免多余的内存分配。

系统清理虽然彻底,但发布仓促的痕迹依然可见。官方新闻稿正文中,针对贡献者总数的统计仍赫然留着未替换的占位符;GitHub 仓库上标明由 55 个贡献者账户协同完成;而下游支撑库 NewTools 的默认分支更在发版同时迅速切向了 Pharo 15。这种生态快步小跑的节奏,给留守在旧版本的项目带来了升级压力。

Pharo 14 三层技术底座代际更迭 开发工具层 旧版 Spotter 退出历史舞台 Pulse 上线、集成 Mission Control 重构与语义层 RBRefactoryChanges 类与旧命令 推向 ReChanges 驱动架构、启用 Clean Blocks 虚拟机底座 传统 x86/ARM JIT 与分散栈帧 RISC-V 64位 JIT、栈帧统一管理、老生代直配

驱动式重构的稳定性检验与迁移摩擦

重构引擎的改动是本次升级中破坏性最强的一环。长期作为 Pharo 代码自动化演变基石的 RBRefactoryChanges 类系列被重命名为 ReChanges,所有重构指令被收拢到统一命令注册表驱动的架构下。

这种重构大幅改善了命令行测试与 Sindarin 脚本调用的规范性,却不可避免地打碎了旧插件生态。依赖旧版私有重构接口或编译器 API 的存量企业代码,在直接升级至 Pharo 14 时将遇到调用断裂。

  • 风险.根据预发布阶段的 Issue #19979 记录,新重构交互在处理复杂场景(例如参数重排)时,曾出现畸形选择器(malformed selectors)、未捕获消息(DNU)甚至同名方法误覆盖的隐患,生产环境下的重构操作仍需谨慎回归。

在运行性能方面,开发者的实际反馈与官方宣传也存在温差。尽管官方列出了栈帧合并与内存分配机制的优化,但官方至今缺乏与 Pharo 13 或 Squeak 之间具备可复现性的标准性能基准测试。在 Issue #19548 中,已有开发者反馈测试运行感知变慢。底座更迭解决了代码维护性与硬件可扩展性,但在低延迟垃圾回收尚未落地的现状下,并不能直接兑现为用户界面的性能飞跃。

对于正在维护生产级 Smalltalk 镜像的企业团队而言,坚守 Pharo 13 维持稳定是更为稳妥的商业策略,等待后续首个修正版本补齐重构交互边界;而对于探索 RISC-V 嵌入式计算环境和动态语言前沿的开发者,Pharo 14 则是迈出历史包袱、接入现代编译器底座的关键一步。