Erlang 不同版本内容

陈松
2023-12-01
OTP 22.0
Erlang/OTP 22是一个新的主要版本,具有新的特性和改进,同时也具有不兼容性。
要更深入地了解OTP 22发行版的亮点,您可以阅读我们的博客:
http://blog.erlang.org/OTP-22-Highlights/
潜在的不兼容
  • gen_*行为:如果通过sys:log/2,3记录服务器上的最后N条消息是活动的,则此日志包含在终止报告中。
  • reltool:一个新元素Opts现在可以包含在reltool发行版特定配置格式的rel元组中:{rel, Name, Vsn, RelApps, Opts}。
  • 由erlang:list_to_pid和类似函数创建的所有外部pid/port/ref现在都与该节点中具有相同编号的其他pid/port/ref进行比较。
  • 旧的遗留erl_interface库在otp22中被弃用,并将在otp23中删除。这不适用于ei库。
  • VxWorks在otp22中被弃用,将在otp23中删除。
ERTS:
  • 支持Erlang分发协议,将大信号的有效负载拆分为多个片段。
  • ETS选项write_concurrency现在也影响和改进了ordered_set表的可伸缩性。
  • length/1 BIF用于一次性计算列表的长度,即使列表非常长,也不会放弃。现在,当调用长列表时,它将放弃。
  • 介绍了一种新的(仍处于实验阶段)模块socket。它被实现为一个NIF,其思想是它应该“尽可能接近”OS级套接字接口。
  • 添加了NIF函数enif_term_type,通过返回给定项的类型,可以帮助避免enif_is_xyz的长序列。这对于序列化术语(如JSON编码器)的NIFs尤其有用,它可以提高性能和可读性。
Compiler:
  • 编译器被重写为在内部使用基于静态单赋值(SSA)的中间表示形式。新的中间表示使更多的优化成为可能。
  • 新的中间表示使更多的优化成为可能
    • 二进制匹配优化现在比以前适用于更多的环境。
    • 类型优化现在跨本地函数调用应用,并将比以前删除更多的冗余类型测试。
  • 可以在源文件中给出的所有编译器选项现在都可以在erlc命令行上的选项列表中给出。
  • 在OTP 22中,HiPE(本机代码编译器)没有完全发挥功能。原因是HiPE本机代码编译器不支持用于二进制匹配的新的BEAM指令。如果使用+native选项调用erlc,并且使用任何新的二进制匹配指令,编译器将发出警告并生成一个没有native代码的BEAM文件。
标准库:
  • Cover现在使用计数器模块而不是ets来更新计数器。新函数cover:local_only/0允许以受限但更快的本地模式运行cover。速度的提高将根据被覆盖编译的代码类型而有所不同,例如编译器测试套件在新覆盖下运行的速度将是原来的两倍多。
  • 通过套接字模块提供了一个简单的套接字API。这是一个低级别的API,不取代gen_[tcp|udp|sctp]。它的目的是“最终”替换inet驱动程序。它还提供了一个基本的API,便于实现TCP、UDP和SCTP之外的其他协议。已知问题;不支持Windows操作系统(目前),一个小的术语泄漏。这个特性将被归为otp22中的实验性特性。
  • SSL:现在使用新的logger API,包括日志级别和详细的调试日志记录。
  • SSL:实验使用的对TLS 1.3服务器的基本支持。
  • crypto:新的hash_info/1和cipher_info/1函数返回参数中包含散列或密码信息的映射。
 
OTP 21.3
Erlang/OTP 21.3是version 21发行版的第三个服务发行版,有一些改进和一些特性!
重点
kernel:
        标准的logger处理程序logger_std_h现在有一个新的内部特性,用于日志旋转。有关详细信息,请参阅文档。
SSL:
  • 连接和握手函数返回错误的部分原因具有更好的文档格式。这是潜在的不兼容。见文档。
  • 状态处理的重构提高了TLS应用程序的数据吞吐量,降低了CPU开销
  • 代码优化降低了加密/解密的CPU负载,特别是对于Erlang的TLS分发协议
  • 现在支持 active N
Erl_interface:
        添加了对用户提供的套接字实现插件的支持。
OTP:
  • HTML参考文档现在显示了最初引入模块和函数的OTP版本。
  • 在参考文档中没有显示比R13B04更老的OTP版本
 
