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。


相關推薦

2022-10-26

Gleam 是一种类型安全且可扩展的编程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。Gleam v0.24 现已发布,具体更新内容包括: In-project Elixir support Gleam 构建工具一直支持编译用Gleam或Erlang编写的模块,但现在它也支持Elixir模块。

2022-09-21

Gleam 是一种类型安全且可扩展的编程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。 最近发布的 0.23 版本增加了新特性,以及其他优化。 支持 Elixir Gleam 在 Erlang 虚拟机上与各种其他优秀编程语言一起运行,因此开发团

2022-10-19

Ash Framework 2.0 已正式发布。 Ash Framework 是用于构建 Elixir 应用程序的声明式、面向资源和可扩展的框架。在 Ash 中,资源可以对任何东西提供模型,如数据库表、外部 API,甚至是自定义代码。 Ash 提供了丰富而广泛的工具集,用

2022-07-06

v6.0.1 是一个包含增强功能的补丁版本,修复了涵盖 20 种编程语言的错误。有关更改的完整列表,请参阅 "Pull Request" tab。一些重点更新内容如下: General 用于标记源目录并省略 gradle 包装器的 Idea plugin #12711 修复 came

2022-11-29

Gleam 是一种类型安全且可扩展的编程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。 最近发布的 0.25 版本引入了一项期待已久的新特性:use表达式(useexpressions)。 官方介绍称,use表达式是一种语法糖,它将所有后续表达式转换

2023-08-30

京站,聊聊 AI 大模型与底层技术 >>> Crumb 是最新开源的编程语言,发布后在 Reddit 的编程版块引起了广泛讨论。 正如标题所言,Crumb 是一门函数式编程语言,且没有“关键字”,一切皆函数 (0 keywords, everything is a function.)。其

2022-08-19

Lux 0.7 已发布,这是一门函数式、具备静态类型的 Lisp 编程语言,支持在 Java 虚拟机、JavaScript、Python、Lua 和 Ruby 解释器上运行。 Lux 0.7 主要变化 新增 内联函数 支持将配置参数从构建描述 (build description) 传递给编译器 基

2023-01-17

务器领域,这次演讲内容涉及的主题也很广泛,涵盖了从编程语言如何演变到项目如何失败的方方面面。 Gosling 谈到了 Java 对于 AWS 的重要性。据他介绍,AWS 许多核心功能都采用 Java 实现,而且它拥有相当庞大的 Java 工程师团

2023-04-07

Gleam 是一种类型安全且可扩展的编程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。 最新发布的 0.28 包含以下变化: 改进语言服务器 (Language server) Gleam 0.21 引入了语言服务器,不过这个初始版本的功能有限。此后开发团队

2023-02-01

Gleam 是一种类型安全且可扩展的编程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。 最近发布的 0.26 版本引入了增量编译。该项特性改进了构建工具,仅在必要的情况下编译所需模块,而不是整个包,从而显著提升 Gleam 编译器

2023-03-07

Gleam 是一种类型安全且可扩展的编程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。 最新发布的 0.27 包含以下变化: 支持在use 表达式 (useexpressions)中使用模式 Gleam v0.25 引入了use表达式,该功能有助于避免 Gl

2023-04-10

用户界面 从任何语言访问 API,包括 C/C++, C#, Clojure, D, Elixir, Go, Haskell, Java, JavaScript/Node.js, Julia, Lisp, Lua, Perl, Python, Racket, Ruby, Rust 嵌入式、可编写脚本的终端仿真器 异步作业控制 多个编辑器实例之间的共享数据(shada)。

2023-04-08

TIOBE 公布了 2023 年 4 月的编程语言排行榜。 受市场需求影响,高性能编程语言正蓬勃发展。鉴于此,C 和 C++ 在 top 10 中均保持着不错的表现;尤其是 C++,在摘得了 2022 年度编程语言增势不减,其增幅高达 4.68%

2022-08-20

还有 TypeScript、Python 和 Go,另外还有社区维护的 .NET 和 Elixir 的客户端库。 通讯协议。EdgeDB 的二进制通讯协议版本升级到 1.0 了,带来了多处改进: 彻底无状态化:多个并发会话可以共享同一个无状态连接,我们甚至还可以