Scala Native 0.5.7 版本发布:运行时优化与标准库增强
Scala Native 是一个将 Scala 代码编译为本地机器码的项目,它允许开发者编写高性能的本地应用程序,同时保持 Scala 语言的表达能力和生态系统。最新发布的 0.5.7 版本带来了一系列重要的改进和新特性。
运行时优化
本次版本最显著的改进之一是减少了运行时对 C++标准库的依赖。在 Unix 系统上,Scala Native 现在默认不再需要链接 C++标准库。开发者可以通过@scala.scalanative.unsafe.linkCppRuntime注解显式声明需要 C++运行时支持的方法。不过需要注意的是,在 Windows 平台或启用 LTO(链接时优化)的情况下,仍然会使用 C++运行时。
另一个重要改进是实现了 StackOverflowError 的检测和处理机制。现在当发生栈溢出时,程序能够抛出 StackOverflowError 异常而不是直接终止运行。同时新增了SCALANATIVE_THREAD_STACK_SIZE环境变量,允许在运行时控制线程栈大小,类似于 JVM 中的-Xss参数。
在性能优化方面,0.5.7 版本重新设计了类虚表的布局,显著减小了生成二进制文件的大小。异常处理机制也得到了改进,现在可以更高效地收集堆栈跟踪信息。
工具链增强
编译器工具链方面,现在支持生成位置无关可执行文件(PIE),增强了安全性。优化了装箱(boxing)操作的处理,能够消除冗余的装箱-位转换-拆箱操作链。内联优化策略也得到了改进,现在会强制内联被@alwaysinline注解标记的方法。
调试信息生成更加完善,为基本监控器和数组类型添加了缺失的文件属性。在 Windows 平台上的工具链支持也有所增强。
Java 标准库扩展
0.5.7 版本实现了大量 Java 9 及以后版本引入的标准库方法,包括:
- 新增了
java.util.concurrent.CompletableFuture的实现 - 实现了
java.lang.Class.forName方法 - 添加了多种异常类型,如
ClosedByInterruptException和AsynchronousCloseException - 改进了输入输出流的实现,特别是
skip和readNBytes方法的行为 - 实现了 JDK 11 引入的
String#lines、Predicate#not等方法 - 新增了 JDK 15 的
Math#absExact方法 - 实现了
ProcessHandle对 Scala Native 启动的进程的支持
BigDecimal 和 BigInteger 类的字符串转换性能得到了显著提升。同时修复了多个标准库方法的行为,使其更符合 JVM 规范。
兼容性说明
虽然 Scala Native 0.5.7 向后兼容所有之前的 0.5.x 版本,但它不是向前二进制兼容的。这意味着使用 Scala Native 0.5.7 编译的库需要用户也升级到 0.5.7 或更高版本。
该版本支持 Scala 2.12.14-2.12.20、2.13.8-2.13.16 以及多个 Scala 3 版本(从 3.1.2 到 3.6.3)。随着新 Scala 版本的发布,相关构件会自动发布而无需等待新的 Scala Native 版本。
总体而言,Scala Native 0.5.7 在运行时效率、标准库完整性和开发体验方面都带来了显著提升,是向更成熟、更高效的本地 Scala 运行时迈出的重要一步。
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C0100
baihu-dataset异构数据集“白虎”正式开源——首批开放10w+条真实机器人动作数据,构建具身智能标准化训练基座。00
mindquantumMindQuantum is a general software library supporting the development of applications for quantum computation.Python059
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7GLM-4.7上线并开源。新版本面向Coding场景强化了编码能力、长程任务规划与工具协同,并在多项主流公开基准测试中取得开源模型中的领先表现。 目前,GLM-4.7已通过BigModel.cn提供API,并在z.ai全栈开发模式中上线Skills模块,支持多模态任务的统一规划与协作。Jinja00
AgentCPM-Explore没有万亿参数的算力堆砌,没有百万级数据的暴力灌入,清华大学自然语言处理实验室、中国人民大学、面壁智能与 OpenBMB 开源社区联合研发的 AgentCPM-Explore 智能体模型基于仅 4B 参数的模型,在深度探索类任务上取得同尺寸模型 SOTA、越级赶上甚至超越 8B 级 SOTA 模型、比肩部分 30B 级以上和闭源大模型的效果,真正让大模型的长程任务处理能力有望部署于端侧。Jinja00