檢視原始碼 工具發行說明
本文描述了對 Tools 應用程式所做的變更。
Tools 4.1.1
修正錯誤與故障
修正了 emacs-29 上的一些已棄用錯誤。
自身 ID:OTP-19273 輔助 ID:PR-8879
cover
工具有時可能會錯誤地將某些行回報為未覆蓋。修正了
tprof:format(IoDevice, ...)
,使其不再要求IoDevice
支援 Unicode 編碼。自身 ID:OTP-19299 輔助 ID:PR-8949
Tools 4.1
修正錯誤與故障
當分析所有模組時,使用暫停/重新啟動/繼續時,
tprof
不再崩潰。在支援原生覆蓋率的系統上,如果從
cover
外部重新載入了經過覆蓋率編譯的模組,則呼叫cover
可能會掛起或崩潰。此問題已修正,cover
現在可以從錯誤中恢復,並向記錄器傳送關於無法檢索覆蓋率資訊的報告。
改進與新功能
文件中的圖形已得到改進。
自身 ID:OTP-19130 輔助 ID:PR-7226
Tools 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 模式中的 align 命令。
自身 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 模式中的 align 命令。
自身 ID:OTP-19080 輔助 ID:PR-8288
Tools 3.6
改進與新功能
現已實作 EEP 58 中建議的 Map Comprehensions。
自身 ID:OTP-18413 輔助 ID:EEP-58、PR-6727
instrument
模組已從tools
移至runtime_tools
。自身 ID:OTP-18487 輔助 ID:PR-6829
Tools 3.5.3
改進與新功能
移除了先前未公開且不受支援的
emem
工具。自身 ID:OTP-17892 輔助 ID:PR-5591
Tools 3.5.2
修正錯誤與故障
Erlang 模式已針對使用 CL-Lib 結構而非 EIEIO 類別的較新版本 xref 進行修正。
自身 ID:OTP-17746 輔助 ID:GH-5314、PR-5324
Tools 3.5.1
修正錯誤與故障
cover
工具無法在以tuple_calls
選項編譯的模組上運作。自身 ID:OTP-17440 輔助 ID:GH-4796
Tools 3.5
修正錯誤與故障
對於經過覆蓋率編譯的程式碼,使用保護中的
andalso
/orelse
的清單和二元 Comprehensions 的錯誤行為可能會發生變更,導致本應在保護內容中評估的篩選器在主體內容中評估。也就是說,當使用cover
執行時,沒有引發例外狀況的 Comprehensions 有可能會引發例外狀況。自身 ID:OTP-17221 輔助 ID:PR-4547
改進與新功能
已捨棄對 OTP R15 之前建立的抽象程式碼的處理支援。
自身 ID:OTP-16678 輔助 ID:PR-2627
新增類型和規格以供文件使用。
自身 ID:OTP-16957
已移除實驗性的 HiPE 應用程式,以及其他應用程式中的所有相關功能。
* 潛在的不相容性 *
自身 ID:OTP-16963
Tools 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
Tools 3.4.3
修正錯誤與故障
修正 Xref 分析
undefined_functions
,使其不會回報內部產生的 behaviour_info/1。自身 ID:OTP-17191 輔助 ID:OTP-16922、ERL-1476、GH-4192
Tools 3.4.2
修正錯誤與故障
修正 Xref 分析
exports_not_used
,使其不會回報內部產生的behaviour_info/1
。自身 ID:OTP-16922 輔助 ID:PR-2752
Tools 3.4.1
修正錯誤與故障
修正 Xref 分析
locals_not_used
,使其能夠找到僅從on_load
函式呼叫的函式。自身 ID:OTP-16854 輔助 ID:PR-2750
Tools 3.4
改進與新功能
針對新的
erlang:term_to_iovec()
BIF 進行更新。自身 ID:OTP-16128 輔助 ID:OTP-15618
改善了
instrument
模組中配置和載體的呈現方式。自有 ID:OTP-16327
由於新的生成改進而進行的次要更新。
自有 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
cover 工具可能會為模組產生檢測過的程式碼,而該程式碼會導致發出警告。
自有 ID:OTP-16476 輔助 ID:ERL-1147
已修正產生的 fprof 分析格式,使其也能處理 maps 中的資料。
自有 ID:OTP-16498 輔助 ID:ERL-814
工具 3.3
修正錯誤和故障
改進 emacs 模式中的
-spec
縮排。自有 ID:OTP-16164
改進和新功能
已改進 Emacs erlang-mode 函數,該函數可讓使用者在 Emacs 緩衝區中開啟 Erlang/OTP 函數的文件。已修正此函數中的錯誤,現在如果系統上找不到手冊頁,系統會詢問使用者是否應由 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
修正錯誤和故障
如果兩個程序嘗試在完全相同的時間啟動
cover
,則cover
將無法啟動。自有 ID:OTP-15813 輔助 ID:ERL-943
工具 3.2
修正錯誤和故障
將
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
修正錯誤和故障
如果兩個程序嘗試在完全相同的時間啟動
cover
,則cover
將無法啟動。自有 ID:OTP-15813 輔助 ID:ERL-943
工具 3.1
修正錯誤和故障
針對
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
修正錯誤和故障
如果兩個程序嘗試在完全相同的時間啟動
cover
,則cover
將無法啟動。自有 ID:OTP-15813 輔助 ID:ERL-943
工具 2.11.2.1
修正錯誤和故障
針對
make clean
的次要修正。自有 ID:OTP-15657
工具 2.11.2
修正錯誤和故障
已修正
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
修正錯誤和故障
已移除文件中所有舊的未使用檔案。
自有 ID:OTP-14475 輔助 ID:ERL-409, PR-1493
工具 2.11
修正錯誤和故障
預定義的 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 atoms。
自有 ID:OTP-14464
新增
erlang:iolist_to_iovec/1
,其會將 iolist() 轉換為 erlang:iovec(),適合與enif_inspect_iovec
一起使用。自有 ID:OTP-14520
工具 2.10.1
已修正的錯誤和故障
在 OTP-20.0 中,c、make 和 ct_make 的行為被更改,在某些情況下,beam 檔案預設會寫入原始碼檔案所在的目錄。現在已改回舊的行為,beam 檔案預設會寫入目前目錄。
自有 ID:OTP-14489 輔助 ID:ERL-438
工具 2.10
已修正的錯誤和故障
在某些情況下,
make:all()
和其他相關函式無法偵測到位於目前目錄中 include 檔案的變更。現在已修正此問題。自有 ID:OTP-14339 輔助 ID:ERL-395
改進和新功能
make
模組現在接受{emake,Emake}
選項。自有 ID:OTP-14253
由於 atom 包含任意 Unicode 字元而進行的雜項更新。
自有 ID:OTP-14285
工具 2.9.1
改進和新功能
改進了 emacs 模式中的 edoc 支援。
自有 ID:OTP-14217 輔助 ID:PR-1282
工具 2.9
已修正的錯誤和故障
修正 fprof 中未處理的追蹤事件 send_to_non_existing_process。
自有 ID:OTP-13998
改進和新功能
改進了 emacs erlang-mode 中的 edoc 支援。
自有 ID:OTP-13945 輔助 ID:PR-1157
將 erldoc 新增到 emacs 模式,可從 emacs 在瀏覽器中開啟 html 文件。例如
M-x erldoc-browse RET lists:foreach/2
。自有 ID:OTP-14018 輔助 ID:PR-1197
工具 2.8.6
已修正的錯誤和故障
已修正來自 bugs.erlang.org 的 Jira 案例 ERL-172 和 ERL-187 中
gen_statem:code_change/4
的類型規格和 Emacs 範本產生中的錯誤。自有 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 資料表中存在第 0 行時,cover:analyse_to_file/1 無法在輸出檔案中插入 cover 資料。現在已修正此問題。
自有 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
改進和新功能
允許 supervisor 旗標和子規格使用映射。
先前,supervisor 旗標和子規格以元組形式提供。雖然保留此格式以確保回溯相容性,但現在也允許將這些參數以映射形式提供,請參閱 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
改進和新功能
將 log2 直方圖新增至 lcnt 以取得鎖定等待時間。
自有 ID:OTP-12059
工具 2.6.15
已修正的錯誤和故障
移除
erlang:bitstr_to_list/1
和erlang:list_to_bitstr/1
。它們是錯誤新增的,而且在呼叫時總是會引發undefined
例外狀況。自有 ID:OTP-11942
工具 2.6.14
已修正的錯誤和故障
移除 emacs 模式中的查詢關鍵字支援 (感謝 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
已將用於測試 appup 檔案的新測試公用程式新增至 test_server。現在 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 中使用 maps
內部 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
改進與新功能
修正 cover 在搭配 no_auto_import 使用時的錯誤。感謝 José Valim。
內部 ID:OTP-10778
工具 2.6.9
錯誤修正與功能失效修復
在 app-file 中新增遺失的模組
內部 ID:OTP-10439
讓 erlang-mode 更相容於 package.el (感謝 Gleb Peregud)
內部 ID:OTP-10465
修正各種錯字 (感謝 Tuncer Ayaz)
內部 ID:OTP-10611
為匯出的函數新增單獨的 face (感謝 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 編譯的模組都會在嘗試將 cover 資料插入 cover_server 上以前存在的 ets 表格時導致程序崩潰。如果節點重新連線,新的功能也涉及與主要節點同步。
* 潛在的不相容性 *
內部 ID:OTP-10523 輔助 ID:OTP-10427
在必要時,已在 Erlang 檔案中新增說明編碼的註解。此註解旨在 Erlang/OTP R17B 時移除,屆時 UTF-8 將成為預設編碼。
內部 ID:OTP-10630
修正 Emacs 模式中 $\' 的語法強調。感謝 Magnus Henoch。
內部 ID:OTP-10766
工具 2.6.8
錯誤修正與功能失效修復
已從 fprof 中移除最後一個元組函式呼叫。
內部 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 強調
例如:'atom$'。在此範例中,最後一個單引號應識別為 atom 的結尾。這需要類似於字串的 font-lock 解決方法。感謝 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 include 目錄。
更新 erlang-flymake 以將 "deps" 資料夾識別為 include 目錄。這使 erlang-flymake 與 rebar 依賴性管理工具的預設資料夾結構相容,該結構會將包含的依賴性置於 "deps" 中。(感謝 Kevin Albrecht)
內部 ID:OTP-9791
改進與新功能
根據 Richard O'Keefe 在 EEP-23 中的建議,現在允許在 '
fun M:F/A
' 中使用變數。抽象格式中 '
fun M:F/A
' 的表示方式已變更,且不相容。直接讀取或操作抽象格式的工具 (例如剖析轉換) 可能需要更新。編譯器可以處理新格式和舊格式 (亦即,從 pre-R15 BEAM 檔案中提取抽象格式並使用 compile:forms/1,2 編譯將會運作)。syntax_tools
應用程式也可以處理這兩種格式。* 潛在的不相容性 *
內部 ID:OTP-9643
元組函式 (包含模組名稱和函式的雙元素元組) 現在已正式棄用,並將在 R16 中移除。請改用 '
fun M:F/A
'。為了讓您知道您的系統使用元組函式,第一次應用元組函式時,將會向錯誤記錄器傳送警告。內部 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 已改進以減少記憶體使用量,並允許並行分析 cover 資料。現在可以並行完成從節點收集資料,並且現在可以同時發出多個 analyze 和 analyze_to_file 請求。也引入了一個新的函式呼叫 async_analyse_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
程式碼覆蓋率分析工具
cover
現在可以正確處理短路運算子andalso
和orelse
(不再檢查第二個引數是否傳回布林值。)內部 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
已更新「向後刪除字元直到標籤」的按鍵對應,以在 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
中,將呼叫已棄用的函式file:file_info/1
替換為呼叫filelib:is_dir/1
和filelib:is_regular/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
,了解如何提供解密金鑰,以便可以使用 Debugger、xref
或cover
等工具。beam_lib:chunks/2
函式現在接受額外的區塊類型 'compile_info
',以直接以術語形式擷取編譯資訊。(感謝 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