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 ...
随机推荐
- 史上最全面的SignalR系列教程-1、认识SignalR
SignalR 是什么? SignalR 是一个面向 ASP.NET 开发人员的库,可简化将实时 web 功能添加到应用程序的过程. 实时 web 功能是让服务器代码将内容推送到连接的客户端立即可用, ...
- 使用富文本编辑器Kindeditor
今天在做需求的时候,遇到有一个字段,需要保存带有格式的内容,决定使用富文本框编辑器Kindeditor来实现,解决方法如下: 登录官网下载控件包: http://kindeditor.net/down ...
- 8、JAVA中的用户输入(I/0交互过程)
这里在数组的学习中用到了用户输入,也就是交互模式,日常的数据,不可能每一次都是程序员定义好的,终究需要用户与程序之间进行交互,机器等待用户输入,用户通过键盘输入所需数据(数据包括,字符,字串,数值等) ...
- java并发编程(二十四)----(JUC集合)ArrayBlockingQueue和LinkedBlockingQueue介绍
这一节我们来了解阻塞队列(BlockingQueue),BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,当容量满时往BlockingQ ...
- Alfred Workflow
实用的 Alfred Workflow Alfred Workflow 介绍 alfred-pkgman-workflow 快速从各个软件仓库(maven, gradle 等等)中查找需要的软件包 A ...
- rtags——node.js+redis实现的标签管理模块
引言在我们游览网页时,随处可见标签的身影: 进入个人微博主页,可以看到自己/他人的标签,微博系统会推送与你有相同标签的人 游览博文,大多数博文有标签标记,以说明文章主旨,方便搜索和查阅 网上购物,我们 ...
- 100天搞定机器学习|Day21 Beautiful Soup
前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...
- testng学习笔记-- 场景和module
一.定义 TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Ge ...
- 聊聊我在这家公司设计的SSO
最近小明遇到一个需求:需要将几个独立的系统(子系统)汇总到一个集中的系统(父系统)当中,当用户在父系统登录过后,再点击这几个子系统,就可以免登录跳转到任意一个系统.当时一听,duang~duang~就 ...
- LoRaWAN stack移植笔记(五)__调试1
先废话一小段 在将LoRaWAN的程序移植的过程中,调试发现了很多的问题. 做好记录工作,防止以后再踩坑 移植使用的是LoRaMac-node库,使用的是STM32L151CBT6 MCU,需要要移植 ...