檢視原始碼 工具發行說明

本文描述了對 Tools 應用程式所做的變更。

Tools 4.1.1

修正錯誤與故障

  • 修正了 emacs-29 上的一些已棄用錯誤。

    自身 ID:OTP-19273 輔助 ID:PR-8879

  • cover 工具有時可能會錯誤地將某些行回報為未覆蓋。

    自身 ID:OTP-19289 輔助 ID:GH-8867PR-8919

  • 修正了 tprof:format(IoDevice, ...),使其不再要求 IoDevice 支援 Unicode 編碼。

    自身 ID:OTP-19299 輔助 ID:PR-8949

Tools 4.1

修正錯誤與故障

  • 當分析所有模組時,使用暫停/重新啟動/繼續時,tprof 不再崩潰。

    自身 ID:OTP-19136 輔助 ID:GH-8472PR-8472PR-8541

  • 在支援原生覆蓋率的系統上,如果從 cover 外部重新載入了經過覆蓋率編譯的模組,則呼叫 cover 可能會掛起或崩潰。此問題已修正,cover 現在可以從錯誤中恢復,並向記錄器傳送關於無法檢索覆蓋率資訊的報告。

    自身 ID:OTP-19203 輔助 ID:GH-8661PR-8742

改進與新功能

  • 文件中的圖形已得到改進。

    自身 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}]}

    自身 ID:OTP-18998 輔助 ID:GH-8159PR-8182

  • 修正了 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

    潛在的不相容性

    自身 ID:OTP-18750 輔助 ID:OTP-18746、PR-7313PR-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 模式中的 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

修正錯誤和故障

  • 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

修正錯誤和故障

  • 如果兩個程序嘗試在完全相同的時間啟動 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:allocationsinstrument: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/0lcnt 伺服器將不再當機。

    自有 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:collectlcnt: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/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 資料表中存在第 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_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

改進和新功能

  • 將 log2 直方圖新增至 lcnt 以取得鎖定等待時間。

    自有 ID:OTP-12059

工具 2.6.15

已修正的錯誤和故障

  • 移除 erlang:bitstr_to_list/1erlang: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 現在可以正確處理短路運算子 andalsoorelse(不再檢查第二個引數是否傳回布林值。)

    內部 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

  • 已更新「向後刪除字元直到標籤」的按鍵對應,以在 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,了解如何提供解密金鑰,以便可以使用 Debugger、xrefcover 等工具。

    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