查看源代码 工具发布说明

本文档描述了对工具应用程序所做的更改。

工具 4.1.1

修复的错误和故障

  • 修复了 emacs-29 上的一些已弃用错误。

    自有 ID:OTP-19273 辅助 ID:PR-8879

  • cover 工具有时会错误地将行报告为未覆盖。

    自有 ID:OTP-19289 辅助 ID:GH-8867, PR-8919

  • 修复了 tprof:format(IoDevice, ...),使其不再要求 IoDevice 支持 Unicode 编码。

    自有 ID:OTP-19299 辅助 ID:PR-8949

工具 4.1

修复的错误和故障

  • 当分析所有模块时,使用暂停/重启/继续时,tprof 不再崩溃。

    自有 ID:OTP-19136 辅助 ID:GH-8472, PR-8472, PR-8541

  • 在支持原生覆盖的系统上,如果覆盖编译的模块是从 cover 外部重新加载的,则对 cover 的调用可能会挂起或崩溃。此问题已得到纠正,cover 现在可以从错误中恢复,并向日志记录器发送关于无法检索覆盖信息的报告。

    自有 ID:OTP-19203 辅助 ID:GH-8661, PR-8742

改进和新功能

  • 文档中的图表已得到改进。

    自有 ID:OTP-19130 辅助 ID:PR-7226

工具 4.0

修复的错误和故障

  • 由于在 dbg 中添加的类型规范而导致的 Dialyzer 警告已消除。

    自有 ID:OTP-18860

  • 在 Erlang/OTP 26 中,对 line 级别进行 cover 分析将为定义了多个函数的行返回多个条目。

    例如,考虑以下模块

    -module(foo).
    -export([bar/0, baz/0]).
    
    bar() -> ok. baz() -> not_ok.

    在 Erlang/OTP 26 中,在 line 级别进行分析将为第 4 行返回两个条目

    1> cover:compile_module(foo).
    {ok,foo}
    2> foo:bar().
    ok
    3> cover:analyse(foo, coverage, line).
    {ok,[{{foo,4},{1,0}},{{foo,4},{0,1}}]}
    4> cover:analyse(foo, calls, line).
    {ok,[{{foo,4},1},{{foo,4},0}]}

    在 Erlang/OTP 27 中,第 4 行将只有一个条目

    1> cover:compile_module(foo).
    {ok,foo}
    2> foo:bar().
    ok
    3> cover:analyse(foo, coverage, line).
    {ok,[{{foo,4},{1,0}}]}
    4> cover:analyse(foo, calls, line).
    {ok,[{{foo,4},1}]}

    自有 ID:OTP-18998 辅助 ID:GH-8159, PR-8182

  • 修复了 emacs 模式下的对齐命令。

    自有 ID:OTP-19026 辅助 ID:PR-8155

