潜在的不兼容性
- Erlang 运行时系统
- 已弃用的
erlang:get_stacktrace/0
BIF 现在返回一个空列表,而不是堆栈跟踪。erlang:get_stacktrace/0
计划在 OTP 24 中删除。
- 已弃用的
- ssl
- 完全删除了对 SSL 3.0 的支持。
- TLS 1.3 已添加到默认支持版本列表中。
- erl_interface
- 已删除
erl_interface
的已弃用部分(erl_interface.h
以及几乎所有以erl_
为前缀的 C 函数)。
- 已删除
- stdlib
- 在 OTP-23.2 中,uri_string 的错误修复导致百分比编码字符的解码可能与之前不同。
有关完整列表,请参阅 OTP 23.0 - 潜在的不兼容性。
亮点
ssh
- OpenSSH 6.5 引入了一种新的密钥文件表示形式,称为
openssh-key-v1
。现在支持此功能,但处理加密密钥除外。 - 现在可以在 .config 文件中完成算法配置。例如,这对于启用默认情况下禁用的算法非常有用,无需更改代码。
- 实现了对 TCP/IP 端口转发(也称为隧道或 tcp-forward/direct-tcp)的支持。在 OpenSSH 客户端中,这对应于选项 -L 和 -R。
ssl
- 对中间盒兼容模式的支持使 TLS 1.3 握手看起来更像 TLS 1.2 握手,并增加了通过传统中间盒成功建立 TLS 1.3 连接的可能性。
- 支持使用 Edward 曲线进行密钥交换以及在签名验证中使用 PSS-RSA 填充
语言和运行时
- 在二进制匹配中,现在允许要匹配的段的大小为保护表达式 (EEP-52)
- 当使用映射进行匹配时,键现在可以是保护表达式 (EEP-52)。
- 允许在数字文字中使用下划线以提高可读性。例如:
123_456_789
、16#1234_ABCD
。 - shell 中的新函数用于显示 Erlang 模块、函数和类型的文档。这些函数是
h/1,2,3
- 打印Module:Function/Arity
的文档。ht/1,2,3
- 打印Module:Type/Arity
的类型文档。
构建 Erlang/OTP 文档时,嵌入式文档将作为 docchunk (EEP 48) 创建。
- 我们用于构建 Windows 包的工具链已升级,包含新的 C++ 编译器、Java 编译器、OpenSSL 库和 wxWidgets 版本。我们现在使用 WSL(用于构建的 Windows Linux 子系统),这使得处理构建环境更加容易。
网络
- 扩展了在不依赖 EPMD 的情况下运行 Erlang 分布的可能性。为了实现这一点,在 inet 分布中添加了几个新的选项。
-dist_listen false
设置分布通道,但不监听传入连接。-erl_epmd_port Port
配置内置 EPMD 客户端应返回的默认端口。
- 已实现第一个实验性的
socket
后端到gen_tcp
和inet
。gen_udp
和gen_sctp
将紧随其后。将{inet_backend, socket}
作为listen()
或connect()
的第一个选项,可以轻松地为现有代码尝试此方法 - 内核中一个名为
erpc
的新模块,它实现了rpc
模块提供的操作的增强子集。增强是指它可以区分返回值、引发的异常和其他错误。erpc
的性能和可扩展性也优于原始rpc
实现。这是通过利用新引入的spawn_request()
BIF 来实现的。rpc
模块也通过在可能的情况下利用erpc
从这些改进中获益。 - 可扩展性和性能改进以及有关分布式生成操作的新功能。
- 引入了带有分布式命名进程组的新实现的模块
pg
。旧模块pg2
已弃用,并计划在 OTP 24 中删除。