OTP 21.2
SSH:
公钥方法:添加了ssh-ed25519和ssh-ed448。在OTP应用程序下需要OpenSSL 1.1.1或更高版本作为cryptolib
SSL:
ssl现在在内部使用active n来提升性能。通过设置应用程序变量可以恢复旧的活动一次行为。
ERTS,Kernel:
新的计数器和原子模块提供对可变固定字大小变量的高效操作的访问。
新模块persistent_term!。查找是在恒定的时间!没有复制Terms!
用于处理使用{active,true}或{active,N}的套接字的新pollset。由普通的调度程序投票!
 
在fds上不再有ONESHOT机制开销!仅适用于Linux和BSD。
 
OTP 21.1
SSH:
如果将OpenSSL 1.1.1或更高版本用作cryptolib,则现在支持密码'chacha20-poly1305@openssh.com'。
实现了密钥交换方法'curve25519-sha256@libssh.org','curve25519-sha256'和'curve448-sha512'。
它们都取决于用作cryptolib的OpenSSL 1.1.1或更高版本。
Crypto:
键入加密和public_key应用程序将被重新设置并更正。
用户指南中有关算法详细信息的新章节
ERTS,Kernel:
套接字选项recvtos,recvttl,recvtclass和pktoptions已在套接字模块中实现。
有关更多信息,请参阅gen_tcp,gen_udp和inet模块中的文档!
 
OTP 21
Erlang/OTP 21是一个新的主要版本,具有新特性、改进和不兼容性。
潜在的不兼容
  • 所有Corba应用程序现在都从OTP存储库中移出
  • 将创建一个新的Corba存储库 https://github.com/erlang
  • 新应用程序ftp和tftp,从inets迁移
  • 默认情况下,ssl不再支持3_DES密码套件或rsa密钥交换密码套件
  • erlang:monitor在原始节点(erl_interface、jinterface等)上将不在badarg异常时失败。相反,将创建一个监视器,但它只监视到节点的连接。
重点
Erts:
  • 增强的IO可伸缩性
  • 支持使用分布控制器进程进行替代传输、路由等
  • 压缩指令64位系统代码,低于4GB内存的20%的已加载代码
  • 使用NIFs和“脏调度程序”重写efile驱动程序,从而加快文件操作
  • non-smp VM删除
  • 为可伸缩性优化的链接和监视器
  • 操作系统:getenv/putenv现在致力于线程安全模拟。不再与libc getenv(3)同步。需要手动同步。
Compiler:
  • Misc编译器优化,包括Elixir团队的贡献,在基准测试中得到10%的改进
  • “元组调用”已从运行时系统中删除。
  • 像f({ok, Val}) -> {ok, Val}这样的代码现在被自动重写为f({ok, Val} = Tuple) -> Tuple。这减少了代码大小、执行时间和消除了GC压力。
  • stacktrace中的更多信息来自多个操作符
  • erlang:get_stacktrace/0不赞成使用,代以 try … catch C:R:Stacktrace -> …
  • 优化创建具有文字键的小映射。
  • 一个新的预编译宏' OTP_RELEASE '和预处理器指令' -if '和' -elif '
安全:
  • SSL应用程序现在支持DTLS
  • 增强了对TLS分发的支持
  • 从SSL和SSH的缺省值中删除“不安全”密码。
  • 定义一个新选项值,以方便实现exec服务器。旧选项保持兼容性,但现在在stderror上出现错误。
标准库:
  • 新的日志API, logger
  • 根据“标准”解析uri的新uri_string模块
  • 新函数:lists:search(list,fun/1) -> {ok, Value} | false
  • 更改了.erlang加载的默认行为。escript、erlc、dialyzer和typer不再加载.erlang。
 
OTP 20.3
Erlang/OTP 20.3是20个主要版本的第三个服务版本。服务版本主要包含bug修复和特性改进,但也包含一些新特性。
ssl
        增加了新的API函数,以方便密码套件的处理
erts,observer
        更多的崩溃转储信息,例如:进程二进制虚拟堆统计信息、导致GC期间mem超时的进程的完整信息、更多的端口相关信息和脏调度程序信息。
inet
        在http客户机中添加对unix域套接字的支持。
 
OTP 20.2
Erlang/OTP 20.2是20个主要版本的第二个服务版本。服务版本主要包含bug修复和特性改进,但也包含一些新特性。
crypto,ssl
    crypto API被扩展为使用存储在引擎中的私钥/公钥进行签名/验证或加密/解密操作。
    ssl应用程序提供了一个API来在TLS中使用这个新的引擎概念。
ssh
    SSH现在可以从存储在引擎中的私钥获取主机密钥。有关引擎的详细信息,请参阅crypto应用程序。
