查看源代码 工具发布说明
本文档描述了对工具应用程序所做的更改。
工具 4.1.1
修复的错误和故障
修复了 emacs-29 上的一些已弃用错误。
自有 ID:OTP-19273 辅助 ID:PR-8879
cover
工具有时会错误地将行报告为未覆盖。修复了
tprof:format(IoDevice, ...)
,使其不再要求IoDevice
支持 Unicode 编码。自有 ID:OTP-19299 辅助 ID:PR-8949
工具 4.1
修复的错误和故障
当分析所有模块时,使用暂停/重启/继续时,
tprof
不再崩溃。在支持原生覆盖的系统上,如果覆盖编译的模块是从
cover
外部重新加载的,则对cover
的调用可能会挂起或崩溃。此问题已得到纠正,cover
现在可以从错误中恢复,并向日志记录器发送关于无法检索覆盖信息的报告。
改进和新功能
文档中的图表已得到改进。
自有 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}]}
修复了 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
潜在的不兼容性
有一个新的工具
tprof
,它在一个接口下结合了eprof
和cprof
的功能,并添加了堆分析。它还具有帮助分析进程层次结构的功能。示例:
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
还有以下新函数用于支持原生覆盖
code:coverage_support/0
code:get_coverage/2
code:reset_coverage/1
code:get_coverage_mode/0
code:get_coverage_mode/1
code:set_coverage_mode/1
自有 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 和故障
将
cprof
和tags
模块添加到 .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:allocations
和instrument: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/0
在lcnt: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:collect
和lcnt: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/1
和cover: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_flags 和 child_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/1
和erlang: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
短路运算符
andalso
和orelse
现在由覆盖率分析工具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/1
和byte_size/1
已替换为size/1
。自有 ID:OTP-7009
代码覆盖率分析工具
cover
现在可以正确处理短路布尔表达式andalso/2
和orelse/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
错误崩溃。
改进和新功能
在
tags.erl
中,用对filelib:is_dir/1
和filelib:is_regular/1
的调用替换了对已弃用函数file:file_info/1
的调用。内部 ID:OTP-6079
工具 2.4.7
修复的错误和故障
修复了
fprof
分析中导致错误的、不一致的跟踪失败的错误。内部 ID:OTP-5922 辅助 ID:seq10203
工具 2.4.6
修复的错误和故障
Emacs:
erlang-man-function
和erlang-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
以了解如何提供解密密钥,以便可以使用调试器、xref
或cover
等工具。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