文章摘要
Julia 1.12版本正式发布,主要更新包括新增--trim功能、重新定义常量(结构体)、新增编译检查的追踪标记和宏、以及多线程功能改进(默认单交互线程、线程设置支持CPU亲和性、新增OncePerX等)。感谢所有贡献者和测试人员的支持。
文章总结
Julia 1.12 版本亮点
Julia 1.12 正式发布,感谢所有贡献者和测试人员的努力。以下是该版本的主要更新:
- 新功能
--trim实验性功能:可显著减少编译时间和二进制文件大小,需配合--experimental标志使用。- 常量重定义:现在支持重新定义常量(包括结构体),需重新定义相关函数。
- 编译追踪:新增
--trace-compile-timing标志和@trace_compile、@trace_dispatch宏,便于分析编译过程。
- 多线程改进
- 默认线程配置:新增交互线程池(1默认线程+1交互线程),提升REPL响应速度。
- CPU亲和性支持:线程设置现在会遵循系统CPU亲和性配置。
OncePerX类型:提供OncePerProcess、OncePerThread和OncePerTask,简化并发编程。
- 性能优化
- BOLT工具支持:通过后链接优化提升性能,在Linux x86_64/aarch64平台可获得10-23%的性能提升。
- LLVM IR改进:
Ptr{T}现在直接映射为LLVM指针类型,简化低级交互操作。
- 包管理
- 工作区功能:支持多项目共享同一清单文件,便于管理复杂依赖关系。
- 应用程序支持:可将Julia包打包为可执行程序,通过
@main定义入口点。 - 版本状态提示:
Pkg.status()会高亮显示加载版本与当前环境不匹配的依赖项。
- 其他改进
- 原子操作扩展:
@atomic宏家族现在支持数组索引操作。 - 任务指标收集:新增
--task-metrics=yes选项收集任务执行时间信息。 - 测试可复现性:测试失败时会输出随机数生成器状态,便于复现问题。
该版本的部分开发工作由NASA资助(奖项号80NSSC22K1740)。完整更新内容请参阅NEWS文件。
评论总结
以下是评论内容的总结:
- 对新功能的期待与肯定
- 多位用户对1.12版本的新功能表示期待,特别是结构体重定义和--trim功能
- "Struct redefinition combined with Revise.jl makes development much smoother" (jakobnissen)
- "This will allow you to create small, redistributable binaries" (Archit3ch)
- 对Julia生态系统的讨论
- 有用户询问Julia生态系统现状,表示早期使用过但不确定当前发展
- "How's the Julia ecosystem these days?" (doctoboggan)
- 也有观点认为Julia错过了AI领域的发展机会
- "Julia missed the boat with Python totally dominating the AI area" (cyberax)
- 性能优化相关问题
- 用户询问BOLT优化是否会成为默认构建选项
- "Is BOLT the default build...I'm interested in what the blocker is" (sundarurfriend)
- 提到性能提升可达23%
- 对Julia的羡慕与比较
- 非Julia用户表达对Julia的羡慕
- "I wish...Julia had taken off instead of python for ML" (clickety_clack)
- 比较了Python的启动时间问题
- "it takes almost 15 seconds just to import all the machine-learning libraries" (cyberax)
- 具体功能询问
- 用户询问--trim选项的实际效果
- "Has anyone tried the
--trimoption? I wonder how well it works" (alhirzel)