ssl
    添加了一个新的命令行选项-ssl_dist_optfile,以便在使用SSL作为分发协议时指定所需的许多选项。
stdlib
    在处理ASCII字符时提高新字符串功能的性能。
 
 
OTP 20.1
20.1的一些亮点
crypto, public_key:crypto和public_key函数签名扩展,用下面方式验证:
  • 支持rsasa - ps填充签名和盐长设置
  • X9.31 RSA填充。
  • 如NIST SP 800-57第1部分所述,用于dss签名的sha、sha224、sha256、sha384和sha512。
  • 用于rsa签名的ripemd160。
一个新的元组在 crypto:supports/0 报告支持MAC算法。
diameters
  • 添加服务选项decode_format,允许将传入的消息解码为映射,而不是记录。
  • 解码性能得到了提高。
  • 添加服务/传输选项avp_dictionary,以便更好地支持只定义AVPs的字典。
erts:将erts内部PCRE库从8.40版本升级到8.41版本。
erts、kernel、tools:现在可以在运行时在锁计数模拟器(-emu_type lcnt)中完全切换带有锁计数的分析。默认情况下,所有内容都启用了与旧行为匹配的功能,但是在禁用特定类别时,可以随意切换,而运行时开销最小。有关详细信息,请参阅lcnt:rt_mask/1上的文档。
lcnt:collect和lcnt:clear将不再阻塞运行时系统中的所有其他线程。这使得在较重的负载下运行锁计数成为可能。
erts:zlib模块已经被重构,它的所有操作现在都将得到适当的处理,允许它们在并发应用程序中自由使用。
erts,tools:添加erlang:iolist_to_iovec/1,它将iolist()转换为erlang:iovec(),后者适合与enif_inspect_iovec()一起使用。
erts:添加新的nif API函数来管理I/O队列。
添加的函数有:enif_ioq_create()、enif_ioq_destroy()、enif_ioq_enq_binary()、enif_ioq_enqv()、enif_ioq_deq()、enif_ioq_peek()、enif_inspect_iovec()、enif_free_iovec()
observer/crashdump_viewer
  • 对包含许多二进制文件的崩溃转储文件的读取进行了优化。
  • 当打开流程的详细信息视图时,将显示一个进度条。
  • cdv脚本现在将ERL_CRASH_DUMP_SECONDS设置为0,以避免从运行Crashdump查看器的节点生成新的崩溃转储。
observer
在observer中将系统统计信息和限制添加到frontpage。
public_key,ssl * *:
改进了错误传播和报告
ssh:实现了一个新的选项modify_algorithms。它支持在默认算法列表上指定更改。参见参考手册和SSH用户指南“在SSH中配置算法”一章。
tools/xref:预定义的xref analysis locals_not_used现在理解-on_load()属性,并且不报告未使用的函数。
tools/fprof:当采样多个进程并将total设置为true进行分析时,输出现在将所有涉及相同函数的调用者和被调用者条目汇总在一起。以前的行为是分别报告每个贡献条目。
 
OTP 20.0
潜在的不兼容
ERTS:
  • 不支持SMP Erlang VM,默认情况下不构建它
  • 移除弃用erlang:hash/2
  • erlang:statistics/1 使用 scheduler_wall_time现在还包含关于脏CPU调度程序的信息。
  • OTP 19.1中引入的新清除策略是强制性的,对于持有funs的进程来说,它稍微有些不兼容,见erlang: check_process_code/3。
  • 不再支持NIF库重新加载。
  • 原子现在可以包含任意unicode字符,这意味着如果OTP 20节点应该接受与另一个节点或库的连接,那么必须支持分布协议中的DFLAG_UTF8_ATOMS功能。使用分发协议的第三方库需要使用此更新。
Asn1:已删除模块和函数(asn1rt, asn1ct:encode/3 和 decode/3)
Ssh:启动守护进程的调用中的client only选项现在将失败
重点
Erts:
  • 脏调度程序在VM上启用并支持SMP支持。
  • 支持“脏”BIFs和“脏”GC。
  • erlang:garbage_collect/2用于控制次要GC或主要GC
  • 发送消息时不再复制Erlang文本。
  • 改进了大型ETS表的性能,>256条目(ordered_set除外)
  • erlang:system_info/1 atom_count和atom_limit
  • 通过在GC期间将子二进制文件转换为堆二进制文件来降低内存压力
  • enif_select将外部事件映射到消息
  • VM内部计时器的改进导致内存消耗的减少和计时器的更高效管理
