檢視原始碼 Erl_interface 發行說明
本文件說明 Erl_interface 應用程式的變更。
Erl_Interface 5.5.2
改進與新功能
文件已遷移至使用 Markdown 和 ExDoc。
內部 ID:OTP-18955 輔助 ID:PR-8026
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 5.5.1
已修復錯誤與故障
修復系統安裝的 openssl/md5.h 會與供應商提供的 md5.h 混淆的錯誤。
內部 ID:OTP-18931 輔助 ID:GH-7987 PR-7989
Erl_Interface 5.5
已修復錯誤與故障
修復 Windows 上的一些良性編譯警告。
內部 ID:OTP-18895
改進與新功能
新增使用
ei_x_format
編碼映射的功能。內部 ID:OTP-18764 輔助 ID:PR-7602
以 OpenSSL 的實作取代舊的 md5 實作。
內部 ID:OTP-18877
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 5.4
改進與新功能
自 OTP 24 發行以來已宣布,支援
- 外部項格式中的第 4 版節點容器類型現在為強制性。也就是說,參考最多支援 5 個 32 位元整數識別碼,以及支援 64 位元資料儲存的程序和連接埠識別碼。因此,發佈旗標
DFLAG_V4_NC
現在也是強制性的。自 OTP 24 以來,OTP 已支援此功能。另請注意,term_to_binary()
和term_to_iovec()
產生的外部格式將無條件產生支援此較大格式的 pids、連接埠和參考。 - OTP 23.3 中導入的新連結協定現在為強制性。因此,發佈旗標
DFLAG_UNLINK_ID
現在也是強制性的。
由於上述原因,OTP 26 節點將拒絕連線至 OTP 24 之前版本的 OTP 節點。
* 可能不相容 *
內部 ID:OTP-18140 輔助 ID:PR-6072
- 外部項格式中的第 4 版節點容器類型現在為強制性。也就是說,參考最多支援 5 個 32 位元整數識別碼,以及支援 64 位元資料儲存的程序和連接埠識別碼。因此,發佈旗標
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 5.3.2.1
改進與新功能
以 OpenSSL 的實作取代舊的 md5 實作。
內部 ID:OTP-18877
Erl_Interface 5.3.2
已修復錯誤與故障
修復一些特定 ARM 指令的組態測試,這些測試會阻止模擬器在某些平台上建置。
內部 ID:OTP-18554
Erl_Interface 5.3.1
已修復錯誤與故障
接受來自未使用 epmd 的 OTP 23 和 24 節點的連線設定。
內部 ID:OTP-18404 輔助 ID:GH-6595、PR-6625
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 5.3
已修復錯誤與故障
erl_call
不再連結到由 libc 提供的平台上nsl
gethostbyname
。內部 ID:OTP-17846 輔助 ID:PR-5558
改進與新功能
下列發佈旗標現在為強制性:
DFLAG_BIT_BINARIES
、DFLAG_EXPORT_PTR_TAG
、DFLAG_MAP_TAGS
、DFLAG_NEW_FLOATS
和DFLAG_FUN_TAGS
。這主要與自行實作發佈協定的程式庫或應用程式有關。內部 ID:OTP-17318 輔助 ID:PR-4972
為
autoconf
2.71 調整configure
指令碼的輸入。內部 ID:OTP-17414 輔助 ID:PR-4967
移除使用節點建立值零作為萬用字元。同時防止
erl_interface
和jinterface
節點使用零作為建立值。內部 ID:OTP-17682 輔助 ID:PR-5347
變更函式
ei_connect_init
及其相關函式的creation
引數類型,從short
變更為unsigned int
,以取得完整的 32 位元範圍。內部 ID:OTP-17802 輔助 ID:PR-5347
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 5.2.2.1
改進與新功能
以 OpenSSL 的實作取代舊的 md5 實作。
內部 ID:OTP-18877
Erl_Interface 5.2.2
已修復錯誤與故障
如果未提供組態選項
--enable-ei-dynamic-lib
,則避免嘗試建置動態程式庫。內部 ID:OTP-17987 輔助 ID:GH-5781、PR-5787
Erl_Interface 5.2.1
已修復錯誤與故障
修復關於 Android 上
gethostbyaddr_r
的編譯錯誤。錯誤在 OTP 24.3 中導入。內部 ID:OTP-17975 輔助 ID:PR-5763
Erl_Interface 5.2
改進與新功能
新增
--enable-ei-dynamic-lib
組態選項,此選項會讓 erl_interface 也發佈 libei 的動態程式庫版本。內部 ID:OTP-17883 輔助 ID:PR-5601 ERIERL-724
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 5.1
改進與新功能
現在當引數無法剖析時,erl_call 會印出錯誤訊息。
內部 ID:OTP-17626
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 5.0.1
已修復錯誤與故障
提交產生的
configure
指令碼。內部 ID:OTP-17420 輔助 ID:OTP-17398、GH-4821
Erl_Interface 5.0
已修復錯誤與故障
已將兩個選項新增至
erl_call
。-fetch_stdout
選項會擷取由erl_call
叫用的程式碼產生的 stdout 資料。-fetch_stdout
選項會停用結果項的列印。為了實作這兩個選項的第一個選項,已將一個名為ei_xrpc_from
的新函式新增至 erl_interface。如需詳細資訊,請參閱erl_call
文件和erl_interface
文件。內部 ID:OTP-17132
改進與新功能
接受來自外部節點的 64 位元程序識別碼。這是未來 OTP 版本中使用 64 位元 pid 的升級路徑中的第一步。
內部 ID:OTP-16720 輔助 ID:PR-2680
已移除實驗性 HiPE 應用程式,以及其他應用程式中的所有相關功能。
* 可能不相容 *
內部 ID:OTP-16963
已移除
erl_interface
的registry
功能部分。它在 OTP 23 中已被棄用,並計劃在 OTP 24 中移除。* 可能不相容 *
自有 ID:OTP-16970
接受來自遠端節點,大小最大為 160 位元的參考 (references)。這是朝向未來 OTP 版本使用最大 160 位元參考的升級路徑的第一步。
自有 ID:OTP-17005 輔助 ID:OTP-16718
接受來自外部節點的 64 位元埠識別符號。這是朝向未來 OTP 版本使用 64 位元埠識別符號的升級路徑的第一步。
自有 ID:OTP-17007
支援新的連結協定,以便未來逐步淘汰舊的連結協定。
erl_interface
不支援從erl_interface
端建立或移除連結,因此舊協定中存在的錯誤並未影響erl_interface
。這是因為連結的雙方必須同時操作連結才能觸發該錯誤。自有 ID:OTP-17270 輔助 ID:OTP-17127
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 4.0.3.1
已修正的錯誤與故障
提交產生的
configure
指令碼。內部 ID:OTP-17420 輔助 ID:OTP-17398、GH-4821
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 4.0.3
已修正的錯誤與故障
修正在 TCP 緩衝區滿載時,使用無限超時時間的 ei_send*/ei_rpc 發送大型資料可能會失敗的錯誤。
此錯誤自 OTP-21 開始存在。
自有 ID:OTP-17358 輔助 ID:ERLERL-610
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 4.0.2.1
已修正的錯誤與故障
修正在 TCP 緩衝區滿載時,使用無限超時時間的 ei_send*/ei_rpc 發送大型資料可能會失敗的錯誤。
此錯誤自 OTP-21 開始存在。
自有 ID:OTP-17358 輔助 ID:ERLERL-610
Erl_Interface 4.0.2
已修正的錯誤與故障
超出 [-(1 bsl 32) - 1, (1 bsl 32) -1] 範圍的整數,先前打算由
ei_print_term()
和ei_s_print_term()
以內部 bignum 格式列印。不幸的是,該實作自 OTP R13B02 以來一直存在錯誤,並從那時起產生具有隨機內容的結果,這也可能導致呼叫程式崩潰。此修復程式將內部格式的列印,替換為十六進位格式的列印,並擴展以十進位格式列印的範圍。目前,範圍在 [-(1 bsl 64), (1 bsl 64)] 的整數會以十進位格式列印,而超出此範圍的整數會以 Erlang 十六進位格式列印。
自有 ID:OTP-17099 輔助 ID:ERIERL-585
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 4.0.1
已修正的錯誤與故障
修正 Windows 上的 erl_interface,使其以正確的標誌編譯,以使內部原語可重入。
自有 ID:OTP-16740
修正
ei_get_type
,以依照文件說明,將浮點數、PID、埠和參考的*size
設定為零。自有 ID:OTP-16753 輔助 ID:ERL-1288, PR-2678
修正在使用動態節點名稱時,強制使用分發版本 6 的 ei_connect。
此錯誤導致
erl_call -R -address
無法正常運作。自有 ID:OTP-16786
改進與新功能
為了在 Haiku 作業系統上建置所做的變更。
感謝 Calvin Buckley
自有 ID:OTP-16707 輔助 ID:PR-2638
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 4.0
已修正的錯誤與故障
修正 64 位元 Windows 上各種編譯器警告。
自有 ID:OTP-15800
erl_call
現在將在無法解析自己主機名稱的系統上正常運作。自有 ID:OTP-16604
各種錯誤修正
- 各種函式中的內部錯誤檢查。
ei_rpc()
接受任何 2 元組訊息作為 RPC 回應。- 如果解碼了巨大的參考,
ei_decode_ref()
現在會拒絕寫入已分配記憶體之外的位置。 ei_decode_ei_term()
現在會報告與ei_get_type()
相同的詞彙類型。
自有 ID:OTP-16623
改進與新功能
用戶端節點可以從其第一次連線到的節點動態接收其節點名稱。此功能可透過下列方式使用
- 以
erl -sname undefined
開始 - erl_interface 函式
ei_connect_init
及其相關函式 erl_call -R
自有 ID:OTP-13812
- 以
將節點化身數字(又稱「建立」)的大小從 2 位元增加到 32 位元。這將減少來自不同化身、但名稱相同的節點的 PID/埠/參考被混淆的風險。
自有 ID:OTP-15603
修正將 Erlang/OTP 編譯到 IBM AIX 平台時的各種建置問題。
自有 ID:OTP-15866 輔助 ID:PR-2110
改進節點連線設定交握協定。使得能夠在不依賴
epmd
或其他先前對等節點版本知識的情況下,同意協定版本。也加入了節點化身(「建立」)值的交換,並將分發能力標記欄位從 32 位元擴展到 64 位元。自有 ID:OTP-16229
新的
erl_call
選項-address [Host]:Port
,可直接連線到節點,而無需依賴epmd
來解析節點名稱。自有 ID:OTP-16251
如 OTP 22.0 中所宣告,現在已移除
erl_interface
中已棄用的部分(基本上是所有以erl_
為字首的 C 函式)。* 可能不相容 *
自有 ID:OTP-16328
如 OTP 22.0 中所宣告,現在已移除先前對 VxWorks 的有限支援。
* 可能不相容 *
自有 ID:OTP-16329 輔助 ID:OTP-15621
新的函式
ei_connect_host_port
及其相關函式,允許節點連線,而無需依賴epmd
來解析節點名稱。自有 ID:OTP-16496 輔助 ID:OTP-16251
已將許多新函式新增至
erl_interface
API自有 ID:OTP-16594
為
erl_call
新增-timeout
選項。自有 ID:OTP-16624
自 OTP 23 起,
erl_interface
的registry
功能已棄用,並將在 OTP 24 中移除。當使用此功能時,較新的gcc
編譯器將發出棄用警告。為了停用這些警告,請定義巨集EI_NO_DEPR_WARN
。* 可能不相容 *
自有 ID:OTP-16630
文件改進。
自有 ID:OTP-16633
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 3.13.2.2
已修正的錯誤與故障
提交產生的
configure
指令碼。內部 ID:OTP-17420 輔助 ID:OTP-17398、GH-4821
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 3.13.2.1
已修正的錯誤與故障
修正在 TCP 緩衝區滿載時,使用無限超時時間的 ei_send*/ei_rpc 發送大型資料可能會失敗的錯誤。
此錯誤自 OTP-21 開始存在。
自有 ID:OTP-17358 輔助 ID:ERLERL-610
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 3.13.2.0.1
已修正的錯誤與故障
修正在 TCP 緩衝區滿載時,使用無限超時時間的 ei_send*/ei_rpc 發送大型資料可能會失敗的錯誤。
此錯誤自 OTP-21 開始存在。
自有 ID:OTP-17358 輔助 ID:ERIERL-610
Erl_Interface 3.13.2
已修正的錯誤與故障
修正 gcc 版本 10 或以 gcc 選項 -fno-common 建置時的連結錯誤「`ei_default_socket_callbacks' 的多重定義」。此錯誤自 OTP-21.3 開始存在。
自有 ID:OTP-16412 輔助 ID:PR-2503
Erl_Interface 3.13.1
已修正的錯誤與故障
修正 Windows 和其他沒有 gcc 原子操作的平台的使用者提供的 socket 實作。
自有 ID:OTP-16308
Erl_Interface 3.13
已修正的錯誤與故障
修正二進位檔案和位元字串的
ei_print_term
中的錯誤,導致輸出不正確。自有 ID:OTP-15917
修正非常舊的 fun 編碼格式的
ei_decode_fun
中的錯誤。此錯誤自 OTP 22.0 開始存在。自有 ID:OTP-15996
改進與新功能
ei_print_term()
現在支援列印映射 (maps) 和函式 (funs)。內部 ID:OTP-15814
Erl_Interface 3.12
已修正的錯誤與故障
vxworks 的配置已更新,以遵循環境變數 CFLAGS。
內部 ID:OTP-15773
改進與新功能
針對平行配置 (parallel configure) 對建置系統進行了微小的調整。
內部 ID:OTP-15340 輔助 ID:OTP-14625
自 OTP 22 起,對 VxWorks 的有限支援已棄用,並將在 OTP 23 中移除。
* 可能不相容 *
內部 ID:OTP-15621
自 OTP 22 起,舊有的
erl_interface
函式庫(以erl_
為字首的函式)已棄用,並將在 OTP 23 中移除。這不適用於ei
函式庫。較新的gcc
編譯器會發出棄用警告。為了停用這些警告,請定義巨集EI_NO_DEPR_WARN
。* 可能不相容 *
內部 ID:OTP-15622
新增支援以接收、解碼、編碼和傳送位元字串和匯出函式 (export funs)(
fun M:F/A
)。新增了函式
ei_decode_bitstring
和ei_encode_bitstring
,以便解碼和編碼位元數不一定能被 8 整除(非完整位元組數)的位元字串。現有的函式ei_decode_fun
和ei_encode_fun
現在也可以處理匯出函式。在此變更之前,傳送到 erl_interface C 節點的位元字串和匯出函式是使用未記載的回退元組格式編碼的。對於位元字串,使用
{Binary,BitsInLastByte}
,對於匯出函式,使用{M,F}
。期望這些元組的現有 C 節點實作必須變更為改用ei_decode_bitstring
和ei_decode_fun
。作為臨時解決方案,您也可以使用巨集EI_COMPAT=21
建置 erl_interface,或呼叫ei_set_compat_rel(21)
來接收舊的回退元組。* 可能不相容 *
內部 ID:OTP-15712 輔助 ID:OTP-15774
Erl_Interface 3.11.3.2
已修正的錯誤與故障
修正在 TCP 緩衝區滿載時,使用無限超時時間的 ei_send*/ei_rpc 發送大型資料可能會失敗的錯誤。
此錯誤自 OTP-21 開始存在。
自有 ID:OTP-17358 輔助 ID:ERLERL-610
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 3.11.3.1
已修正的錯誤與故障
修正 gcc 版本 10 或以 gcc 選項 -fno-common 建置時的連結錯誤「`ei_default_socket_callbacks' 的多重定義」。此錯誤自 OTP-21.3 開始存在。
自有 ID:OTP-16412 輔助 ID:PR-2503
已知錯誤與問題
用於解碼/編碼項目的
ei
API 並非完全 64 位元相容,因為無法處理外部項格式中表示大於 2 GB 的項目。內部 ID:OTP-16607 輔助 ID:OTP-16608
Erl_Interface 3.11.3
已修正的錯誤與故障
erl_interface
/ei
拒絕使用存活名稱(節點名稱中 @ 符號之前的部分)超過 63 個字元且主機名稱超過 64 個字元的節點名稱。因此,節點名稱中允許的字元總數(存活名稱@主機名稱)被限制為 128 個字元。這些限制適用於自身的節點名稱以及其他節點的節點名稱。普通的 Erlang 節點將節點名稱長度限制為 256 個字元,這意味著您可能無法與某些 Erlang 節點通信,因為它們使用的節點名稱過長。erl_interface
/ei
現在允許節點名稱中的字元總數最多為 256 個字元。這些字元可以根據需要分配到存活名稱和主機名稱之間。也就是說,存活名稱中的最大字元數可以是 254 個,主機名稱中的最大字元數可以是 254 個,但總計節點名稱不得超過 256 個字元。內部 ID:OTP-15781 輔助 ID:ERIERL-356
Erl_Interface 3.11.2.1
已修正的錯誤與故障
erl_interface
/ei
拒絕使用存活名稱(節點名稱中 @ 符號之前的部分)超過 63 個字元且主機名稱超過 64 個字元的節點名稱。因此,節點名稱中允許的字元總數(存活名稱@主機名稱)被限制為 128 個字元。這些限制適用於自身的節點名稱以及其他節點的節點名稱。普通的 Erlang 節點將節點名稱長度限制為 256 個字元,這意味著您可能無法與某些 Erlang 節點通信,因為它們使用的節點名稱過長。erl_interface
/ei
現在允許節點名稱中的字元總數最多為 256 個字元。這些字元可以根據需要分配到存活名稱和主機名稱之間。也就是說,存活名稱中的最大字元數可以是 254 個,主機名稱中的最大字元數可以是 254 個,但總計節點名稱不得超過 256 個字元。內部 ID:OTP-15781 輔助 ID:ERIERL-356
Erl_Interface 3.11.2
已修正的錯誤與故障
修復了 Makefile 依賴項的處理,以便平行 make 可以正常運作。
內部 ID:OTP-15757
Erl_Interface 3.11.1
已修正的錯誤與故障
修復了
erl_call
程式中的兩個錯誤。一個是遺失的初始化(在erl_interface-3.11
中引入),會導致崩潰或無法連接或啟動節點;另一個是不正確計算的逾時,可能會導致無法啟動 erlang 節點。這些錯誤僅在某些平台上導致失敗。內部 ID:OTP-15676 輔助 ID:OTP-15442, ERL-881
Erl_Interface 3.11
改進與新功能
新增了對 使用者提供的套接字實作外掛程式的支援。
內部 ID:OTP-15442 輔助 ID:ERIERL-258
Erl_Interface 3.10.4
已修正的錯誤與故障
讓
ei_connect
及其相關函數在交握期間也接受狀態ok_simultaneous
,這表示另一個節點已發起連線設定,但將取消連線設定而改用此連線。內部 ID:OTP-15161 輔助 ID:ERIERL-191
修復了
ei_receive_msg
、ei_xreceive_msg
、ei_receive_msg_tmo
和ei_xreceive_msg_tmo
中的錯誤。x->index
被設定為整個緩衝區大小,而不是實際接收的位元組數。內部 ID:OTP-15171
修復了
ei_connect_init
中的錯誤,如果在併發執行緒中呼叫可能會引發該錯誤。ei_connect_init
呼叫了 posix 介面gethostbyname
,該介面被記載為非執行緒安全。內部 ID:OTP-15191
修復了 erl_compare_ext() 忽略具有相同內容的清單尾端的錯誤。範例:
[a | b]
和[a | c]
被比較為相等,{[a], b}
和{[a], c}
被比較為相等。內部 ID:OTP-15277 輔助 ID:PR-1929
Erl_Interface 3.10.3
已修正的錯誤與故障
修復了在某些平台上呼叫 erl_init 可能會導致緩衝區溢位錯誤的問題。
內部 ID:OTP-15033
修正了
erl_call -m
在讀取模組原始二進制檔之前不會釋放的問題。內部 ID:OTP-15105 輔助 ID:ERL-629
改進與新功能
程式
erl_call
在過去呼叫lib:eval_str/1
時,現在呼叫erl_eval:eval_str/1
。這表示當erl_call
嘗試與執行 Erlang/OTP 20 或更早版本的 Erlang 節點互動時,將會失敗。內部 ID:OTP-15114 輔助 ID:OTP-15072, ERL-634
Erl_Interface 3.10.2.2
已修正的錯誤與故障
修復了 Makefile 依賴項的處理,以便平行 make 可以正常運作。
內部 ID:OTP-15757
Erl_Interface 3.10.2.1
已修正的錯誤與故障
讓
ei_connect
及其相關函數在交握期間也接受狀態ok_simultaneous
,這表示另一個節點已發起連線設定,但將取消連線設定而改用此連線。內部 ID:OTP-15161 輔助 ID:ERIERL-191
Erl_Interface 3.10.2
已修正的錯誤與故障
修復了
ei_connect
函數中的錯誤,該錯誤可能會由於 gethostbyname_r 的緩衝區空間不足而導致失敗。內部 ID:OTP-15022 輔助 ID:ERIERL-163
最佳化純 7 位元 ASCII 原子 (atom) 的編碼/解碼。
內部 ID:OTP-15023 輔助 ID:ERIERL-150
Erl_Interface 3.10.1
已修正的錯誤與故障
移除了文件中所有舊的未使用檔案。
內部 ID:OTP-14475 輔助 ID:ERL-409, PR-1493
Erl_Interface 3.10
已修正的錯誤與故障
修復了 gethostname 在 Linux 上會不正確地因為 enametoolong 而失敗的錯誤。
內部 ID:OTP-14310
改進與新功能
移除了在 erlang 節點、
erl_interface
和jinterface
之間的分配中,以舊的 latin1 外部格式產生的原子。原子新的 utf8 格式是在 OTP R16 中引入的。因此,OTP 20 節點無法連接到早於 R16 的節點。可以使用 latin1 編碼的原子 (Atom) 仍然會使用 latin1 編碼透過
term_to_binary()
進行編碼。請注意,在未來 Erlang/OTP 版本中,預設情況下所有原子都將使用 utf8 進行編碼。如需更多資訊,請參閱erlang:term_to_binary/2
的說明文件。自身 ID:OTP-14337
Erl_Interface 3.9.3
改進與新功能
小的文件更新
自身 ID:OTP-14233 輔助 ID:PR-1343
Erl_Interface 3.9.2
已修正的錯誤與故障
修正
ei_connect_init
和ei_connect_xinit
以調整creation
參數,使其與 OTP-19 之前的節點相容。自身 ID:OTP-13981
改進與新功能
編輯文件變更
自身 ID:OTP-13980
Erl_Interface 3.9.1
已修正的錯誤與故障
如果未設定 HOMEDRIVE 和 HOMEPATH,則在 Windows 系統目錄中尋找 .erlang.cookie。與 VM 的行為相同。
自身 ID:OTP-13849
Erl_Interface 3.9
已修正的錯誤與故障
修正在 erl_decode 中 LLONG_MIN 的解碼
自身 ID:OTP-13666 輔助 ID:ERL-158
在 Windows 上,當嘗試解碼不適合 long 的數字時,
ei_decode_ulong
和ei_decode_long
現在會正確地傳回錯誤。修正了在 Windows 上啟用 ei 追蹤會導致區段錯誤的錯誤。自身 ID:OTP-13673
改進與新功能
處理來自 'creation' 值大於 3 的節點的 term(pids、ports 和 refs)。這是為了準備發布協議,以允許 OTP 19 節點與未來的節點(20 或更高版本)正確通訊。 'creation' 值區分同一個節點(名稱)的不同化身。
自身 ID:OTP-13488
Erl_Interface 3.8.2
已修正的錯誤與故障
修正在 Debian/Hurd 和 Debian/kFreeBSD 上的 Erl_Interface 建置錯誤。(感謝 Sergei Golovan)
自身 ID:OTP-13328
改進與新功能
EPMD 同時支援 IPv4 和 IPv6
也影響最舊的支援 Windows 版本。
自身 ID:OTP-13364
Erl_Interface 3.8.1
改進與新功能
修正 gethostbyname_r 和 gethostbyaddr_r 的條件選擇。
自身 ID:OTP-13188
Erl_Interface 3.8
改進與新功能
不接受 Nan 和 Infinity 值
Erlang 不接受這些值,因此我們在 C 介面中傳回錯誤,而不是讓它們傳遞到 Erlang VM,Erlang VM 會以有些隱晦的「bad external term」拒絕訊息。
自身 ID:OTP-12801
Erl_Interface 3.7.20
已修正的錯誤與故障
在非 GCC 編譯器上可用時,使用 C99 函數 isfinite() 而不是 finite()。
自身 ID:OTP-12268
改進與新功能
在建置時將
autoconf
協助程式分配到應用程式,而不是在儲存庫中提交多個相同的副本。自身 ID:OTP-12348
為應用程式新增了一個 .appup 檔案。
自身 ID:OTP-12358 輔助 ID:OTP-12178
Erl_Interface 3.7.19
已修正的錯誤與故障
為應用程式新增了一個
.app
檔案。自身 ID:OTP-12178
Erl_Interface 3.7.18
已修正的錯誤與故障
實作 --enable-sanitizers[=sanitizers]。與使用 Valgrind 進行偵錯類似,啟用 -fsanitize= 開關以在執行階段捕捉錯誤非常有用。
自身 ID:OTP-12153
Erl_Interface 3.7.17
已修正的錯誤與故障
現在可與 Visual Studio 搭配使用。
自身 ID:OTP-11984
Erl_Interface 3.7.16
已修正的錯誤與故障
修正在 gen_challange 中的 memcheck 警告(感謝 Olivier Girondel)
自身 ID:OTP-11608
Erl_Interface 3.7.15
已修正的錯誤與故障
靜音警告(感謝 Anthony Ramine)
自身 ID:OTP-11517
Erl_Interface 3.7.14
改進與新功能
引入了用於檢查系統和建置配置的功能。
自身 ID:OTP-11196
來自 ic 和 erl_interface 的標頭和程式庫檔案現在會安裝到 usr/{include,lib} 中。請注意,這些目錄未版本化,因此最新安裝的版本將是目錄中的版本。
自身 ID:OTP-11284
修正 Mac OSX 下 true 二進位檔案的位置。感謝 Simon Cornish。
自身 ID:OTP-11289
Erl_Interface 3.7.13
改進與新功能
新增了一個 guard,以檢查檔案描述符在關閉之前是否有效。
自身 ID:OTP-11167
Erl_Interface 3.7.12
已修正的錯誤與故障
enum erlang_char_encoding 中多餘的尾隨逗號導致 g++ 使用 --pedantic 選項時產生編譯錯誤。
自身 ID:OTP-10913 輔助 ID:seq12264
Erl_Interface 3.7.11
已修正的錯誤與故障
還原
erlang_pid
、erlang_port
和erlang_ref
結構,使其與 R16A 之前相同(沒有node_org_enc
),以便與存取這些結構欄位的使用者程式碼向後相容。自身 ID:OTP-10885 輔助 ID:seq12256
Erl_Interface 3.7.10
改進與新功能
在必要時,已在 Erlang 檔案中新增了說明編碼的註解。註解將在 Erlang/OTP R17B 中移除,屆時 UTF-8 將成為預設編碼。
自身 ID:OTP-10630
在外部格式和虛擬機器的內部表示中,對 Unicode 原子提供有限的支援。這是一項準備功能,以便支援與可能建立 Unicode 原子的未來 Erlang/OTP 版本進行通訊。
自身 ID:OTP-10753
Erl_Interface 3.7.9
改進與新功能
教導 lib/erl_interface/configure.in 在 libc 中尋找 pthreads 支援(在 QNX 上可以找到)。
一個小的調整,使得如果您傳遞 --enable-threads 但找不到 pthreads 支援,此設定會失敗。
(感謝 Per Hedeland)
自身 ID:OTP-10581
Erl_Interface 3.7.8
改進與新功能
偵測平台何時使用中間位元組順序雙精度浮點數,並在解碼浮點數時考慮到這一點。(感謝 Mike Sperber)
自身 ID:OTP-10209
Erl_Interface 3.7.7
已修正的錯誤與故障
小的編譯警告抑制和修正
自身 ID:OTP-10016
Erl_Interface 3.7.6
已修正的錯誤與故障
修正了在 OS X Lion 上取得全域名稱時發生的錯誤。該錯誤導致函數傳回被截斷的字串。
自身 ID:OTP-9799
改進與新功能
如果您限制工作數量,Erlang/OTP 現在可以使用並行 make 進行建置,例如使用 '
make -j6
' 或 'make -j10
'。由於缺少一些依賴項,目前 'make -j
' 無法運作。自身 ID:OTP-9451
消除使用已棄用的 regexp 模組
自身 ID:OTP-9810
Erl_Interface 3.7.5
已修正的錯誤與故障
根據指標大小對齊 ei 緩衝區
自有 ID:OTP-9390
XML 檔案已修正。
自有 ID:OTP-9550 輔助 ID:OTP-9541
使註解和文件能反映 erl_interface/src/misc/ei_decode_term.c 中的程式碼(感謝 Anneli Cuss)
自有 ID:OTP-9559
改進和新功能
ei:字串/原子編碼中的整數溢位
ei_encode_atom() 和 ei_encode_string() 使用 strlen() 來取得緩衝區的長度。由於 strlen() 會傳回 unsigned long long,而這兩個 ei 函數都採用有號整數,因此長度欄位可能會溢位。
檢查 strlen 的結果是否能容納在有號整數中。(感謝 Michael Santos)
自有 ID:OTP-9530
Erl_Interface 3.7.4
已修正的錯誤和故障
修正將 sizeof() 用於作為函式引數傳遞的陣列
當對作為函式引數傳遞的陣列使用 sizeof() 運算子時,它會傳回指標的大小。在這種情況下,受影響的函式 hex(char digest[16], char buff[33]) 在 32 位元和 64 位元系統上分別只會列印 4 或 8 個位元組,而不是完整的 16 個位元組。(感謝 Cristian greco)
自有 ID:OTP-9151
在
erl_receive_msg
中初始化to
和to_name
。(感謝 Göran Larsson)自有 ID:OTP-9241
erl_interface:修正編譯錯誤(感謝 Michael Santos)
自有 ID:OTP-9252
Erl_Interface 3.7.3
已修正的錯誤和故障
一些格式錯誤的分散式訊息可能會導致 VM 崩潰,現在已修正。
自有 ID:OTP-8993
加強字串複製檢查(感謝 Michael Santos)。
自有 ID:OTP-9071
在解碼原子時加強原子長度檢查(感謝 Michael Santos)。
自有 ID:OTP-9072
改進和新功能
修正全域註冊。C 節點在連線時需要設定 DFLAG_DIST_MONITOR_FLAT。修正 erl_compare_ext 中的清單比較,以傳回正確的結果。(感謝 Vitaliy Batichko 和 Evgeny Khirin)
自有 ID:OTP-9015
Erl_Interface 3.7.2
已修正的錯誤和故障
erl_call:移除 get_hostent
get_hostent 無法正確處理小端平台的 IPv4 位址,且在主機名稱以數字開頭時會失敗。移除 get_hostent 並直接使用 ei_gethostbyname,因為 gethostbyname 支援 IPv4 位址。
(感謝 Michael Santos)
自有 ID:OTP-8890
教導 ei_x_format 處理一元 - 和 +(感謝 Steve Vinoski)
自有 ID:OTP-8891
修正登錄檔中的零位元組配置。(感謝 Michael Santos)
自有 ID:OTP-8893
檢查節點名稱的長度,以防止溢位。ei_alloc_big 的記憶體錯誤控制。(感謝 Michael Santos)
自有 ID:OTP-8943
erl_interface 中的 erl_term_len() 可能會針對整數傳回過大的值(自 R14B 以來),並針對參考傳回過小的值(自 R9B 以來)。
自有 ID:OTP-8945
Erl_Interface 3.7.1.1
已修正的錯誤和故障
erl_interface
針對 Erlang 訊息的追蹤層級不正確。現在已修正。自有 ID:OTP-8874
Erl_Interface 3.7.1
已修正的錯誤和故障
移除
ei_decode_term.c
中未使用的變數。修正
erl_call
中有缺陷的釋放。自有 ID:OTP-8748
ei_connect:修正手冊範例(感謝 Michael Santos)
自有 ID:OTP-8813
ei:防止
ei_connect_init
和ei_xconnect
中的溢位在複製之前新增緩衝區的長度檢查。(感謝 Michael Santos)
自有 ID:OTP-8814
移除在 Windows Vista 上會失敗的 DECLSPEC 功能,並改用後備實作。
自有 ID:OTP-8826
erl_call:修正多個緩衝區溢位(感謝 Michael Santos)
自有 ID:OTP-8827
改進和新功能
修正
erl_interface
中不正確的 writev iovec 緩衝區處理(感謝 Steve Vinoski)自有 ID:OTP-8837
Erl_Interface 3.7
改進和新功能
壓縮 ei 外部二進位格式中的 IEEE 754 雙精度編碼
- 實作 ei 外部二進位格式中的壓縮 IEEE 754 雙精度編碼。ei 的編碼現在一律產生 NEW_FLOAT_EXT 格式。解碼和詞彙列印會處理舊的 ERL_FLOAT_EXT 編碼和新的 NEW_FLOAT_EXT 編碼。
- 舊版 erl_interface 程式碼也會處理新的編碼,但預設仍會產生 ERL_FLOAT_EXT 編碼。
- 同時啟用 DFLAG_NEW_FLOATS 分散式旗標。
- 無論雙精度的外部格式是以 ERL_FLOAT_EXT 或 NEW_FLOAT_EXT 編碼,ei_get_type() 都會傳回 ERL_FLOAT_EXT。
- 透過盡可能呼叫 ei 編碼和解碼函式,減少在整個 ei 和 erl_interface 中編碼和解碼雙精度的程式碼副本數量。
- 還原 lib/erl_interface/test 中 ei_decode_SUITE 和 ei_encode_SUITE 中已註解的浮點數測試。修改它們,使其與同一套件中其他測試的樣式相符。
這些變更基於 Serge Aleynikov 最初於 2008 年 7 月針對 R12B-2 提交的 ei 浮點數修補程式,並由 Steve Vinoski 於 2010 年 5 月重新製作。
* 可能不相容 *
自有 ID:OTP-8684
Erl_Interface 3.6.5
改進和新功能
記載偵錯支援。
可以透過將追蹤層級設定為整數到 EI_TRACELEVEL 環境變數,來啟用連線活動的偵錯追蹤輸出。此選項也可以使用 ei_get_tracelevel(void) 和 ei_set_tracelevel(int) 從執行中的程式讀取和設定。
自有 ID:OTP-5037
交叉編譯改進和其他組建系統改進。
最值得注意
- 許多交叉編譯改進。舊的交叉編譯支援或多或少不存在,而且已損壞。請注意,交叉編譯支援仍應視為實驗性。另請注意,舊的交叉編譯組態必須經過修改才能使用。如需有關交叉編譯 Erlang/OTP 的詳細資訊,請參閱
$ERL_TOP/INSTALL-CROSS.md
檔案。 - 支援使用 DESTDIR 進行分階段安裝。舊的損壞
INSTALL_PREFIX
也已修正。如需詳細資訊,請參閱$ERL_TOP/INSTALL.md
檔案。 - 頂層
Makefile
的release
目標的文件。如需詳細資訊,請參閱$ERL_TOP/INSTALL.md
檔案。 make install
現在預設會建立相對符號連結,而不是絕對符號連結。如需詳細資訊,請參閱$ERL_TOP/INSTALL.md
檔案。$ERL_TOP/configure --help=recursive
現在可以運作,並列印所有具有configure
指令碼之應用程式的說明。- 在
make all
之後直接執行make install
或make release
不再會觸發其他重建。 - 在沒有前導
make all
的情況下執行make install
或make release
時,現在會使用現有的引導系統。 - 當動態連結
libssl.so
和libcrypto.so
時,crypto
和ssl
應用程式會使用相同的執行階段程式庫路徑。執行階段程式庫搜尋路徑也已擴充。 erl_interface
和odbc
的configure
指令碼現在會以與erts
相同的方式搜尋執行緒程式庫和執行緒程式庫怪癖。- 在 64 位元系統上組建時,
odbc
應用程式的configure
指令碼現在也會在lib64
和lib/64
目錄中搜尋 odbc 程式庫。 erl_interface
應用程式中的config.h.in
檔案現在會自動產生,而不是靜態更新,這降低了configure
測試沒有任何效果的風險。
(感謝 Henrik Riomar 提供建議和測試)
(感謝 Winston Smith 提供 AVR32-Linux 交叉組態和測試)
* 可能不相容 *
自有 ID:OTP-8323
- 許多交叉編譯改進。舊的交叉編譯支援或多或少不存在,而且已損壞。請注意,交叉編譯支援仍應視為實驗性。另請注意,舊的交叉編譯組態必須經過修改才能使用。如需有關交叉編譯 Erlang/OTP 的詳細資訊,請參閱
變更文件檔案
erl_notes.xml
和erl_eterm.xml
中錯誤的 "\\0"。自有 ID:OTP-8326
允許
erl_match()
比對ERL_LONGLONG
和ERL_U_LONGLONG
詞彙(感謝 Scott Lystig Fritchie)。自有 ID:OTP-8400
Erl_Interface 3.6.4
改進和新功能
現在使用大多數平台上存在的開放原始碼工具 (xsltproc 和 fop) 來組建文件。一個可見的變更是框架已移除。
自有 ID:OTP-8201
Erl_Interface 3.6.3
已修正的錯誤和故障
手冊指出 erl_receive() 會在
ErlMessage
結構中傳回原因。事實並非如此,而且該函式現在已修正。* 可能不相容 *
自有 ID:OTP-4969
在
send_exit.c
中,重新配置緩衝區時可能會發生錯誤的記憶體配置大小。在
ei_decode_trace.c
中,可能會在解碼失敗時更新索引。在
ei_printterm.c
中,可能會在清單和元組中解碼失敗時更新索引。在
ei_decode_term.c
中,解碼雙精度(ERL_FLOAT_EXT)時,未檢查 31 個位元組的最後一個是否為空值終止。在
ei_decode_term.c
中,解碼參考時,僅讀取前 3 個位元組,但索引並未按總大小遞增。在
ei_decode_fun.c
中,未檢查正確的緩衝區配置或資料長度。在
ei_decode_string.c
中,整數清單字串案例未正確解碼 NIL 尾部。這些錯誤現已修正。(感謝 Romain Lenglet、Paul Mineiro 和 Paul Guyot)。
內部 ID:OTP-6117
ei_decode_big
可能會使用垃圾位元組進行解碼。現在可以使用
ei_encode_big
和ei_x_encode_big
。內部 ID:OTP-7554
函式
erl_init_resolve()
不符合 C99 標準,導致在某些平台上出現建置錯誤。此問題現已修正。內部 ID:OTP-8093
Makefile.in
已更新為使用 LDFLAGS 環境變數(如果已設定)。(感謝 Davide Pesavento。)內部 ID:OTP-8157
改進和新功能
在編碼/解碼中新增對 64 位元整數的支援。
新增對二進位檔案更佳輸出的支援。
內部 ID:OTP-6091
Erl_Interface 3.6.2
已修正的錯誤和故障
erl_start.c
中的gethostbyname
問題可能導致緩衝區溢位。此問題現已修正。程式碼清理並移除編譯器警告。
內部 ID:OTP-7978
Erl_Interface 3.6.1
已修正的錯誤和故障
ei_reg_getpval
中的錯誤驗證導致它永遠不會傳回鍵值。此問題現已修正。(感謝 Matt Stancliff)內部 ID:OTP-7960
改進和新功能
對
configure
腳本的微幅更新。內部 ID:OTP-7959
Erl_Interface 3.6.1
改進和新功能
對
configure
腳本的微幅更新。內部 ID:OTP-7959
Erl_Interface 3.6
改進和新功能
藉由新的環境變數設定 ERL_EPMD_PORT,屬於不同獨立叢集的節點現在可以共存在同一主機上。
內部 ID:OTP-7826
Erl_Interface 3.5.9
已修正的錯誤和故障
修正了在 64 位元平台上,ei_skip_term 和 ei_printterm 中的型別轉換錯誤,該錯誤會導致未定義的結果。
內部 ID:OTP-7577
現在修正了 MacOS X/Darwin 上 erl_interface 的 hostent 複製程式碼中的錯誤。
內部 ID:OTP-7593
已修正 FreeBSD 上建置
erl_interface
的問題(感謝 Akira Kitada)。內部 ID:OTP-7611
Erl_Interface 3.5.8
已修正的錯誤和故障
修正了 erl_interface 在解碼損毀資料時的錯誤。
內部 ID:OTP-7448
Erl_Interface 3.5.7
已修正的錯誤和故障
在 erl_interface 中使用
ei_x_format_wo_ver
時,可能會發生錯誤的記憶體釋放,導致區段錯誤。內部 ID:OTP-6795
現在修正了
erl_marshal
中的錯誤比較。(感謝 Simon Cornish 和 Paul Mineiro)內部 ID:OTP-7368
Erl_Interface 3.5.6
已修正的錯誤和故障
微小的文件修正。
內部 ID:OTP-7183 輔助 ID:OTP-7118
Erl_Interface 3.5.5.4
已修正的錯誤和故障
符號 __erl_errno 在 ei 函式庫的單執行緒版本中未定義,但現在已定義。
內部 ID:OTP-6887
已修正 FreeBSD 建置錯誤。
內部 ID:OTP-7093
Erl_Interface 3.5.5.3
改進和新功能
已移除 erl_marshal.c 中對 alloca 的呼叫。現在使用靜態緩衝區來暫時儲存節點名稱。
內部 ID:OTP-6331 輔助 ID:seq10468
ei_print_term 將值介於 0 到 255 的整數列表解釋為字串。如果原始列表包含整數 0,則會將其視為字串的終止符。這是錯誤的。現在已修改該函式,使其不會在字串中尋找 '\0',而是永遠列印所有字元。
內部 ID:OTP-6339 輔助 ID:seq10492
Erl_Interface 3.5.5.2
已修正的錯誤和故障
在具有 64 位元 x86 擴充功能的 Xeon 處理器與 32 位元 Linux 的組合中,ei_decode_long 和 ei_decode_longlong 可能會對值 LONG_MIN 和 LONGLONG_MIN 失敗。現在轉換更具可移植性。
內部 ID:OTP-6216
Erl_Interface 3.5.5.1
改進和新功能
可移植性增強功能。
內部 ID:OTP-6132
Erl_Interface 3.5.5
已修正的錯誤和故障
在新的 Intel 架構 iMac 中,
erts
和erl_interface
應用程式中的不同(且舊的)config.guess
檔案會導致建置問題。(感謝 Sebastion Strollo。)內部 ID:OTP-5967
在同時安裝 NPTL 和 Linuxthreads 函式庫的 Linux 系統(至少某些 SuSE 和 Debian)上,pthread 標頭和函式庫不符。
內部 ID:OTP-5981
改進和新功能
已新增對 C 節點連線到獨立主機上 Erlang 節點的支援。
內部 ID:OTP-5883 輔助 ID:seq10170
Erl_interface 3.5.2
改進和新功能
組態測試錯誤導致 erl_interface 在建置時未支援執行緒。此問題已修正。
內部 ID:OTP-5456
Erl_interface 3.5.1
改進和新功能
已對建置和測試環境進行變更和改進,以解決 erl_interface 測試案例失敗的問題。
內部 ID:OTP-5295 輔助 ID:OTP-5387
Erl_interface 3.5
改進和新功能
程序識別碼和埠識別碼已變得更為唯一。先前,在程序和埠識別碼的內部表示中,使用 18 個位元作為 ID。現在使用 28 個位元。
由於 pid 的表示方式,同時存在的程序數上限已增加到 268435456 個程序。埠的情況也是如此。由於記憶體短缺,至少在 32 位元架構上不可能達到此限制。
注意: 預設情況下,現在僅保證
ERTS
,以及erl_interface
、ei
和jinterface
函式庫與來自同一版本的其他 Erlang/OTP 元件相容。不過,可以將每個元件設定為較早版本的相容模式。請參閱各個元件的文件,以了解如何將其設定為相容模式。* 可能不相容 *
內部 ID:OTP-4968 輔助 ID:OTP-4196
Erl_interface 3.4.5
已修正的錯誤和故障
修正針對修補程式 erl_605/OTP-4874 所犯的錯誤。
內部 ID:OTP-4995 輔助 ID:OTP-4874
Erl_interface 3.4.4
已修正的錯誤和故障
在 ei_rpc*() 中新增了一個小的最佳化,並修正了 ei_decode_longlong() 中的錯誤。
內部 ID:OTP-4784
Erl_interface 3.4.2
已修正的錯誤和故障
長度超過 65535 個位元組的字串在 ei/erl_interface 中編碼錯誤。
內部 ID:OTP-4865 輔助 ID:EABln07451
Erl_interface 3.4.1
已修正的錯誤和故障
由於 ei_format 中的錯誤,erl_call -a 無法正確剖析 erlang 術語,現在已修正此錯誤。
內部 ID:OTP-4777 輔助 ID:seq8099