Erlang 不同版本内容
- 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中删除。
- 支持Erlang分发协议,将大信号的有效负载拆分为多个片段。
- ETS选项write_concurrency现在也影响和改进了ordered_set表的可伸缩性。
- length/1 BIF用于一次性计算列表的长度,即使列表非常长,也不会放弃。现在,当调用长列表时,它将放弃。
- 介绍了一种新的(仍处于实验阶段)模块socket。它被实现为一个NIF,其思想是它应该“尽可能接近”OS级套接字接口。
- 添加了NIF函数enif_term_type,通过返回给定项的类型,可以帮助避免enif_is_xyz的长序列。这对于序列化术语(如JSON编码器)的NIFs尤其有用,它可以提高性能和可读性。
- 编译器被重写为在内部使用基于静态单赋值(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函数返回参数中包含散列或密码信息的映射。
- 连接和握手函数返回错误的部分原因具有更好的文档格式。这是潜在的不兼容。见文档。
- 状态处理的重构提高了TLS应用程序的数据吞吐量,降低了CPU开销
- 代码优化降低了加密/解密的CPU负载,特别是对于Erlang的TLS分发协议
- 现在支持 active N
- HTML参考文档现在显示了最初引入模块和函数的OTP版本。
- 在参考文档中没有显示比R13B04更老的OTP版本
- 所有Corba应用程序现在都从OTP存储库中移出
- 将创建一个新的Corba存储库 https://github.com/erlang
- 新应用程序ftp和tftp,从inets迁移
- 默认情况下,ssl不再支持3_DES密码套件或rsa密钥交换密码套件
- erlang:monitor在原始节点(erl_interface、jinterface等)上将不在badarg异常时失败。相反,将创建一个监视器,但它只监视到节点的连接。
- 增强的IO可伸缩性
- 支持使用分布控制器进程进行替代传输、路由等
- 压缩指令64位系统代码,低于4GB内存的20%的已加载代码
- 使用NIFs和“脏调度程序”重写efile驱动程序,从而加快文件操作
- non-smp VM删除
- 为可伸缩性优化的链接和监视器
- 操作系统:getenv/putenv现在致力于线程安全模拟。不再与libc getenv(3)同步。需要手动同步。
- 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。
- 支持rsasa - ps填充签名和盐长设置
- X9.31 RSA填充。
- 如NIST SP 800-57第1部分所述,用于dss签名的sha、sha224、sha256、sha384和sha512。
- 用于rsa签名的ripemd160。
- 添加服务选项decode_format,允许将传入的消息解码为映射,而不是记录。
- 解码性能得到了提高。
- 添加服务/传输选项avp_dictionary,以便更好地支持只定义AVPs的字典。
- 对包含许多二进制文件的崩溃转储文件的读取进行了优化。
- 当打开流程的详细信息视图时,将显示一个进度条。
- cdv脚本现在将ERL_CRASH_DUMP_SECONDS设置为0,以避免从运行Crashdump查看器的节点生成新的崩溃转储。
- 不支持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功能。使用分发协议的第三方库需要使用此更新。
- 脏调度程序在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内部计时器的改进导致内存消耗的减少和计时器的更高效管理
- 改进了复杂保护的代码生成。
- 警告重复相同的映射键。# {' a ' = > 1, b = > 2, 'a ' = > 3}将警告为重复的键。
- 默认情况下,当使用export_all时,现在会有一个警告。可以禁用。
- 优化了maps模式匹配
- 新选项确定省略路径到源+选项信息的beam文件。
- 原子现在可以包含任意unicode字符。
- compile:file/2有一个选项,可以在beam文件中包含额外的块。
- 显著更新了字符串模块,使用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
- 新的预处理器宏?FUNCTION_NAME, ?FUNCTION_ARITY
- 新的预处理器指令-error(Term)和-warning(Term)分别导致编译错误或警告。
- erlang:open_port(spawn,…)快3-5倍
- 跟踪,广泛的改进(可伸缩性,速度,匹配发送/接收规范,支持lttng,…)
- 肮脏的调度程序改进
- 每个进程对message_queue的可配置处理
- 快速加载多个模块
- max_heap_size 进程标记
- Unix域套接字的实验支持
- 例子: gen_udp:open(0, [{ifaddr,{local,"/tmp/socket"}}])
- 特定于调度程序的计时器轮,
- 特定于调度程序的BIF计时器管理,
- 在支持它的操作系统上并行检索单调时间和系统时间。
- Erlang/OTP已被移植到实时操作系统OSE。
- maps,一种新的字典数据类型(实验性的)
- 一个更自然的映射,从ASN.1八位串和位串到Erlang类型,以及其他ASN.1的改进和优化
- TCP、UDP和SCTP的{active, N}套接字选项
- 一个新的(可选的)调度程序使用平衡机制
- 默认情况下,所有ERTS内部内存分配器都启用了内存载体的迁移
- 提高垃圾收集保留率
- 实验性的“脏调度程序”功能
- Funs现在可以命名了
- 其他unicode支持增强
- 介绍了一种新的OTP应用方案
- 在预构建的Windows安装程序中缺少ODBC应用程序
- SSL应用程序中的3个更正:
- 添加server_name_indicator选项缺少的验证,并对其显式使用进行测试。
- 如果可能的话,服务器模式下的椭圆曲线选择现在正确地选择客户端建议的曲线。
- 服务器没有表明在TLS扩展处理期间支持安全的重新协商。
- 在语法工具的应用中引入了一个bug,它破坏了本地函数的恢复。现在纠正过来了(多亏了安东尼·拉明)
- wx - 解决了在关闭窗口时导致调试器崩溃的问题。修复了Mac上的静态链接。
- xmerl - 修正了使用xmerl_sax_parser:stream/2函数时,当下一个文档的头出现在缓冲区中时,sax-parser中的一个问题。
Erlang 不同版本内容的更多相关文章
- JDK各版本内容和新特性
JDK各版本内容和新特性 - yanlzhl - 博客园 https://www.cnblogs.com/yanlzhl/articles/5694470.html 版本JDK1.0:1995年 ...
- coreData旧版本增加字段,新版本是否可以继续使用旧版本内容的测试(MagicalRecord的使用)
coreData使用第三方库MagicalRecord, 参考文章:http://blog.csdn.net/kuizhang1/article/details/21200367 coreData数据 ...
- Erlang 103 Erlang分布式编程
Outline 笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期 变更说明 2014-11-23 A Outl ...
- Erlang cowboy websocket 服务器
Erlang cowboy websocket 服务器 原文见于: http://marcelog.github.io/articles/erlang_websocket_server_cowboy_ ...
- 《erlang程序设计》学习笔记-第3章 分布式编程
http://blog.csdn.net/karl_max/article/details/3985382 1. erlang分布式编程的基本模型 (1) 分布式erlang:这种模型可以让我们在一个 ...
- Erlang模块erl翻译
命令: erl 概述: Erlang模拟器 描述: erl程序启动一个Erlang运行时系统.准确的信息是依赖于系统的(举例,erl是否是脚本或程序,其它程序调用). ...
- RabbitMQ的安装与使用(Centos7,linux版本)
1.主流的消息中间件简单介绍哦. 1).ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持jms(java message service)规范的消息中间件.其丰 ...
- [Erlang 0121] 当我们谈论Erlang Maps时,我们谈论什么 Part 3
Erlang/OTP 17.0 has been released http://www.erlang.org/download/otp_src_17.0.readme Erlang/OTP ...
- linux查看系统类型和版本
首先大致普及下linux系统的版本内容. 1.内核版本和发行版本区别 我的理解,内核版本就是指linux中最基层的代码,版本号如 Linux version 3.10.0-327.22.2.el7.x ...
随机推荐
- Linux : 性能监测相关命令
[参考文章]:Linux命令大全 [参考文章]:Linux 运行进程实时监控pidstat命令详解 1. 进程级别的监测命令 1.1 top top命令可以实时动态地查看系统的整体运行情况,是一个综 ...
- 【Java例题】3.1 7、11、13的倍数
1.找出1~5000范围内分别满足如下条件的数: (1) 7或11或13的倍数 (2) 7.11,或7.13或11.13的倍数 (3) 7.11和13的倍数. package chapter3; pu ...
- 微信JSSDK签名
微信JS-SDK说明文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 生成签名 1.签名规则 参与签名的 ...
- 在vue-cli 3中, 给stylus、sass样式传入共享的全局变量
在开发中有时,我们定义了大量的基础样式变量,例如: 大量的vue单文件组件会用到这些变量,每个组件都引人一次又太麻烦.全局引入是个不错的方法,于是,在main.js 中引入variable.styl文 ...
- Vue系列:Vue Router 路由梳理
Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参数. ...
- css常用代码块
顶部固定导航栏 | css position: fixed; top: 0; left: 0; z-index: 9999; width: 100%; height: 48px; border-top ...
- 算法与数据结构基础 - 合并查找(Union Find)
Union Find算法基础 Union Find算法用于处理集合的合并和查询问题,其定义了两个用于并查集的操作: Find: 确定元素属于哪一个子集,或判断两个元素是否属于同一子集 Union: 将 ...
- 源码解读 Spring Boot Profiles
前言 上文<一文掌握 Spring Boot Profiles> 是对 Spring Boot Profiles 的介绍和使用,因此本文将从源码角度探究 Spring Boot Profi ...
- 通俗易懂--循环神经网络(RNN)的网络结构!(TensorFlow实现)
1. 什么是RNN 循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环 ...
- Git原理入门简析
为了获得更好的阅读体验,建议访问原地址:传送门 前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的 ...