Fable编译器5.0.0-alpha.11版本发布:增强JS/TS与Rust支持
Fable是一个将F#代码编译为JavaScript、TypeScript、Python等语言的编译器工具链。它让函数式编程语言F#能够运行在多种平台上,特别适合需要跨平台共享代码库的场景。本次发布的5.0.0-alpha.11版本带来了多项重要改进,主要集中在JavaScript/TypeScript目标平台的增强和对Rust语言的支持上。
核心功能增强
JavaScript/TypeScript目标改进
字符串枚举支持全小写转换:新增了CaseRules.LowerAll选项,开发者现在可以方便地将字符串枚举值统一转换为全小写格式,这在需要与某些强制小写的API交互时特别有用。
数值格式化增强:新增了对C(货币)、c、B(二进制)、b和n(数字)格式说明符的支持,使数值格式化能力更接近.NET标准库。同时,编译器现在会检测并报告无效的数值格式说明符,帮助开发者及早发现问题。
日期时间格式化修复:修正了短格式字符串(如重复多个'd')的处理逻辑,确保日期显示格式与.NET行为一致。
异步操作改进:修复了Async.Start和Async.StartImmediate中未捕获异常的传播问题,并明确禁止了Async.RunSynchronously在JS环境中的使用(因为这会阻塞事件循环)。
Rust目标支持
Rust 2024版本支持:新增了对即将发布的Rust 2024语言版本的支持,确保Fable生成的Rust代码能够利用最新的语言特性。
重要问题修复
POJO反射信息缺失:修复了普通JavaScript对象(POJO)反射信息丢失的问题,现在可以正确获取这些类型的信息。
数值转换检查:改进了decimal/bigint到integer的转换检查逻辑,以及decimal到char的转换检查,防止不安全的类型转换。
嵌套类型支持:修复了使用jsOptions时直接访问嵌套类型成员的问题,现在可以链式设置嵌套属性值。
系统包扫描优化:编译器不再扫描系统包寻找插件,提高了编译效率。
行为变更
数值格式错误处理:现在当提供无效的数值格式说明符时,会抛出错误而不是静默失败,这一变更使行为更符合.NET的预期。
总结
Fable 5.0.0-alpha.11版本在保持稳定性的同时,显著增强了JavaScript/TypeScript目标的功能完整性,特别是数值格式化和日期处理方面。对Rust 2024的早期支持也展示了项目对多语言目标的前瞻性考虑。这些改进使得F#代码能够更无缝地转换为目标语言,同时保持与原生.NET相似的行为特性。对于正在使用或考虑使用Fable进行跨平台开发的团队来说,这个版本值得关注和试用。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust098- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00