Compiler:
  • 改进了复杂保护的代码生成。
  • 警告重复相同的映射键。# {' a ' = > 1, b = > 2, 'a ' = > 3}将警告为重复的键。
  • 默认情况下,当使用export_all时,现在会有一个警告。可以禁用。
  • 优化了maps模式匹配
  • 新选项确定省略路径到源+选项信息的beam文件。
  • 原子现在可以包含任意unicode字符。
  • compile:file/2有一个选项,可以在beam文件中包含额外的块。
Misc其他应用程序:
  • 显著更新了字符串模块,使用unicode支持和许多新函数
  • crypto现在支持OpenSSL 1.1
  • 优化的未命名ets表
  • gen_fsm被弃用,取而代之的是gen_statem
  • 一个新的事件管理器,用于处理Erlang中操作系统信号的子集
  • 优化集add_element、del_element和union
  • rand:jump/ 0 - 1
  • 当gen_server崩溃时,将打印客户机的stacktrace以方便调试。
  • take/2已添加到dict、orddict和gb_trees中。
  • take_any/2已添加到gb_trees中
  • erl_tar支持长路径名和新文件格式
  • asn1:新的映射选项将序列的表示形式改为映射而不是记录
  • TLS客户机将在缺省情况下调用public_key:pkix_verify_hostname/2来验证主机名
  • ssl:API中记录的DTLS,实验性的
  • ssh:改进安全性,删除和添加算法
  • 新的math:fmod / 2
 
OTP 19.3
19.3的一些亮点
crypto, ssh:对diffie-hellman-group exchange-sha*密钥交换算法的实现进行了优化,对于最慢(=最大和最安全)的组大小,优化系数高达11。
dialyzer:峰值内存消耗降低。
用二进制结构分析带有巨大字符串的模块现在要快得多。
erts:接收到的发送到beam的SIGTERM信号将向init进程生成一条“stop”消息,并很好地终止Erlang VM。这相当于调用init:stop/0。
kernel:“file”模块中获取路径列表的函数(例如:file:path_consult/2)现在将继续在路径中搜索,如果路径包含的内容不是目录。
已知接收许多消息的两个OTP进程是“rex”(由“rpc”使用)和“error_logger”。这些进程现在将把未处理的消息存储在进程堆之外,这将提高它们处理大型消息队列的能力。
public_key:新函数pkix_verify_hostname/2,3实现证书主机名检查。参见手册和RFC 6125。
public_key, ssh:ssh主机密钥指纹生成现在还接受一个算法列表,并返回相应的指纹列表。请参见public_key:ssh_hostkey_fingerprint/2和ssh:connect中的选项silently_accept_hosts。
ssl:将PEM缓存移动到专用进程,以避免使ssl管理器进程成为瓶颈。这提高了TLS连接的可伸缩性。
stdlib:添加了用于清理相对路径的filename:safe_relative_path/1。
 
OTP 19.2
19.2的一些亮点
STDLIB:新的行为gen_statem通过3个新特性得到了改进:可以为gen_statem:call/2、3、状态代码和状态超时使用旧式的非代理超时。它们是向后兼容的。已经执行了一些小的代码和文档改进,包括超时零处理的边界语义纠正。
SSL: DTLS的实验性版本。它是可运行的,但不完整,不能被认为是可靠的生产使用。要使用DTLS,请将选项{protocol, DTLS}添加到ssl:connect和ssl:listen中。
SSH:为SSH:connect扩展了silently_accept_hosts选项,使客户机能够检查SSH主机密钥指纹字符串。见SSH参考手册。
 
OTP 19.1
改进的脏调度程序支持。模块的清除不必等待所有正在进行的脏NIF调用的完成。
erts:提高了MacOS X上超时的准确性。
内核:在运行时添加net_kernel:setopts/2和net_kernel:getopts/2来控制分布套接字的选项。
用并行make (make -j)编译同一目录中的多个ASN.1模块现在应该是安全的。
httpd:在mod_esi中支持PUT和DELETE
 
OTP 19.0
此次发布的一些亮点包括:
compiler,stdlib:
  • 新的预处理器宏?FUNCTION_NAME, ?FUNCTION_ARITY
  • 新的预处理器指令-error(Term)和-warning(Term)分别导致编译错误或警告。
