皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Erlang/OTP 26.0 发布

Erlang/OTP 26.0 发布

Erlang/OTP 26是一个新的主要版本,具有新的功能、改进以及一些不兼容的地方。

有关新功能、错误修复和潜在不兼容的细节,请参见Erlang 26.0 README或Erlang/OTP 26.0下载页面。

以下是该版本的一些亮点:

还有一篇关于这些亮点的Blogpost。

解析工具 #
Leex已经扩展了可选的列号支持。
Stdlib #
模块列表中的枚举函数系列已经扩展了 enumerate/3,它允许提供一个步骤值。
更新Unicode到15.0.0版本。
proc_lib:start*/* 在启动的进程失败时变得同步。这要求失败的进程使用新的函数 proc_lib:init_fail/2,3 或 exits 来表示失败。所有的OTP行为都已被修复,以做到这一点。
外壳 #
在Erlang shell中,有很多新的功能和改进:

变量、记录名称、记录字段名称、映射键、函数参数类型和文件名的自动完成。
在shell中打开外部编辑器来编辑当前表达式。
在shell中定义记录(含类型)、函数、规格和类型。
新的终端 #
TTY/终端子系统已被重写。Windows用户会注意到,erl.exe的功能与普通Unix shell相同,而werl.exe只是erl.exe的一个符号链接。这使得Windows的Erlang终端体验与Unix的相同。
编译器和JIT优化:
创建和匹配具有固定尺寸段的二进制文件已被优化。

对UTF-8段的创建和匹配进行了优化。

优化了对二进制文件的追加。

编译器和JIT现在能生成更好的代码来创建小地图,其中所有的键都是在编译时已知的字词。

由于上述优化,base64模块的性能得到了显著提高。例如,在x86_64系统上,使用JIT的编码和解码都比在Erlang/OTP 25中快了三倍。

地图 #
EEP 58中建议的地图理解功能现在已经实现。

通过改变原子键的内部排序顺序,一些地图操作得到了优化。这改变了小地图中的原子键被打印并由 maps:to_list/1 和 maps:next/1 返回的顺序(未记录)。 新的顺序是不可预测的,可能会在 Erlang VM 的不同调用中发生变化。

引入新函数maps:iterator/2,用于创建一个interator,以确定的顺序返回地图元素。io:format()中的格式字符串也有新的修饰符k和K,以支持有序打印地图元素。

Dialyzer #
添加了EEP 61中引入的新的内置类型dynamic(),PR引入了EEP 61改进对渐进式类型检查器的支持。

Dialyzer有一个新的增量模式,在运行Dialyzer时给出-incremental选项就可以调用。这个新的增量模式可能会在未来的版本中成为默认模式。

杂项 ERTS, Stdlib, Kernel, Compiler #
多重时间扭曲模式现在被默认为启用。这假定所有在系统上执行的代码都是时间扭曲安全的。

在 NIF 接口中支持 UTF-8 原子和字符串,包括新函数 enif_make_new_atom、enif_make_new_atom_len 和 enif_get_string_length。

BIF 的 min/2 和 max/2 现在允许在守护和匹配规范中使用。

改进了选择性接收优化,现在可以对从其他函数返回的引用启用这种优化。这大大提高了 gen_server:send_request/3, gen_server:wait_response/2 以及类似函数的性能。

新的跟踪功能 call_memory。类似于call_time跟踪,但不是测量被跟踪函数的累积时间,而是测量被跟踪函数所消耗的累积堆空间。它可以用来比较不同的函数对触发垃圾收集的贡献有多大。

为了加载使用该功能的模块,不再需要在运行时系统中启用某个功能。在编译器中,只要在编译时启用该功能即可。

inet:setopts/2 有三个新的选项:reuseport、reuseport_lb 和 exclusiveaddruse。

修正了当使用 JIT 时,-fno-omit-frame-pointer 会被应用于所有的 Erlang VM,以便 perf 等工具可以抓取进程堆栈。

在列表模块中,zip 系列函数现在可以接受选项,以允许处理不同长度的列表。

增加了 zip:zip_get_crc32/2 函数,用于从打开的 ZIP 归档文件中获取 CRC32 校验码。 通过缓存回调函数优化了 gen_server

为RFC6891更新了Erlang DNS解析器inet_res和辅助模块;以处理带有DNSSEC OK(DO)位的OPT RR。

引入了application:get_supervisor/1。

缓存OTP启动代码路径,以限制在模块查找过程中被访问的文件夹数量。可以用-cache_boot_path false禁用。

SSL #
将客户端的默认验证选项改为verify_peer。请注意,这使得它必须同时提供可信的CA证书或明确地将验证设置为verify_none。这也适用于使用TLS-1.3之前的TLS版本中定义的所谓的匿名测试密码套件。

对内核TLS(kTLS)的支持,已经被添加到SSL应用程序中,对于TLS分布(-proto_dist inet_tls),SSL选项{ktls, true}。
改进了错误检查和对ssl选项的处理。
通过降低最大握手大小,缓解了大型证书链的内存占用。这应该不会影响常见的情况,如果需要,可以配置成更高的值。

出于安全考虑,SHA1和DSA算法不再是默认值。

增加 use_srtp hello 扩展的编码和解码,以方便 DTLS 用户实现 SRTP 功能。
更多关于新功能和潜在不兼容的细节,请参见readme

非常感谢所有的贡献者!

此版本和以前版本的下载链接见这里

https://www.erlang.org/downloads

转自 Erlang/OTP 26.0 Release – Erlang/OTP