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 ...
随机推荐
- CodeForces 938E Max History 题解
参考自:https://blog.csdn.net/dreaming__ldx/article/details/84976834 https://blog.csdn.net/acterminate/a ...
- java并发编程(二十六)----ThreadLocal的使用
其实ThreadLocal很多接触过多线程的同学都可能会很陌生,他不像current包里面那些耳熟能详的api一样在我们面前经常出现,更多的他作为一个本地类出现在系统设计里面.我们可以说一下Sprin ...
- SpringBoot学习系列之一(反射)
最近在学习SpringBoot的知识,动起手来学习的时候才发现SpringBoot项目采用了大量的反射机制,晕,作为一个应届毕业生,以前学习反射的时候给我的感觉就是,这个到底用来干嘛的,好像没啥用啊, ...
- 一文速览Vue全栈
一文速览Vue全栈 原创: 新哥Lewis 天道酬勤Lewis 7月7日 Vue 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用,专注于声明式渲染视图 ...
- 转载 | CSS实现单行、多行文本溢出显示省略号(…)
本文引自:https://www.cnblogs.com/wyaocn/p/5830364.html 首先,要知道css的三条属性. overflow:hidden; //超出的文本隐藏 text-o ...
- 深度学习模型训练技巧 Tips for Deep Learning
一.深度学习建模与调试流程 先看训练集上的结果怎么样(有些机器学习模型没必要这么做,比如决策树.KNN.Adaboost 啥的,理论上在训练集上一定能做到完全正确,没啥好检查的) Deep Learn ...
- C++11以上的新特性整理
1.nullptr void foo(char *); void foo(int);foo(NULL) //编译出错,不知道调用哪个,可能调用了foo(int)foo(nullptr) //ok ,调 ...
- git 常规业务场景 使用
一般每个开发者都会有个自己的分支,有个test分支,合并代码用,两条分支相互备份,就算merge的时候被覆盖,也不用担心 建立自己的分支 // 创建本地分支, git checkout -b dev_ ...
- Jesus Is Here[递推]2015沈阳online
题目链接https://nanti.jisuanke.com/t/41175 自从百度之星初赛一上自己做出来一道打表找规律的题之后,这种膨胀的感觉让我近乎丧失理智,今天这道题我死死盯了两三个小时硬是没 ...
- GPU服务器安装NVIDIA驱动以及CUDA
1.安装系统 系统版本: ubuntu16.04.05 LTS 分区要求: /boot 1024M swap 64G / 剩余空间