檢視原始碼 支援、相容性、棄用和移除
簡介
此文件描述關於支援版本、相容性、棄用以及功能移除的策略。
變更
此文件及其描述的策略是在 Erlang/OTP 21 中引入的。
支援版本
一般而言,錯誤修復僅在最新的版本上進行,而新功能則在開發中的即將發布的版本中引入。但是,當我們因為內部原因修復舊版本上的錯誤時,這些修復也會可用並進行公告。
僅在我們git 儲存庫的 maint
和 master
分支上接受 Pull Request。maint
分支包含計劃在最新 OTP 版本上進行的下一個維護修補程式包的變更,而 master
分支包含計劃在即將發布的 OTP 版本中進行的變更。
相容性
我們力求保持盡可能高的相容性,即使在我們不提供相容性保證的情況下也是如此。
系統的不同部分在相容性方面會以不同的方式處理。以下項目描述了系統不同部分的處理方式。
Erlang 分散式系統 - Erlang 節點可以跨越至少前兩個版本和後兩個版本進行通信。
已編譯的 BEAM 程式碼、NIF 函式庫和驅動程式 - 已編譯的程式碼可以在至少後續兩個版本上載入。為了達到 Erlang 程式碼的最高效能,請確保使用與部署版本相同的版本進行編譯。
不支援在舊版本上載入。
API - 在各版本之間相容。
編譯器警告 - 在不同版本之間可能會發出新的警告。
命令列引數 - 在不同版本之間可能會發生不相容的變更。
OTP 建置程序 - 在不同版本之間可能會發生不相容的變更。
在某些情況下,即使在各版本之間應保持相容的系統部分,也可能會引入不相容的變更。可能會觸發此類不相容變更的事情包括:
安全性問題 - 為了解決安全性問題,可能需要引入不相容的變更。這種不相容性可能會在修補程式中發生。
錯誤修復 - 我們不會為了錯誤而保持相容性。錯誤修復可能會引入不相容的變更。這種不相容性可能會在修補程式中發生。
嚴重的先前設計問題 - OTP 的某些部分在很久以前設計,不一定考慮到今天的計算環境。因此,這些設計選擇的影響可能相當重大,影響效能、可擴展性等等。如果我們確定這些影響過於嚴重,我們可能會實施不相容的變更。此類變更永遠不會在修補程式中引入,而是在後續版本中引入。
周邊、追蹤和偵錯功能比語言本身和操作期間使用的核心函式庫更容易以不相容的方式進行變更。
文件中有一頁關於不相容性的說明
- 即將發生的潛在不相容性 - 列出所有即將發生的潛在不相容性。
棄用
當引入較新的、首選的替代方案時,就會發生功能棄用。除非在棄用通知中明確聲明即將移除,否則棄用不代表未來將移除該功能。
已棄用的功能將記錄為已棄用,並盡可能在版本說明中突出顯示。如果適當,編譯器將在使用已棄用的功能時發出警告。
文件中有一頁關於棄用的說明
- 已棄用功能 - 列出所有已棄用的功能。
移除
可能需要移除舊有的解決方案。在這種情況下,它們將在足夠長的時間內逐步淘汰,以便使用者進行調整。在移除功能之前,它將至少被棄用一個版本,並明確公告即將移除。
周邊、追蹤和偵錯功能比語言本身和操作期間使用的核心函式庫更容易被移除。
文件中有兩頁關於移除的說明