当前位置: 首页 > news >正文

Erlang/OTP 29.0 官宣!带来新特性、改进及部分不兼容性

【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 上
http://www.rkmt.cn/news/1297673.html

相关文章:

  • 5分钟掌握Snap.Hutao:免费开源的Windows原神桌面工具箱完全指南
  • ROFL-Player:英雄联盟回放时光机,一键穿越所有版本
  • 深入CANopen SDO:从报文解析到实战应用
  • 球谐函数:从拉普拉斯方程到旋转等变性的数学之旅
  • 如何用RPG Maker解密工具轻松解锁游戏资源?
  • 在Windows电脑畅享酷安社区:Coolapk-UWP桌面客户端全面指南
  • 关于最长上升子序列(LIS)
  • FPGA开发实战:如何为不同应用场景选择通信协议与接口
  • Google Voice 虚拟号码:零门槛获取与全场景应用指南
  • 用树莓派4B打造你的第一台开源智能车机:AGL车载系统从编译到上电全记录
  • 如何在三分钟内找回Chrome浏览器保存的所有密码?
  • 从逻辑门到加法器:Verilog实现半加器与全加器的三种抽象层级
  • 洞察 | (二)视觉映射、感知优化与色彩工程
  • 硬件开发必知:如何正确获取与使用VID/PID标识符
  • 告别玄学调参:在i.MX8平台上手把手配置gPTP硬件时间戳(附Linux内核驱动分析)
  • 基于Circuit Playground Express的互动壁炉:NeoPixel火焰与伺服电机控制实战
  • 基于Raspberry Pi Pico W与CircuitPython的云端AI文本生成器实现
  • cliclick 安全实践:正确配置macOS辅助功能权限
  • Linux 下用火焰图进行性能分析
  • ssh 使用问题汇总
  • Git Commit Message 规范
  • 如何快速配置英雄联盟自动化工具:5个高效技巧指南
  • Reset-Windows-Update-Tool架构解析:Windows更新故障的深度修复方案
  • XCA证书管理器插件开发指南:如何扩展自定义证书功能
  • ME6206A 系列低压差线性稳压器
  • Allegro Route Keepout 的隐藏玩法:别急着删,教你一键开启‘布线许可’模式
  • Rust异步任务取消机制:从协作式取消到结构化并发实践
  • 为什么你的low-poly图总缺“设计感”?权威解析3种典型失败案例——基于Adobe Color Lab 2024色彩熵值实测数据
  • OCaml 技术突破:从云端到太空,开启卫星安全通信新时代!
  • 别再只会用@PreAuthorize了!SpringSecurity权限控制的5种实战姿势与避坑指南