gen_statem: 一个新的状态机行为
mnesia_ext:mnesia外部存储解决方案的插件
crypto:在OpenSSL中使用EVP接口,从而获得更好的性能和对HW加速的支持
ssh:性能改进,使用新的gen_statem行为
ssl:增强的错误日志消息
dialyzer:对映射的支持在很大程度上扩展了类型规范语法和类型分析。
erts:
  • erlang:open_port(spawn,…)快3-5倍
  • 跟踪,广泛的改进(可伸缩性,速度,匹配发送/接收规范,支持lttng,…)
  • 肮脏的调度程序改进
  • 每个进程对message_queue的可配置处理
  • 快速加载多个模块
  • max_heap_size 进程标记
erts/kernel:
  • Unix域套接字的实验支持
  • 例子: gen_udp:open(0, [{ifaddr,{local,"/tmp/socket"}}])
还有更多……
 
OTP 18.3
此次发布的一些亮点包括:
关于可运行和活动进程和端口的新统计信息。
调用erlang:statistics使用total_run_queue_length | run_queue_lengths | total_active_tasks | active_tasks。
时间偏差的改进:dbg:p/2和erlang:trace/3使用monotonic_timestamp | strict_monotonic_timestamp。
为heart引入了一个验证回调。
已经不赞成sasl中的模块重载。
 
OTP 18.2.1
这个补丁包包含了新的windows二进制文件
由于在处理路径在windows上的一个错误,以下将不会工作的路径包含一个空间:
ct_run
dialyzer
erlc
escript
typer
这还包含一个针对FreeBSD启用HiPE的模拟器的修复。
 
OTP 18.2
此次发布的一些亮点包括:
ssl:为会话缓存添加可配置的上限。
erts:添加函数enif_getenv以可移植的方式从NIFs读取OS环境变量。
kernel:将{line_delim, byte()}选项添加到inet:setopts/2和decode_packet/3
ssh:实现了用于ssh的“ecdsa-sha2-nistp256”、“ecdsa-sha2-nistp384”和“ecdsa-sha2-nistp521”签名算法。看到RFC 5656。
ssh:ssh:daemon选项dh_gex_groups被扩展为读取用户提供的具有生成器-模数对的ssh模块文件。该文件采用openssh格式。
 
OTP 18.1
此次发布的一些亮点包括:
ssl:添加将ssl /TLS连接降级为tcp连接的可能性,并将套接字控制权交还给用户进程。
ssh:实现了以下新的密钥交换算法:'ecdh-sha2-nistp256'、'ecdh-sha2-nistp384'、'ecdh-sha2-nistp521'、'diffie-hellman-group14-sha1'、'diffie-hellman-group exchange-sha1'和'diffie-hellman-group exchange-sha256'。这大大提高了安全级别。
kernel、stdlib、sasl:引入了一种限制内置错误日志事件将生成的文本数量的机制。它对于限制日志文件的大小和用于生成它们的CPU时间都很有用。
这个机制是实验性的,因为它可以根据反馈进行更改。请参阅内核应用程序中的配置参数error_logger_format_depth。
 
OTP 18.0
此次发布的一些亮点包括:
从18.0开始Erlang/OTP在APL 2.0 (Apache Public License)下发布
erts:时间功能已经扩展。这包括一个新的API for time,以及“time warp”模式,当系统时间发生变化时,这种模式会改变行为。强烈建议您使用新的API,而不是基于erlang:now/0的旧API。erlang:由于/0是一个可伸缩性瓶颈,所以不推荐使用它。
有关更多信息,请参阅ERTS用户指南的时间和时间校正章节。这里有一个链接http://www.erlang.org/doc/apps/erts/time_correction.html
erts:除了API的变化和时间间隔模式之外,还在时间管理方面进行了大量的可伸缩性和性能改进。例子有:
  • 特定于调度程序的计时器轮,
  • 特定于调度程序的BIF计时器管理,
  • 在支持它的操作系统上并行检索单调时间和系统时间。
erts:以前引入的“即时检查I/O”特性现在默认启用。
erts/compiler:增强了对映射的支持。新的大映射在内部使用了HAMT(哈希数组映射Trie)表示,这使它们更加高效。现在还支持将变量作为映射键。 
dialyzer: -dialyzer() 属性可用于抑制警告
在模块中指定函数或警告选项。
它还可以用于请求模块中的警告。
ssl:删除对ssl -3.0的默认支持,并为TLS-1.0添加填充检查(由于贵宾犬的漏洞)。
ssl:删除对RC4密码套件的默认支持,因为它们被认为太弱。
stdlib:允许maps用于监督者标志和子规范
stdlib:ets新增函数:
take/2 工作原理与ets:delete/2相同,但也返回被删除的对象。
ets:update_counter/4 使用默认对象作为参数。
 
