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 ...
随机推荐
- vagrant 创建虚拟机时遇到问题
问题1 : ceph-node3: Warning: Authentication failure. Retrying.. 问题分析: ssh 认证失败,在向虚拟机拷贝内容时权限不足. 解决办法: ...
- 一文搞懂 Prometheus 的直方图
原文链接:一文搞懂 Prometheus 的直方图 Prometheus 中提供了四种指标类型(参考:Prometheus 的指标类型),其中直方图(Histogram)和摘要(Summary)是最复 ...
- 学好C/C++编程,走遍天下都不怕
C++这门语言从诞生到今天已经经历了将近30个年头.不可否认,它的学习难度都比其它语言较高.而它的学习难度,主要来自于它的复杂性.现在C++的使用范围比以前已经少了很多,java.C#.python等 ...
- vue+Elment-UI,修改element组件样式
在用vue开发项目过程中,我们总是避免不了的会使用到elementUI,它里面提供的一些组件都为我们的开发带来了很大的便利,但是,当有时候我们需要使用这些组件的同时又要修改下组件的UI样式的话,我们该 ...
- 【译】尝试使用Nullable Reference Types
随着.NET Core 3.0 Preview 7的发布,C#8.0已被认为是“功能完整”的.这意味着它们的最大亮点Nullable Reference Types,在行为方面也被锁定在.NET Co ...
- Leetcode solution 227: Basic Calculator II
Problem Statement Implement a basic calculator to evaluate a simple expression string. The expressio ...
- (四)c#Winform自定义控件-选择按钮组
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- 基于vue手写tree插件那点事
目录 iview提供的控件 手写控件 手写控件扩展 手写控件总结 # 加入战队 微信公众号 主题 Tree树形控件在前端开发中必不可少,对于数据的展示现在网站大都采取树形展示.因为大数据全部展示出来对 ...
- Oracle中的字符函数
Oracle中常用的字符串函数有以下几种: 1.upper()---将字符串的内容全部转换为大写.lower()---将字符串的内容全部转换为小写.具体用法: select upper('test' ...
- (通俗易懂小白入门)字符串Hash+map判重——暴力且优雅
字符串Hash 今天我们要讲解的是用于处理字符串匹配查重的一个算法,当我们处理一些问题如给出10000个字符串输出其中不同的个数,或者给一个长度100000的字符串,找出其中相同的字符串有多少个(这样 ...