BoxLang 1.18.0 发布:面向多云、集群节点与AI智能体
Azure 加入无服务器阵营。计划任务实现集群安全。整个平台也获得了为并肩工作的开发者和 AI 智能体打造的文档与技能。
如果你领导一个技术组织,你同时会被要求做三件事:更快交付、让现有系统继续运行,并让 AI 融入团队的工作方式。大多数技术栈会让你做选择。BoxLang 1.18 是朝着无需取舍又迈出的一步。
BoxLang 是 AI 原生软件生产力平台,用于构建、现代化改造和运行应用,让开发者和 AI 智能体协同工作。一个运行时,多种部署目标,无需重写。
这不再只是路线图上的承诺。我们已将多家客户从 Adobe ColdFusion 和 Lucee 迁移到 BoxLang,它们如今已在生产环境中运行。其中包括在短短几个月内迁移了超过 150 万行 ACF 代码,而不是数年。这些团队正在降低许可和基础设施成本,清除多年技术债务,并随着每个版本发布而更有信心。最重要的是,他们现在获得了全新水平的生产力和自动化能力:现代语言特性、完整的 Java 互操作、无服务器部署,以及能理解其代码库的 AI 智能体。
1.18 在这些基础上,重点增强了平台审批者最关心的领域:可移植性、可靠性、可运维性和安全性。
阅读 1.18.0 完整的新功能说明,查看每个工单,或继续阅读了解整体故事。
一览
- Azure Functions 运行时。 BoxLang 现在通过同一套处理程序契约,在 AWS、Google Cloud 和 Microsoft Azure 上以无服务器方式运行。
- 计划任务的服务器固定。 在集群中,作业每次只会在恰好一台服务器上运行。
- 为自动化而构建的 CLI。 支持项目级配置发现,以及面向脚本和智能体的机器可读调度器报告。
- 新的拦截点。 在这些钩子触发时观察 BoxLang 类创建和初始化生命周期事件,并考虑预期例外情况,例如父类创建、
noInit实例化和初始化失败。 - 强化了 Lambda 和 Google Cloud Functions 上的无服务器路由,并实现跨云一致的响应和错误处理。
- 包含所有 1.17.x 热修复。 升级一次,即可获得全部六个补丁版本。
- 文档和技能全面更新。 新增智能体开发、BoxLang AI、浏览器自动化等章节。
一个代码库,三种云
[LOADING...]
云战略很少能长期停留在单一云决策上。收购、区域要求和定价都会把决策拉向不同方向。对平台而言,问题在于迁移成本有多高。
借助 1.18,BoxLang 拥有了官方 Azure Functions 运行时,与 AWS Lambda 和 Google Cloud Functions 并列。三者采用相同的设计:相同的 handlers/ 路由约定、相同的构建时 manifest.json,以及相同的 run( event, context, response ) 契约。你的处理程序无需修改即可在提供商之间迁移。
Azure 运行时附带一个开箱即用的起始项目:Gradle 依赖管理、单元与集成测试、类编译缓存、环境感知配置、用于本地运行和部署的官方 Azure Functions Gradle 插件,以及用于测试、构建和发布的 GitHub Actions。
为什么这对你重要: 无服务器,且无供应商锁定。你的业务逻辑保持为一种语言和一套契约,而部署目标则变成一个配置决策。
在集群中行为正确的计划任务
任何把同一个调度器部署到多台服务器的人都知道这个问题。你的夜间清理、账单报告、缓存预热:每一项都会在同一时刻悄然在每个节点上运行一次。重复发票和重复邮件不是代码问题,而是协调问题。
1.18 引入了服务器固定(server fixation)。一次调用即可告诉 BoxLang 在单个节点上运行任务:
以下是它达到生产级的原因:
- 分布式锁。 各节点通过 Redis 等共享缓存竞相抢占每次运行。第一个节点获胜,其余节点跳过。
- 崩溃安全。 如果获胜节点在运行中途死亡,其分布式锁会保持有效,直到锁的 TTL 过期。在锁仍然有效期间,其他节点可能会跳过下一次计划轮询;过期后,幸存节点可以在之后的轮询中接管。
- 按实际计划调整锁超时。 对于每月和工作日计划,锁超时根据距离下一次执行剩余的时间计算。亚分钟级计划使用 60 分钟默认超时,这可能会导致崩溃后的后续运行被抑制,直到该超时到期。
- 可观测。 任务统计信息会显示任务在哪个服务器上执行。共享锁条目通过
serverHost和serverIp记录获胜节点。
调度器还进行了一轮可靠性改进:修复了 .between() 与 .everyHour() 组合时的重复触发问题、调度器名称重复错误、失败处理器可能导致任务被禁用的问题,以及 everyMonthOn( 31 ) 现在会落在较短月份的最后一天。
为什么这对你重要: 横向扩展且没有重复副作用。
内置运维与自动化
面向人类和智能体的平台必须可脚本化。1.18 让 CLI 对两者都更友好:
- 按项目配置。 将
.boxlang.json放在脚本旁边,CLI 就会读取它。用户级设置位于你的 BoxLang home 中,显式标志和环境变量始终优先。我们记录了完整的查找顺序,包括它与.env文件的比较。 - 可读的调度器报告,包含已加载的调度器、任务和实时统计信息,并从输出中剔除凭据。
- 更清晰的错误信息,包括当 CLI 请求的模块缺失时给出更好的提示。
总结
每个 BoxLang 版本都有相同的目标:帮助你用现有代码做更多事,并停止为不需要的复杂性买单。1.18 增加了第三个云平台、集群安全的计划任务、人类和智能体都能编写脚本的 CLI,以及为你的 AI 工具提供关于平台真实上下文的文档和技能。
对于仍在运行 CFML 的团队,这条路径已经得到验证。我们的客户已经在生产环境中运行 BoxLang,成本更低、技术债务更少,并且平台已准备好迎接接下来的任何变化。你一直推迟的迁移,比你想象的要小。
今天就升级到 1.18,如果你需要帮助规划 CFML 迁移,联系 Ortus 团队。我们曾大规模完成过这类迁移,也可以与你一起完成。
生产力才是关键。让我们开始构建。
[LOADING...]
作者
Luis Majano
Ortus Solutions 首席执行官 - 工程师 - 作者 - ColdBox HMVC、BoxLang JVM Language、ContentBox CMS 等项目的创建者。