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-09-21

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

2022-08-19

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

2022-07-06

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

2022-08-20

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

2022-09-19

deepin 宣布了自研的全新通用目的编程语言:Unilang,其仓库提供了文档和作为参考实现的解释器。 deepin 表示,目前桌面应用开发虽然有许多选项,例如 Qt、Electron、PySide 和 Flutter 等。但它们存在各自的优势和不足。 据介绍,

2022-08-30

炎炎盛夏,全球变暖,一周年之际,Zadig 团队在浙西莫干山发版,正式推出 Zadig v1.14.0。 经过一年的发展,Zadig 产品的完整性、易用性、扩展性上都得到了充分的发展,和社区小伙伴一起,茁壮成长。本次版本推出更为强大的

2022-08-18

它的设计目之一是为了提供一种用于创造设计与实现其它编程语言的平台,Racket 被用于脚本程序设计、通用程序设计、计算机科学教育和学术研究等不同领域。 Racket 有一个实现平台,包含了运行环境、函数库、即时编译器 (JIT

2022-08-12

)v1.1.0 已经发布,这是专为高性能计算机图形学设计的编程语言。 具体更新内容如下: 新的功能 量化数据类型 高分辨率模拟可以提供出色的视觉质量,但通常受到板载 GPU 内存容量的限制。此版本添加了量化数据类型,

2022-05-19

Erlang/OTP 25.0 已发布,这是一个新的重要版本,带来了新特性、改进和修复,当然也包含一些不兼容的改动。 Erlang 是一种通用的并发函数式程序设计语言。Erlang 也可以指 Erlang/OTP 的通称,开源电信平台 (OTP) 是 Erlang 的常用执

2022-07-26

多举办的 CppNorth 大会上宣布,正式开源谷歌内部打造的编程语言:Carbon,并称 Carbon 是 C++ 的继任者(目前处于实验性阶段)。 Chandler 列举了当今流行编程语言演进的一些例子,比如:Java 到 Kotlin、Objective-C 到 Swift、JavaScript

2022-09-23

前已通过 23.3.4.15, 24.3.4.2 和 25.0.2 补丁在受支持的 track 上发布修正。该漏洞也可能存在于较旧的 OTP 版本中们建议受影响的用户在各自的 track 上升级到这些版本之一或更高版本,OTP 25.1 将是一个更好的选择。受影响的是那些直接

2022-09-13

Swift 5.7 现已发布,该版本包括对语言和标准库的主要添加、对编译器的增强以提供更好的开发人员体验、对 Swift 生态系统中的工具(包括 SourceKit-LSP 和 Swift 包管理器)的改进、改进的 Windows 支持等等。 语言和标准库 Swift 5.7

2022-08-24

Taro 3.5.4 现已发布。Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信 / 京东 / 百度 / 支付宝 / 字节跳动 / QQ 小程序 / H5 等应用。具体更新内容如下: 特性 H5 Swiper 组件 onChange 事件触发时机优化

2022-05-19

Spring Framework 6.0.0 发布了第 4 个里程碑版本,此版本包含所有针对 5.3.20 的修复补丁,以及特定于 6.0 分支的 39 项修复和改进。 主要变化 为核心直接添加原生提示 #28442 将 byte[] 添加到 SimpleJmsHeaderMapper 中支持的类型 #28421