【Erlang.org导航】下载文档社区新闻博客安全EEP关于搜索【Erlang/OTP 29.0资讯】2026 年 5 月 13 日 · 作者Henrik NordOTP 29.0Erlang/OTP 29 是一个全新的主要版本它带来了新特性、改进同时也存在一些不兼容性。以下是部分新特性的亮点非常感谢所有贡献者亮点增加了对 -unsafe 属性的支持用于标记不安全使用的函数。现在编译器默认会对调用 Erlang/OTP 中已知始终不安全的函数发出警告。此外xref 现在可用于查找对不安全函数以及缺乏文档的函数的调用。SSH 守护进程现在默认禁用 shell 和 exec 服务遵循“默认安全”原则。这可以防止经过身份验证的用户执行任意 Erlang 代码除非进行了明确配置。启动 SSH 守护进程时SFTP 子系统不再默认启用。在 SSL 中后量子混合算法 x25519mlkem768 现在是默认配置中最优先的密钥交换组。io_ansi 模块允许用户向终端发送虚拟终端序列也称为 ANSI 序列以便为文本添加颜色或样式或者创建功能齐全的终端应用程序。新的 ct_doctest 模块允许用户测试 Erlang 模块文档和文档文件中的示例。ignore_xref 属性一直由 Rebar3 等构建工具作为后分析过滤器处理。在这个版本中xref 本身进行过滤确保所有出于任何目的调用 xref 的工具都能依赖这些声明正常工作。常规在 Erlang 系统的默认代码路径中当前工作目录.现在位于最后而不是最初的位置。不再有适用于 Windows 的 32 位 Erlang/OTP 版本。新语言特性实现了 EEP-79 中描述的原生记录。原生记录是一种类似于传统基于元组的记录的数据结构但它是一种真正的数据类型。在 Erlang/OTP 29 以及可能的 Erlang/OTP 30 中原生记录都被视为实验性的。新的 is_integer/3 守卫 BIF 可以轻松验证一个值是否为整数并且是否在特定范围内。例如is_integer(I, 0, 100)。现在支持根据 EEP 78 实现的多值推导。例如[-I, I || I - [1, 2, 3]] 将生成 [-1,1,-2,2,-3,3]。通过启用 compr_assign 特性现在可以在推导中绑定变量。例如[H || E - List, H erlang:phash2(E), H rem 10 : 0]。编译器和 JIT 改进在 compile 模块的文档中现在有一个为运行在 BEAM 上的语言实现者提供建议的部分。JIT 现在为匹配或创建包含多个小端字节序段的二进制文件生成更好的代码。编译器将为不依赖生成器的常量值的映射推导生成更高效的代码。例如#{K 42 || K - List}。编译器警告默认启用了几个新的编译器警告。对于每个这样的警告都有一个选项可以禁用它。使用 catch 运算符该运算符已被弃用很长时间时现在会发出警告。建议使用 try...catch也可以使用 nowarn_deprecated_catch 选项禁用此警告。当从子表达式导出变量时现在会发出警告。例如file:open(File, AllOpts [write, {encoding,utf8}])。可以使用 nowarn_export_var_subexpr 编译器选项禁用此警告。编译器现在会对使用 and 和 or 运算符发出警告。可以使用 nowarn_obsolete_bool_op 编译器选项禁用此警告。编译器现在会对 {a,B} {X,Y} 这样的匹配发出警告这种匹配最好写成 {aX,BY}。可以使用 nowarn_match_alias_pats 选项禁用此警告。长期以来使用过时的守卫测试如 list(L) 而不是 is_list(L)会发出警告。在 Erlang/OTP 30 中旧的守卫将从语言中移除。STDLIB新增了用于随机排列列表的函数rand:shuffle/1 和 rand:shuffle_s/2。SSH默认的密钥交换算法现在是 mlkem768x25519-sha256这是一种将 ML-KEM-768 与 X25519 相结合的混合量子抗性算法。它可以抵御经典和量子计算机的攻击同时在对等方不支持时通过自动回退到其他算法来保持向后兼容性。有关新特性和潜在不兼容性的完整列表和更多详细信息请参阅 README。下载 Erlang/OTPErlang/OTP 在 Github 上