编程 Julia v1.13.0 版本解读:@__FUNCTION__ 与 Unicode 17,含 hash 破坏性变更

2026-09-10 12:17:52

Julia v1.13.0 版本解读:@FUNCTION 与 Unicode 17,含 hash 破坏性变更

Julia 于 2026-09-09 发布 1.13.0。本版带来新的语言特性与 Unicode 支持,同时包含两处需要迁移注意的破坏性变更(@doc 返回值与 hash 算法),另有若干命令行与多线程改进。

新语言特性

  • @__FUNCTION__:用于引用最近一层包裹函数,适合在通用工具函数内获取调用上下文。
  • Unicode 17 支持:标准库与语法层支持 Unicode 17 字符。
  • 新箭头运算符 U+1F8B2(RIGHTWARDS ARROW WITH LOWER HOOK):按箭头优先级成为合法运算符,REPL 中可用 \hookunderrightarrow 输入,为符号化 DSL 提供更多表达空间。

破坏性变更(升级注意)

  • @doc 返回值变化@doc 现在返回被文档化的表达式(函数或类型),此前返回 Docs.Binding 对象;依赖旧行为的代码需要更新。
  • hash 算法与值变化hash 算法在部分类型(最显著的是 AbstractString)上发生变化,任何对受影响类型做 hash 特化的包(如第三方字符串包)需要删除旧覆盖以迁移到新算法;hash(::AbstractString) 现在为零拷贝/零成本实现,基于 codeunititerate 的正确实现。

命令行与工具链

  • --sysimage-native-code=no 选项已弃用;
  • JULIA_CPU_TARGET 环境变量新增 sysimage 关键字,可匹配或扩展构建当前系统镜像所用的 CPU target;
  • --code-coverage=all 现在会自动丢弃 sysimage 缓存,以准确测量 sysimage 内方法的覆盖率(启动与 startup.jl 之后、用户代码执行前丢弃);
  • 新增 --trace-eval 选项跟踪顶层求值表达式(支持 loc/full/no 三档),并新增 Base.TRACE_EVAL 全局控制变量,优先级高于命令行选项;
  • CI 调试模式下(如 GitHub Actions 的 debug logging 开关)会自动启用 --trace-evalJULIA_TEST_VERBOSE

多线程

新增 AbstractSpinLock 抽象类型,为自旋锁实现提供统一的抽象层,便于线程库与并行代码更一致地使用。

适用场景

  • 依赖 hash 序列化或缓存键(尤其字符串键)的代码与第三方包,升级前必须处理算法迁移;
  • 使用 @doc 做反射/文档工具的代码需同步适配返回值变化;
  • 符号化 DSL 作者可尝试新的 Unicode 运算符;
  • 升级建议:v1.13 存在两处已知破坏性变更,建议先在测试环境跑完整测试套件与依赖升级后再切换默认版本。

来源:JuliaLang/julia v1.13.0 NEWS

复制全文 生成海报 Julia 编程语言 Unicode hash 发布

推荐文章

程序员茄子在线接单