改进和新功能

  • 已按照 EEP 64 实现三引号字符串。请参阅参考手册中的 字符串

    示例

    1> """
       a
       b
       c
       """.
    "a\nb\nc"

    没有中间空格的相邻字符串字面量现在是一个语法错误,以避免可能与三引号字符串混淆。例如

    1> "abc""xyz".
    "xyz".
    * 1:6: adjacent string literals without intervening white space

    潜在的不兼容性

    自有 ID:OTP-18750 辅助 ID:OTP-18746, PR-7313, PR-7451

  • 有一个新的工具 tprof,它在一个接口下结合了 eprofcprof 的功能,并添加了堆分析。它还具有帮助分析进程层次结构的功能。

    示例:

    1> tprof:profile(lists, seq, [1, 16], #{type => call_memory}).
    
    ****** Process <0.92.0>  --  100.00% of total *** 
    FUNCTION          CALLS  WORDS  PER CALL  [     %]
    lists:seq_loop/3      5     32      6.40  [100.00]
                                32            [ 100.0]
    ok

    自有 ID:OTP-18756 辅助 ID:PR-6639

  • JIT 中已实现原生覆盖支持。它将自动被 cover 工具使用,以减少运行覆盖编译代码时的执行开销。

    还有新的 API 用于支持不使用 cover 工具的原生覆盖。

    要为原生覆盖检测代码,必须使用 line_coverage 选项进行编译。

    要在运行时系统中启用原生覆盖,请像这样启动它

    $ erl +JPcover true

    还有以下新函数用于支持原生覆盖

    自有 ID:OTP-18856 辅助 ID:PR-7856

  • 文档已迁移到使用 Markdown 和 ExDoc。

    自有 ID:OTP-18955 辅助 ID:PR-8026

  • 改进了 emacs 模式下的对齐命令。

    自有 ID:OTP-19080 辅助 ID:PR-8288

工具 3.6

改进和新功能

  • 现已实现 EEP 58 中建议的 Map 推导式。

    自有 ID:OTP-18413 辅助 ID:EEP-58, PR-6727

  • instrument 模块已从 tools 移动到 runtime_tools

    自有 ID:OTP-18487 辅助 ID:PR-6829

工具 3.5.3

改进和新功能

  • 删除了以前未记录和不受支持的 emem 工具。

    自有 ID:OTP-17892 辅助 ID:PR-5591

工具 3.5.2

修复的错误和故障

  • 针对使用 CL-Lib 结构而不是 EIEIO 类的较新版本的 xref 修复了 Erlang 模式。

    自有 ID:OTP-17746 辅助 ID:GH-5314, PR-5324

工具 3.5.1

修复的错误和故障

  • cover 工具无法在用 tuple_calls 选项编译的模块上工作。

    自有 ID:OTP-17440 辅助 ID:GH-4796

工具 3.5

修复的错误和故障

  • 对于覆盖编译的代码,在保护中使用 andalso/orelse 的列表和二进制推导式的错误行为可能会更改,从而使应该在保护上下文中计算的过滤器在主体上下文中进行计算。也就是说,在运行 cover 时,没有引发异常的推导式可能会引发异常。

    自有 ID:OTP-17221 辅助 ID:PR-4547

改进和新功能

  • 已删除对 OTP R15 之前创建的抽象代码的处理支持。

    自有 ID:OTP-16678 辅助 ID:PR-2627

  • 为文档添加类型和规范。

    自有 ID:OTP-16957

  • 已删除实验性的 HiPE 应用程序以及其他应用程序中的所有相关功能。

    * 潜在的不兼容性 *

    自有 ID:OTP-16963

工具 3.4.4

修复的错误和故障

  • 当编译具有名为 clauses 的导出函数的模块时,cover 会崩溃。

    自有 ID:OTP-17162 辅助 ID:GH-4549, PR-2997, PR-4555, elixir-lang/elixir#10666

  • 如果要求 beam_lib 返回由 Elixir 生成的 BEAM 文件的抽象代码,并且计算机上未安装 Elixir,则 beam_lib 不再崩溃,而是返回错误元组。cover:compile_beam()cover:compile_beam_directory() 函数已更新,以便在这种情况下也返回错误元组。

    自有 ID:OTP-17194 辅助 ID:GH-4353

  • 使 emacs 模式在 emacs-27 上工作。

    自有 ID:OTP-17225 辅助 ID:PR-4542, GH-4451

工具 3.4.3

修复的错误和故障

  • 更正 Xref 分析 undefined_functions,使其不报告内部生成的 behaviour_info/1。

    自有 ID:OTP-17191 辅助 ID:OTP-16922, ERL-1476, GH-4192

工具 3.4.2

修复的错误和故障

  • 更正 Xref 分析 exports_not_used,使其不报告内部生成的 behaviour_info/1

    自有 ID:OTP-16922 辅助 ID:PR-2752

工具 3.4.1

修复的错误和故障

  • 更正 Xref 分析 locals_not_used,以查找专门从 on_load 函数调用的函数。

    自有 ID:OTP-16854 辅助 ID:PR-2750

工具 3.4

改进和新功能

  • 针对新的 erlang:term_to_iovec() BIF 的更新。

    自有 ID:OTP-16128 辅助 ID:OTP-15618

  • 改进了 instrument 模块中分配和载体的表示。

    自有 ID:OTP-16327

  • 由于新的 spawn 改进而进行的次要更新。

    自有 ID:OTP-16368 辅助 ID:OTP-15251

工具 3.3.1.1

修复的错误和故障

  • 当编译具有名为 clauses 的导出函数的模块时,cover 会崩溃。

    自有 ID:OTP-17162 辅助 ID:GH-4549, PR-2997, PR-4555, elixir-lang/elixir#10666

工具 3.3.1

修复的错误和故障

  • 已修复由于 defcustom 声明中缺少类型而导致的 Emacs 警告。

    自有 ID:OTP-16356

  • 改进 emacs 缩进。

    自有 ID:OTP-16472 辅助 ID:ERL-1140

  • 覆盖工具可能会为导致发出警告的模块生成检测代码。

    自有 ID:OTP-16476 辅助 ID:ERL-1147

  • 修复了生成的 fprof 分析格式,以处理 Map 中的数据。

    自有 ID:OTP-16498 辅助 ID:ERL-814

工具 3.3

修复的 Bug 和故障

  • 改进 emacs 模式下的 -spec 缩进。

    内部 ID: OTP-16164

改进和新特性

  • 改进了 Emacs erlang-mode 函数,该函数允许用户在 Emacs 缓冲区中打开 Erlang/OTP 函数的文档。修复了此函数中的 Bug,并且当在系统中找不到手册页时,现在会询问用户是否应由 Emacs 自动下载手册页。要测试此功能,请将光标置于对 Erlang/OTP 函数的调用中的函数名称上(例如,“io:format("arg")”),然后键入 C-c C-d(即,Ctrl 键和 c 键,然后是 Ctrl 键和 d 键)。在 Erlang 菜单下还有一个新的菜单项(标记为“Man - Function Under Cursor”)。

    内部 ID: OTP-16174

工具 3.2.1

修复的 Bug 和故障

  • 如果两个进程尝试在同一时间启动 cover,则会启动失败。

    内部 ID: OTP-15813 辅助 ID: ERL-943

工具 3.2

修复的 Bug 和故障

  • cproftags 模块添加到 .app 文件,以便它们包含在发布版本中。

    内部 ID: OTP-15534 辅助 ID: PR-2078

  • 改进了 emacs erldoc 功能中的文档解析。

    内部 ID: OTP-15699 辅助 ID: PR-2184

改进和新特性

  • cover 工具现在使用 counters 模块而不是 ets 来更新行执行次数的计数器。默认情况下,Cover 将与分布式节点一起工作,但新的函数 cover:local_only/0 允许在受限制但更快的本地模式下运行 Cover。

    速度的提高将根据被 Cover 编译的代码类型而有所不同,但作为一个示例,新的 Cover 使编译器测试套件的运行速度提高了一倍以上。

    内部 ID: OTP-15575

工具 3.1.0.1

修复的 Bug 和故障

  • 如果两个进程尝试在同一时间启动 cover,则会启动失败。

    内部 ID: OTP-15813 辅助 ID: ERL-943

工具 3.1

修复的 Bug 和故障

  • make clean 的小修复。

    内部 ID: OTP-15657

改进和新特性

  • cover:analyse_to_file/1,2 生成的 HTML 文件中,现在添加了指向行号的链接。这使得共享指向特定行的指针变得更容易。

    内部 ID: OTP-15541

  • 未覆盖的行现在在 cover:analyse_to_file/1,2 的 HTML 输出中用悲伤的脸 :-( 标记。这是为了使这些行更容易通过搜索找到。

    内部 ID: OTP-15542

工具 3.0.2

改进和新特性

  • 删除了 emacs 警告并添加了更多测试。

    内部 ID: OTP-15476

工具 3.0.1

改进和新特性

  • cover:analyse_to_file/1 和相关函数生成的 HTML 页面提高了可读性。

    内部 ID: OTP-15213 辅助 ID: PR-1807

  • 在 emacs 中添加了对齐功能。

    内部 ID: OTP-15239 辅助 ID: PR-1728

工具 3.0

改进和新特性

  • 添加了 instrument:allocationsinstrument:carriers,用于检索有关内存利用率和碎片的信息。

    旧的 instrument 接口已被删除,相关的选项 +Mim+Mis 也已被删除。

    * 潜在的不兼容性 *

    内部 ID: OTP-14961

工具 2.11.2.2

修复的 Bug 和故障

  • 如果两个进程尝试在同一时间启动 cover,则会启动失败。

    内部 ID: OTP-15813 辅助 ID: ERL-943

工具 2.11.2.1

修复的 Bug 和故障

  • make clean 的小修复。

    内部 ID: OTP-15657

工具 2.11.2

修复的 Bug 和故障

  • 修复了 Cover 中的计数错误。该错误是在 Erlang/OTP 18.0 中引入的。

    内部 ID: OTP-14817 辅助 ID: PR 1641

  • 如果 lcnt:information/0lcnt:collect/0 之前被调用,则 lcnt 服务器将不再崩溃。

    内部 ID: OTP-14912

  • lcnt:collect 现在将按照文档说明隐式启动 lcnt 服务器。

    内部 ID: OTP-14913

改进和新特性

  • 改进了 emacs 中的缩进和各种其他更新。

    内部 ID: OTP-14944

工具 2.11.1

修复的 Bug 和故障

  • 删除了文档中所有旧的未使用文件。

    内部 ID: OTP-14475 辅助 ID: ERL-409, PR-1493

工具 2.11

修复的 Bug 和故障

  • 预定义的 Xref 分析 locals_not_used 不再报告具有 -on_load() 属性的未使用函数。

    新的预定义 Xref 变量 OL 保存所有具有 -on_load() 属性的函数。

    内部 ID: OTP-14344

  • 在 fprof 中,当对多个进程进行采样并使用设置为 true 的总数进行分析时,输出现在将与同一函数相关的所有调用者和被调用者条目相加。之前的行为是分别报告每个贡献条目。

    内部 ID: OTP-14500

改进和新特性

  • 现在可以在运行时在锁计数模拟器(-emu_type lcnt)中完全切换锁计数。默认情况下,启用所有内容以匹配旧行为,但是当禁用时,可以通过最小的运行时开销随意切换特定类别。有关详细信息,请参阅关于 lcnt:rt_mask/1 的文档。

    内部 ID: OTP-13170

  • lcnt:collectlcnt:clear 将不再阻止运行时系统中的所有其他线程。

    内部 ID: OTP-14412

  • 常规 Unicode 改进。

    内部 ID: OTP-14462

  • 工具已更新为正确显示 Unicode 原子。

    内部 ID: OTP-14464

  • 添加了 erlang:iolist_to_iovec/1,它将 iolist() 转换为 erlang:iovec(),适合与 enif_inspect_iovec 一起使用。

    内部 ID: OTP-14520

工具 2.10.1

修复的 Bug 和故障

  • 在 OTP-20.0 中,c、make 和 ct_make 的行为已更改,因此在某些情况下,beam 文件默认情况下会写入找到源文件的目录。现在已改回旧行为,因此 beam 文件默认情况下写入当前目录。

    内部 ID: OTP-14489 辅助 ID: ERL-438

工具 2.10

修复的 Bug 和故障

  • 在某些情况下,make:all() 及其变体未检测到位于当前目录中的 include 文件中的更改。现在已修复。

    内部 ID: OTP-14339 辅助 ID: ERL-395

改进和新特性

  • make 模块现在接受 {emake,Emake} 选项。

    内部 ID: OTP-14253

  • 由于原子包含任意 Unicode 字符而进行的各种更新。

    内部 ID: OTP-14285

工具 2.9.1

改进和新特性

  • 改进了 emacs 模式下的 edoc 支持。

    内部 ID: OTP-14217 辅助 ID: PR-1282

工具 2.9

修复的 Bug 和故障

  • 修复了 fprof 中未处理的跟踪事件 send_to_non_existing_process。

    内部 ID: OTP-13998

改进和新特性

  • 改进了 emacs erlang-mode 中的 edoc 支持。

    自有 ID: OTP-13945 辅助 ID: PR-1157

  • 为 emacs 模式添加了 erldoc,可以从 emacs 在浏览器中打开 html 文档。例如 M-x erldoc-browse RET lists:foreach/2

    自有 ID: OTP-14018 辅助 ID: PR-1197

工具 2.8.6

已修复的错误和故障

  • 已修复 gen_statem:code_change/4 的类型规范和 Emacs 模板生成中的错误,这些错误来源于 bugs.erlang.org 的 Jira 案例 ERL-172 和 ERL-187。

    自有 ID: OTP-13746 辅助 ID: ERL-172, ERL-187

  • 修复解析旧跟踪日志时 fprof 标签中的 gc_start/gc_end。

    自有 ID: OTP-13778 辅助 ID: PR-1136

  • 如果 Erlang 源文件包含 -warning() 指令,make (工具) 和 ct_make (common_test) 会崩溃。

    自有 ID: OTP-13855

工具 2.8.5

已修复的错误和故障

  • 修正了向 Xref 服务器添加多个模块时的一个错误。该错误是在 OTP-19.0 中引入的。

    自有 ID: OTP-13708 辅助 ID: ERL-173

工具 2.8.4

已修复的错误和故障

  • 更新 fprof 以使用新的“spawned”跟踪事件来确定进程何时被创建。

    自有 ID: OTP-13499

改进和新特性

  • 优化了向 Xref 服务器添加多个模块的操作。

    自有 ID: OTP-13593

  • 各种 emacs 模式的改进,例如更好的标签支持。

    自有 ID: OTP-13610

工具 2.8.3

已修复的错误和故障

  • 当尝试编译一个没有 'file' 属性的 beam 文件时,cover:compile_beam/1cover:compile_beam_directory/1,2 会崩溃。此问题已得到纠正,现在会返回一个错误。

    感谢 Louis-Philippe Gauthier 报告了这个错误。

    自有 ID: OTP-13200

  • 修复 Cover 中的位字符串推导错误。

    自有 ID: OTP-13277 辅助 ID: PR 856

工具 2.8.2

已修复的错误和故障

  • emacs 模式不再在 -callback 行的箭头后添加换行符。

    自有 ID: OTP-13042

工具 2.8.1

已修复的错误和故障

  • 如果一个模块包含 eunit.hrl,一个解析转换会在模块中的第 0 行添加函数 test/0。OTP-18.0 中的一个错误导致 cover:analyse_to_file/1 无法在输出文件中插入 cover 数据,当 cover 数据表中存在第 0 行时会失败。此问题已得到纠正。

    自有 ID: OTP-12981

工具 2.8

已修复的错误和故障

  • 为了提高 cover 工具的性能,添加了新的函数,用于对多个文件进行 cover 编译和分析。这允许更多的并行化。

    为了提高分析和重置 cover 数据时的性能,还对数据库访问进行了一些改进。

    小的兼容性问题:analyse_to_file 的错误原因从 no_source_code_found 更改为 {no_source_code_found,Module}。

    * 潜在的不兼容性 *

    自有 ID: OTP-12330 辅助 ID: seq12757

  • 当找不到源代码或 beam 文件时尝试进行 cover 分析会导致 cover 服务器挂起。已修正为返回正确的错误。

    自有 ID: OTP-12806

改进和新特性

  • 允许使用 map 作为 supervisor 标志和子规范

    早些时候,supervisor 标志和子规范以元组的形式给出。虽然为了向后兼容性保留了这种方式,但现在也允许将这些参数作为 map 给出,请参阅 sup_flagschild_spec

    自有 ID: OTP-11043

  • 删除 Mnemosyne 规则支持。

    自有 ID: OTP-12511

  • 在 eprof 中添加调用总数和时间的打印输出

    自有 ID: OTP-12681

工具 2.7.2

已修复的错误和故障

  • 修复 lcnt 排序和直方图的打印输出。

    自有 ID: OTP-12364

  • 修复 tags 模块中的 Unicode 错误。

    自有 ID: OTP-12567

  • 修复 GNU Emacs 23+ 中 erlang.el 的标签补全。

    自有 ID: OTP-12583

工具 2.7.1

已修复的错误和故障

  • 修复了 erlang-mode 注释中的一个错别字。

    自有 ID: OTP-12214

  • 为 Emacs 的 Erlang 模式添加了 -spec 的框架

    自有 ID: OTP-12283

改进和新特性

  • 当编译带有 after 子句的 receive 等语句时,Cover 不再崩溃。感谢 José Valim 提供的修复程序。

    自有 ID: OTP-12328

工具 2.7

改进和新特性

  • 向 lcnt 添加用于锁定等待时间的 log2 直方图

    自有 ID: OTP-12059

工具 2.6.15

已修复的错误和故障

  • 删除了 erlang:bitstr_to_list/1erlang:list_to_bitstr/1。它们是错误添加的,并且在调用时始终会引发 undefined 异常。

    自有 ID: OTP-11942

工具 2.6.14

已修复的错误和故障

  • 从 emacs 模式中删除了对 query 关键字的支持 (感谢 Paul Oliver)

    自有 ID: OTP-11568

  • Emacs 模式改进 (感谢 Steve Vinoski)

    自有 ID: OTP-11601

  • 以下应用程序的应用程序升级 (appup) 文件已得到更正

    asn1、common_test、compiler、crypto、debugger、dialyzer、edoc、eldap、erl_docgen、et、eunit、gs、hipe、inets、observer、odbc、os_mon、otp_mibs、parsetools、percept、public_key、reltool、runtime_tools、ssh、syntax_tools、test_server、tools、typer、webtool、wx、xmerl

    为 test_server 添加了一个新的用于测试 appup 文件的测试实用程序。现在 OTP 中的大多数应用程序都使用此实用程序。

    (感谢 Tobias Schlager)

    自有 ID: OTP-11744

  • emacs erlang 模式现在更仔细地匹配 erlang 关键字 (感谢 Steve Vinoski)

    自有 ID: OTP-11786

  • emacs erlang-mode 现在可以为更多文件类型自动加载 (感谢 Phil Hagelberg)

    自有 ID: OTP-11788

改进和新特性

  • cover 可以在自身上运行。此外,还删除了对读取 R9C 之前的旧 OTP 版本生成的 BEAM 文件的支持。

    自有 ID: OTP-11692

  • 支持 cover 中的 map

    自有 ID: OTP-11764

工具 2.6.13

已修复的错误和故障

  • 在 erlang-eunit.el 中添加了 Erlang 特定的编译错误正则表达式。此 defvar 早期在 erlang.el 中,但在 R15B02 中被错误地删除,但仍被 erlang-eunit.el 使用。

    自有 ID: OTP-11417 辅助 ID: seq12447

  • 在 cover:compile_beam 中从 beam 获取编译器选项。感谢 Péter Gömöri。

    自有 ID: OTP-11439

  • 静默警告 (感谢 Anthony Ramine)

    自有 ID: OTP-11517

改进和新特性

  • 为 emacs 的内置类型高亮添加了 iodata 和 nonempty_string。感谢 Paul Oliver。

    自有 ID: OTP-11394

工具 2.6.12

改进和新特性

  • 删除 Emacs 模板中的尾随空格。感谢 Roberto Aloi。

    自有 ID: OTP-11198

  • 修复了 Emacs erlang-mode,以适应跨多行编写的列表,其中每一行都以逗号开头。感谢 Magnus Henoch。

    自有 ID: OTP-11242

  • 使 Emacs Erlang 模式在编译时能够感知 TRAMP。感谢 Tomas Abrahamsson。

    自有 ID: OTP-11270

工具 2.6.11

已修复的错误和故障

  • 当在不存在的节点上调用 cover:stop(Node) 时,等待来自该节点的 cover 数据的进程将永远挂起。此问题已得到纠正。

    自有 ID: OTP-10979

改进和新功能

  • 使 cover 在从 beam 中查找源文件时更加智能。

    特别是,如果当前启发式方法失败,则使用 module_info 中的源路径进行搜索。

    自有 ID:OTP-10902

  • 移除 erlang-pkg.el 中对 Flymake 的依赖。感谢 Magnus Henoch。

    自有 ID:OTP-10930

  • Erlang-mode:为文件扩展名关联添加自动加载 cookie。感谢 Magnus Henoch。

    自有 ID:OTP-10999

  • 不再需要用于生成 PDF 文件的 Postscript 文件。

    自有 ID:OTP-11016

  • 修复 apps 目录中有多个应用程序时出现的竞争条件。感谢 Manuel Rubio。

    自有 ID:OTP-11028

  • eprof 的新选项 'set_on_spawn'。此选项以前始终处于启用状态,并且也是默认设置。

    自有 ID:OTP-11144

工具 2.6.10

改进和新功能

  • 修复了在不使用 no_auto_import 时 cover 中的一个错误。感谢 José Valim。

    自有 ID:OTP-10778

工具 2.6.9

已修复的错误和故障

  • 在 app 文件中添加缺失的模块

    自有 ID:OTP-10439

  • 使 erlang-mode 更兼容 package.el(感谢 Gleb Peregud)

    自有 ID:OTP-10465

  • 修复各种拼写错误(感谢 Tuncer Ayaz)

    自有 ID:OTP-10611

  • 为导出的函数添加单独的面(感谢 Thomas Järvstrand)

    自有 ID:OTP-10637

  • emacs 模式中的 BIF 高亮显示已更新,以与正确的 BIF 相对应。

    自有 ID:OTP-10774

改进和新功能

  • 已实现对 Unicode 的支持。

    自有 ID:OTP-10302

  • 添加了一个新函数 cover:flush(Nodes),它将从远程节点获取数据,而不会停止这些节点上的 cover。这由 test_server 和 common_test 使用,当可以安全地假设节点将在测试后终止时。目的是避免在进程仍然运行旧代码时重新加载原始 beam 时导致进程崩溃。

    如果与主节点的连接中断,远程节点现在将继续计算代码覆盖率。以前,连接中断会导致远程节点上的 cover_server 死掉,因此任何仍然覆盖编译的模块都会在尝试将覆盖率数据插入 cover_server 上曾经存在的 ets 表中时导致进程崩溃。新功能还包括在节点重新连接时与主节点同步。

    * 潜在的不兼容性 *

    自有 ID:OTP-10523 辅助 ID:OTP-10427

  • 在必要时,已将声明编码的注释添加到 Erlang 文件中。该注释旨在在 UTF-8 成为默认编码时在 Erlang/OTP R17B 中删除。

    自有 ID:OTP-10630

  • 修复 Emacs 模式中 $\' 的语法高亮显示。感谢 Magnus Henoch。

    自有 ID:OTP-10766

工具 2.6.8

已修复的错误和故障

  • 已从 fprof 中删除了最后一个元组 fun 调用。

    自有 ID:OTP-10091 辅助 ID:seq12067

  • 修复 Emacs 中记录字段的缩进(感谢 Tomas Abrahamsson)

    自有 ID:OTP-10120

  • 文档修复(感谢 Ricardo Catalinas Jiménez)

    自有 ID:OTP-10121

  • 删除 erlang.el 中特定于 Erlang 的编译错误正则表达式

    自有 ID:OTP-10168

  • 修复以美元符号结尾的原子的高亮显示

    例如:'atom$'。在该示例中,最后一个单引号应被识别为原子结束。这需要类似于字符串的字体锁定解决方法。感谢 Magnus Henoch

    自有 ID:OTP-10178

  • Xref 现在接受字符代码大于 126 的文件名。(感谢 Emile Joubert 报告此问题。)

    自有 ID:OTP-10192

  • 将 test_indentation 目标添加到 lib/tools/emacs/Makefile

    自动缩进 test.erl.orig,保存到 test.erl,并与 test.erl.intended 进行比较。感谢 Magnus Henoch。

    自有 ID:OTP-10226

工具 2.6.7

已修复的错误和故障

  • 已更正 erts、hipe 和 tools 中的 Makefile 以启用并行 make,即 MAKEFLAGS=-jX,其中 X 是并行度。由于并行 make 需要这样做,因此已更正了依赖项。

    自有 ID:OTP-9857 辅助 ID:OTP-9451

  • 编译警告的少量抑制和修复

    自有 ID:OTP-10016

工具 2.6.6.6

已修复的错误和故障

  • 更新系统分析原则以反映 eprof 性能改进。

    自有 ID:OTP-9656

  • [cover] 修复调用者队列中的剩余 {'DOWN', ..} 消息

    使用 cover:stop() 停止 cover 后,在调用进程的消息队列中可能仍然存在 {'DOWN',...} 剩余消息。如果在某些点使用带有 flush 选项的 erlang:demonitor/2,则可以消除这种意外的剩余消息。

    自有 ID:OTP-9694

  • 将 deps 添加为 erlang-flymake 包含目录。

    更新 erlang-flymake 以识别“deps”文件夹作为包含目录。这使得 erlang-flymake 与 rebar 依赖项管理工具的默认文件夹结构兼容,该结构将包含的依赖项放在“deps”中。(感谢 Kevin Albrecht)

    自有 ID:OTP-9791

改进和新功能

  • 现在允许在 'fun M:F/A' 中使用变量,正如 Richard O'Keefe 在 EEP-23 中建议的那样。

    抽象格式中 'fun M:F/A' 的表示形式已以不兼容的方式更改。直接读取或操作抽象格式的工具(例如,解析转换)可能需要更新。编译器可以处理新旧格式(即,从 R15 之前的 BEAM 文件中提取抽象格式并使用 compile:forms/1,2 进行编译将起作用)。syntax_tools 应用程序也可以处理这两种格式。

    * 潜在的不兼容性 *

    自有 ID:OTP-9643

  • 元组 fun(一个包含模块名称和函数的双元素元组)现在已正式弃用,并将从 R16 中删除。请改用 'fun M:F/A'。为了让您了解您的系统使用元组 fun,第一次应用元组 fun 时,将向错误日志记录器发送警告。

    自有 ID:OTP-9649

  • 消除已弃用的 regexp 模块的使用

    自有 ID:OTP-9810

工具 2.6.6.5

已修复的错误和故障

  • 教导 emacs 模式编译 yecc 和 leex 文件

    如果在 emacs 中使用 erlang-mode 访问 .yrl 或 .xrl 文件,则 `erlang-compile` 函数(通常绑定到 C-c C-k)现在知道如何编译 yecc 和 leex 文件,并且如果编译成功,还会编译生成的 .erl 文件。

    还引入了 `erlang-compile-command-function-alist`,以便可以根据文件名挂钩其他函数来计算编译命令/表达式。(感谢 Tomas Abrahamsson)

    自有 ID:OTP-9503

改进和新功能

  • xref(3) 中的错误已修复。(感谢 Matthias Lang。)

    自有 ID:OTP-9416

工具 2.6.6.4

已修复的错误和故障

  • 更改 make:files 的行为使其更像 erlc

    此更改删除了在调用 make:files 时对文件的不必要检查,并允许在 compile:file 中完成错误检查,并在其中生成错误消息。它不影响返回值。

    (感谢 Sam bobroff)

    自有 ID:OTP-9179

  • 在表单重新加载时添加用户指定的编译器选项

    为了能够从另一个(测试)模块测试非导出函数,必须使用 export_all 编译器选项编译特定模块(至少在测试阶段)。这允许完全分离测试和生产代码。目前,无法将其与使用 cover 模块进行的代码覆盖率测试结合使用。问题在于,当使用 cover:compile_* 编译模块时,代码会重新加载到仿真器中,从而省略/过滤传递的用户选项。在我的上述示例中,将删除 export_all 选项,并且无法再调用非导出函数。(感谢 Tobias Schlager)

    自有 ID:OTP-9204

  • 在类型规范内时禁止在 "->" 后自动换行

    Emacs 的 Erlang 模式在每个 "->" 后插入换行符,这可以节省您在编写函数时的一个击键,但在编写类型规范时并不合适,因为您通常将规范保留在一行上。此更改禁止在当前行以 "-spec" 或 "-type" 开头时自动插入换行符。(感谢 Magnus Henoch)

    自有 ID:OTP-9255

  • 添加检查逻辑以防止文件描述符泄漏

    cover 模块在导出和导入中以原始方式处理文件。断言端口计数在测试用例的开始和结束时相同。(感谢 Shunichi Shinohara)

    自有 ID:OTP-9300

工具 2.6.6.3

已修复的错误和故障

  • 在 Emacs 的 erlang-mode 中将缩进选项声明为“安全”

    Emacs 提供了一种基于源文件中注释为每个文件设置选项的功能。默认情况下,所有选项都被认为是“不安全的”,并且在设置变量之前会询问用户。此补丁声明变量 erlang-indent-level、erlang-indent-guard 和 erlang-argument-indent 为安全,如果源文件中指定的值有效。

    这样的声明通常如下所示

    %% -- erlang-indent-level: 2 --

    并出现在文件的第一行。(感谢 Magnus Henoch)

    自有 ID:OTP-9122

改进和新功能

  • Cover 进行了改进,减少了内存占用并允许并行分析覆盖率数据。现在可以并行地从节点收集数据,并且现在可以同时发出多个 analyze 和 analyze_to_file 请求。还引入了一个新的函数调用 async_analyze_to_file,有关更多详细信息,请参阅文档。

    自有 ID:OTP-9043 辅助 ID:seq11771

工具 2.6.6.2

已修复的错误和故障

  • eprof:API 排序不匹配的问题已修复。

    自有 ID:OTP-8853

  • eprof:修复了统计信息中的除零错误

    自有 ID:OTP-8963

工具 2.6.6.1

已修复的错误和故障

  • cover 现在可以正确显示源代码中的 & 符号。(感谢 Tom Moertel。)

    自有 ID:OTP-8776

工具 2.6.6

已修复的错误和故障

  • 已删除影响 Cover 的竞争条件。

    自有 ID:OTP-8469

  • Emacs 改进

    修复了 emacs-mode 安装问题。

    修复了一些 -spec 和 -type 缩进和字体锁定问题。

    修复了 emacs-21 上的错误消息。

    Magnus Henoch 修复了几个问题。

    Ralf Doering、Klas Johansson 和 Chris Bernard 贡献了各种 emacs-eunit 改进。

    Klas Johansson 和 Dave Peticolas 添加了 emacs-flymake 支持。

    自有 ID:OTP-8530

改进和新功能

  • Xref 已更新为使用 re 模块而不是已弃用的 regexp 模块。

    * 潜在的不兼容性 *

    自有 ID:OTP-8472

  • 当给定选项 {builtins,true} 时,Xref 现在会添加对运算符的调用。

    自有 ID:OTP-8647

  • eprof 已使用 Erlang 虚拟机中的支持重新实现,现在速度更快(即减慢了被测代码的速度),并且扩展性更好。在测量中,我们看到与旧的 eprof 相比,速度提高了 6 倍(对于仅使用一个调度程序/内核的顺序代码)到 84 倍(对于使用 8 个内核的并行代码)。

    注意:eprof 的 API 已清理和扩展。请参阅文档。

    * 潜在的不兼容性 *

    自有 ID:OTP-8706

工具 2.6.5.1

已修复的错误和故障

  • Cover 中已修复一个关于位推导的错误。该错误是在 R13B03 中引入的。(感谢 Matthew Sackman。)

    自有 ID:OTP-8340

改进和新功能

  • 添加锁分析工具。

    锁分析工具 lcnt 可以在启用此功能的运行时系统构建时使用内部锁统计信息。

    这提供了一种检查运行时本身中潜在锁瓶颈的机制。

    - 添加 erts_debug:lock_counters({copy_save, bool()}). 此选项启用或禁用已销毁进程和 ets 表的统计信息保存。启用此功能可能会消耗大量内存。

    - 为锁类添加 ID 编号,否则该编号未定义。

    自有 ID:OTP-8424

  • emacs:将代码骨架移到一个单独的文件,并添加了一个可配置的变量来选择骨架。感谢 Dave Peticolas。

    自有 ID:OTP-8446

工具 2.6.5

已修复的错误和故障

  • 代码覆盖率分析工具 cover 在处理列表和位串推导(每个限定符一个计数器)、位语法表达式(Value 和 Size 表达式)以及 try 表达式(参考手册中称为 Exprs 的主体)方面得到了改进。一些(并非所有)将多个表达式放在同一行的情况也比以前处理得更好。

    自有 ID:OTP-8188 辅助 ID:seq11397

  • 在远程节点上加载 Cover 编译代码时,有时会导致 badarg 失败。此错误已修复。

    自有 ID:OTP-8270 辅助 ID:seq11423

  • 短路运算符 andalsoorelse 现在由覆盖率分析工具 cover 正确处理(不再检查第二个参数是否返回布尔值。)

    自有 ID:OTP-8273

工具 2.6.4

已修复的错误和故障

  • cover 现在可以正确转义 HTML 报告中注释中的大于号和小于号。(感谢 Magnus Henoch。)

    自有 ID:OTP-7939

工具 2.6.3

改进和新功能

  • xref:start/1 现在允许启动匿名的 XREF 进程

    自有 ID:OTP-7831

工具 2.6.2

已修复的错误和故障

  • Xref 扫描器中的一个错误已修复。

    自有 ID:OTP-7423

  • Fprof 中函数 “undefined” 似乎调用 “undefined” 的错误已更正。

    自有 ID:OTP-7509

工具 2.6.1

改进和新功能

  • 文档已更新,以反映 Erlang shell 的最新更新以及 io_lib 模块的控制序列 p 的细微修改。

    已从代码示例和 Erlang shell 示例中删除多余的空行。

    自有 ID:OTP-6944 辅助 ID:OTP-6554, OTP-6911

  • tuple_size/1byte_size/1 已替换为 size/1

    自有 ID:OTP-7009

  • 代码覆盖率分析工具 cover 现在可以正确处理短路布尔表达式 andalso/2orelse/2

    自有 ID:OTP-7095

工具 2.6

已修复的错误和故障

  • 当在分布式系统中使用时,cover 工具可能会使用大量内存。

    自有 ID:OTP-6758

工具 2.5.5

已修复的错误和故障

  • 已添加 erlang.el 中缺少的缓冲区本地声明。在此修复之前,在使用 erlang 模式访问缓冲区后,其他 emacs 模式可能会出现问题。

    自有 ID:OTP-6721

  • “backward-delete-char-untabif” 的按键映射已更新,以便与 Xemacs 正确配合使用。

    自有 ID:OTP-6723

改进和新功能

  • Xref 的细微更新。

    自有 ID:OTP-6586

  • Makefile 的细微更改。

    自有 ID:OTP-6689 辅助 ID:OTP-6742

  • “C-u C-c C-k” 现在会执行带有 “debug_info” 和 “export_all” 的编译。

    自有 ID:OTP-6741

工具 2.5.4.1

改进和新功能

  • 由于 erts 应用程序中编译时需要的内部接口更改而进行的更改。没有更改任何功能。

    自有 ID:OTP-6611 辅助 ID:OTP-6580

工具 2.5.4

已修复的错误和故障

  • 进行了更改以支持 xemacs 和 emacs-21 的函数 erlang-find-tag。

    自有 ID:OTP-6512

改进和新功能

  • 为了未来的兼容性,Xref 进行了细微更新。

    自有 ID:OTP-6513

工具 2.5.3

已修复的错误和故障

  • eprof 在 SMP 模拟器中无法可靠工作,因为跟踪接收器进程无法足够快地处理跟踪消息。因此,eprof 现在在分析时会阻止其他调度程序。

    自有 ID:OTP-6373

工具 2.5.2

已修复的错误和故障

  • 对于 SMP 模拟器,Fprof 跟踪可能会被截断。此错误现已更正。

    自有 ID:OTP-6246

工具 2.5.1

已修复的错误和故障

  • eprof 现在在 SMP 模拟器中工作得更好一些。

    自有 ID:OTP-6152

工具 2.5

已修复的错误和故障

  • 修复了 make 中的一些错误

    现在,make:files/1,2 可以像 make:all/0,1 一样处理另一个目录中的文件作为参数。

    当在 Emakefile 中指定包含 .erl 扩展名的文件名时,make:all/0,1 会在错误的位置查找目标代码。

    当在 Emakefile 中指定包含 .erl 扩展名的文件名,并为该文件指定一些编译选项时,make:files/0,1 没有按预期使用这些选项。

    内部 ID:OTP-6057 辅助 ID:seq10299

  • cover:当调用 cover:stop() 时,覆盖率编译的代码并没有被卸载(如文档所述),而是被简单地标记为“旧”。这意味着即使覆盖率服务器及其 ETS 表被终止,仍然会存在停留在(或具有引用)覆盖率编译代码的进程。

    现在,覆盖率编译的代码被卸载,这意味着当调用 cover:stop 时,停留在/具有对其引用的进程将被终止,而不是稍后在尝试更新不再存在的 ETS 表中的计数器时出现 badarg 错误崩溃。

改进和新功能

工具 2.4.7

修复的错误和故障

  • 修复了 fprof 分析中导致错误的、不一致的跟踪失败的错误。

    内部 ID:OTP-5922 辅助 ID:seq10203

工具 2.4.6

修复的错误和故障

  • Emacs:erlang-man-functionerlang-man-module 使用模式匹配来查找请求的模块,有时会产生意外的结果。例如,erlang-man-module file 将显示 CosFileTransfer_File 的手册页。

    内部 ID:OTP-5746 辅助 ID:seq10096

  • 在 Tools 应用程序中消除了一些编译器警告和 Dialyzer 警告。

    当跟踪到端口(fprof 执行此操作)时,可能会为已退出的进程发送伪造的调度出/调度入消息。

    内部 ID:OTP-5757

工具 2.4.5

修复的错误和故障

  • 交叉引用工具 xref 没有正确处理新的 fun M:F/A 构造。此问题已修复。

    内部 ID:OTP-5653

工具 2.4.4

修复的错误和故障

  • cover 工具在 HTML 日志文件中没有转义不属于 HTML 标签的 '<' 和 '>'。

    内部 ID:OTP-5588

工具 2.4.3

改进和新功能

  • 现在可以加密 beam 文件中的调试信息,以帮助保持源代码的机密性。请参阅 compile 以了解如何提供加密密钥,以及 beam_lib 以了解如何提供解密密钥,以便可以使用调试器、xrefcover 等工具。

    beam_lib:chunks/2 函数现在接受额外的块类型 'compile_info',以直接以 term 的形式检索编译信息。(感谢 Tobias Lindahl。)

    内部 ID:OTP-5460 辅助 ID:seq9787

工具 2.4.2

修复的错误和故障

  • cover 工具无法在模块级别分析空模块。

    内部 ID:OTP-5418

工具 2.4.1

修复的错误和故障

  • xref 分析 locals_not_used 可能会返回过多的函数。此问题已修复。

    内部 ID:OTP-5071

  • cover 工具并非总是能够编译经过解析转换的模块。此问题已修复。

    内部 ID:OTP-5305