Elixir v1.14 发布,函数式编程语言

Elixir v1.14 已发布。此版本为 Elixir 的调试体验和数据类型检查带来了许多改进。此外还添加了一个新的抽象,以方便进程的分区,称为PartitionSupervisor,以及优化编译时间和错误信息。

另外,Elixir v1.14 是支持 Erlang/OTP 23 的最后一个版本。建议开发者考虑升级到 Erlang/OTP 24 或 Erlang/OTP 25。    

dbg

Kernel.dbg/2是一个新的宏,有点类似于IO.inspect/2,专门为调试而定制。

调用该宏时,它会打印传递给它的任何值,以及已调试代码本身及其位置。

下面这段代码:

  # In my_file.exs  feature = %{name: :dbg, inspiration: "Rust"}  dbg(feature)  dbg(Map.put(feature, :in_version, "1.14.0"))

会打印出:

  $ elixir my_file.exs  [my_file.exs:2: (file)]  feature #=> %{inspiration: "Rust", name: :dbg}    [my_file.exs:3: (file)]  Map.put(feature, :in_version, "1.14.0") #=> %{in_version: "1.14.0", inspiration: "Rust", name: :dbg}

dbg/2能完成更多任务。它是一个宏,所以可以理解 Elixir 代码_。当开发者将一系列|>管道传递给它时,dbg/2将打印管道每一步的值。

下面这段代码:

  # In dbg_pipes.exs  __ENV__.file  |> String.split("/", trim: true)  |> List.last()  |> File.exists?()  |> dbg()

会打印出:

  $ elixir dbg_pipes.exs  [dbg_pipes.exs:5: (file)]  __ENV__.file #=> "/home/myuser/dbg_pipes.exs"  |> String.split("/", trim: true) #=> ["home", "myuser", "dbg_pipes.exs"]  |> List.last() #=> "dbg_pipes.exs"  |> File.exists?() #=> true

PartitionSupervisor

PartitionSupervisor是一个新模块,实现了新的 supervisor 类型。partition supervisor 旨在帮助处理成为瓶颈的单个受监督进程的情况。如果该进程的状态可以轻松分区,那么可以使用PartitionSupervisor来监督该进程同​​时运行的多个隔离副本,每个副本都分配了自己的分区。

详情查看 release note

展开阅读全文
发表评论

相关文章