Clojure - Clojure 1.12.0

主要观点:介绍 Clojure 1.12.0 中的多个新特性和改进。
关键信息:

  • 添加库用于交互使用add-lib等函数可在不重启 JVM 的情况下添加库,用于开发时的交互,新函数仅用于开发时的 repl 交互,通过clojure.repl.deps实现,库解析和下载由tools.deps提供。
  • 在进程外调用工具函数clojure.tools.deps.interop/invoke-tool可在进程外调用工具函数,add-lib功能基于此,可用于构建或调用自己的工具。
  • 启动和控制外部进程:新增clojure.java.process命名空间,提供更易用的进程控制功能,如startexec
  • 方法值:可将 Java 方法作为普通函数在值上下文中使用,编译器会自动生成包装函数,可通过:param-tags指定方法签名。
  • 限定方法Class/method等形式用于指定方法的类,在非调用位置有值语义,:param-tags可用于解决重载方法。
  • :param-tags元数据:用于为限定方法指定签名,可通过新的元数据读取语法^[tag …​]添加。
  • 数组类语法:可使用ComponentClass/#dimensions形式的符号引用数组类,可作为类型提示和值。
  • 函数式接口:Clojure 开发者可通过传递匹配arity的函数调用接受函数式接口的 Java 方法,可通过let绑定显式强制转换。
  • Java Supplier 互操作IDeref实现了Supplier接口,方便调用接受Supplier的方法。
  • 与流的互操作:提供stream-seq!等函数以惯用法与流互操作,这些操作是终端流操作。
  • PersistentVector 实现 SpliterablePersistentVector提供自定义的 spliterator 支持并行性,性能提升。
  • 高效的droppartition:添加IDrop接口用于高效的drop操作,新增partitionv等函数用于高效的分区操作。
  • Var 实习策略:收紧了 Var 实习策略,避免 interned vars 被替换,解决了与 Clojure 1.11.0 相关的问题。
阅读 15
0 条评论