Hacker News 中文摘要

RSS订阅

Julia 1.12 亮点 -- Julia 1.12 highlights

文章摘要

Julia 1.12版本正式发布,主要更新包括新增--trim功能、重新定义常量(结构体)、新增编译检查的追踪标记和宏、以及多线程功能改进(默认单交互线程、线程设置支持CPU亲和性、新增OncePerX等)。感谢所有贡献者和测试人员的支持。

文章总结

Julia 1.12 版本亮点

Julia 1.12 正式发布,感谢所有贡献者和测试人员的努力。以下是该版本的主要更新:

  1. 新功能
  • --trim 实验性功能:可显著减少编译时间和二进制文件大小,需配合 --experimental 标志使用。
  • 常量重定义:现在支持重新定义常量(包括结构体),需重新定义相关函数。
  • 编译追踪:新增 --trace-compile-timing 标志和 @trace_compile@trace_dispatch 宏,便于分析编译过程。
  1. 多线程改进
  • 默认线程配置:新增交互线程池(1默认线程+1交互线程),提升REPL响应速度。
  • CPU亲和性支持:线程设置现在会遵循系统CPU亲和性配置。
  • OncePerX 类型:提供 OncePerProcessOncePerThreadOncePerTask,简化并发编程。
  1. 性能优化
  • BOLT工具支持:通过后链接优化提升性能,在Linux x86_64/aarch64平台可获得10-23%的性能提升。
  • LLVM IR改进:Ptr{T} 现在直接映射为LLVM指针类型,简化低级交互操作。
  1. 包管理
  • 工作区功能:支持多项目共享同一清单文件,便于管理复杂依赖关系。
  • 应用程序支持:可将Julia包打包为可执行程序,通过 @main 定义入口点。
  • 版本状态提示:Pkg.status() 会高亮显示加载版本与当前环境不匹配的依赖项。
  1. 其他改进
  • 原子操作扩展:@atomic 宏家族现在支持数组索引操作。
  • 任务指标收集:新增 --task-metrics=yes 选项收集任务执行时间信息。
  • 测试可复现性:测试失败时会输出随机数生成器状态,便于复现问题。

该版本的部分开发工作由NASA资助(奖项号80NSSC22K1740)。完整更新内容请参阅NEWS文件

评论总结

以下是评论内容的总结:

  1. 对新功能的期待与肯定
  • 多位用户对1.12版本的新功能表示期待,特别是结构体重定义和--trim功能
  • "Struct redefinition combined with Revise.jl makes development much smoother" (jakobnissen)
  • "This will allow you to create small, redistributable binaries" (Archit3ch)
  1. 对Julia生态系统的讨论
  • 有用户询问Julia生态系统现状,表示早期使用过但不确定当前发展
  • "How's the Julia ecosystem these days?" (doctoboggan)
  • 也有观点认为Julia错过了AI领域的发展机会
  • "Julia missed the boat with Python totally dominating the AI area" (cyberax)
  1. 性能优化相关问题
  • 用户询问BOLT优化是否会成为默认构建选项
  • "Is BOLT the default build...I'm interested in what the blocker is" (sundarurfriend)
  • 提到性能提升可达23%
  1. 对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)
  1. 具体功能询问
  • 用户询问--trim选项的实际效果
  • "Has anyone tried the --trim option? I wonder how well it works" (alhirzel)