OTP 17.5
此次发布的一些亮点包括:
ERTS:添加了用于设置进程字典初始大小的命令行参数选项。
Diameter:可为Diameter消息配置incoming_max len和string_decode
bug修复和应用程序中的一些小功能,如compiler、common_test、crypto、debugger、eldap、erts、hipe、inets、ssh、ssl……
 
OTP 17.4
Erlang/OTP 17.4是17轨道上的一个服务版本,主要修复了bug,但它也包含了一些新特性和特性改进。
此次发布的一些亮点包括:
eldap:几乎所有TCP选项都可以在eldap:open/2调用中给出。
ssh:添加API函数ptty_alloc/3和ptty_alloc/4,以分配伪tty。
ssl:处理可能向客户机发送空SNI扩展名的服务器。
 
OTP 17.3
Erlang/OTP 17.3是17轨道上的一个服务版本,主要修复了bug,但它也包含了一些新特性和特性改进。
此次发布的一些亮点包括:
erts:引入了enif_schedule_nif(),它允许将长时间运行的NIF分解为单独的NIF调用,而无需使用用Erlang编写的包装器函数
common_test:添加了对运行Quickcheck的实验支持,以及来自common_test套件的PropEr测试。ssh和inets应用程序套件中的使用示例
修正了asn1、erts、kernel、stdlib、diameter、ssh、mnesia、ssl、jinterface等应用程序中的bug和一些次要的新特性
与多核可伸缩性相关的一些功能是作为EU FP7发布项目的一部分开发的。
 
OTP 17.1
Erlang/OTP 17.1是17轨道上的一个服务版本,主要修复了bug,但它也包含了许多新特性和特性改进。
此次发布的一些亮点包括:
crypto:将aes_cfb8 cypher添加到crypto:block_encrypt和block_decrypt。
diameter:为CEA、DWA和DPA添加结果代码计数器。
erts:在erlang和二进制模块中内置的以下函数现在可以进行适当的reductions,超出reductions会出让:
binary_to_list/1, binary_to_list/3, bitstring_to_list/1, list_to_binary/1,iolist_to_binary/1,list_to_bitstring/1,binary:list_to_bin/1
hipe:在hipe本机代码编译器中处理maps指令get_map_elements、put_map_assoc、put_map_exact。
mnesia:为具有大量锁的事务插入锁的时间大大减少。
ssh:选项max_sessions添加到ssh:daemon/{2,3}。
stdlib:Add maps:get/3 to maps模块。如果键在映射中不存在,函数将返回提供的默认值。
 
OTP 17.0
Erlang/OTP 17.0是一个新的主要版本,有新的特性、特性改进以及一些不兼容的地方。有关详细信息,请参阅自述文件和文档。
此次发布的一些亮点包括:
  • Erlang/OTP已被移植到实时操作系统OSE。
  • maps,一种新的字典数据类型(实验性的)
  • 一个更自然的映射,从ASN.1八位串和位串到Erlang类型,以及其他ASN.1的改进和优化
  • TCP、UDP和SCTP的{active, N}套接字选项
  • 一个新的(可选的)调度程序使用平衡机制
  • 默认情况下,所有ERTS内部内存分配器都启用了内存载体的迁移
  • 提高垃圾收集保留率
  • 实验性的“脏调度程序”功能
  • Funs现在可以命名了
  • 其他unicode支持增强
  • 介绍了一种新的OTP应用方案
您可以在README文件中找到更详细的信息。
 
OTP R16B03-1
这是一个服务版本,它纠正了R16B03版本中发现的一些问题。更正的是:
  • 在预构建的Windows安装程序中缺少ODBC应用程序
  • SSL应用程序中的3个更正:
    • 添加server_name_indicator选项缺少的验证,并对其显式使用进行测试。
    • 如果可能的话,服务器模式下的椭圆曲线选择现在正确地选择客户端建议的曲线。
    • 服务器没有表明在TLS扩展处理期间支持安全的重新协商。
  • 在语法工具的应用中引入了一个bug,它破坏了本地函数的恢复。现在纠正过来了(多亏了安东尼·拉明)
  • wx - 解决了在关闭窗口时导致调试器崩溃的问题。修复了Mac上的静态链接。
  • xmerl - 修正了使用xmerl_sax_parser:stream/2函数时,当下一个文档的头出现在缓冲区中时,sax-parser中的一个问题。

转载于:https://www.cnblogs.com/sunbin-hello/p/11499070.html

 类似资料: