經過一年的開發,Python 3.13 程式語言的重要版本已經發布。 新分支將獲得一年半的支持,在此之後的三年半內,將為其產生修復程序以消除漏洞。
Python 3.13 的新增內容包括:
- 增加了 JIT 編譯器的實驗性實現,可以實現顯著的效能改進。為了在 CPython 中啟用 JIT,新增了建置選項“--enable-experimental-jit”,這需要安裝 LLVM 作為附加相依性。將機器碼翻譯成JIT的過程是使用「複製和修補」架構建構的,其中LLVM用於組裝ELF格式的目標文件,其中包含有關字節碼指令的資料以及有關必要資料替換的資訊。 JIT 將程式解釋期間產生的字節碼指令替換為機器碼中的表示,同時替換計算所需的資料(JIT 複製已編譯函數的現成範本並將必要的值(例如參數和常數)替換到其中)。
- 已新增一種沒有全域解釋器鎖定(GIL)的實驗性 CPython 建置模式,該模式使用「--without-gil」選項啟用,並允許您擺脫多核心系統上操作並行化的問題,該問題是由全域鎖定不允許從不同執行緒並行存取共用物件引起的。由於垃圾收集器、記憶體管理系統和鎖定原語的變化,禁用 GIL 會帶來額外的開銷。例如,使用引用計數來隔離線程,在單線程場景下會導致效能下降約10%。然而,這些間接成本可以透過並行化操作來補償。
- 提出了一種新的改進的互動式解釋器,它基於 PyPy 專案的發展,支援多行編輯、保存和查看歷史記錄、請求和追蹤的顏色設計、使用類似 REPL 的命令(help、exit、quit 等)而不涉及函數、互動式幫助和插入大塊程式碼的模式等功能。
- 內建 locals() 函數的語義已經針對函數、生成器和協程等最佳化範圍發生了改變,該函數會傳回目前作用域內的所有局部變數及其值,現在會傳回閉包中反映的目前暴露的局部變數和非局部變數的獨立快照。
- 預設軟體包中包含一個修改版本的 mimalloc 庫,該庫是微軟開源的記憶體分配系統,具有非常高的效能。在沒有 GIL 的情況下建置時使用該庫。
- 編譯器清除每個文件字串 (docstring) 中的前導空格,從而減少記憶體消耗並減少字節碼快取(.pyc 檔案)的大小。
- dbm 模組實作了 dbm.sqlite3 後端,該後端使用 SQLite,並且在建立新檔案時預設使用。
- 實作了在類型參數(typing.TypeVar、typing.ParamSpec 和typing.TypeVarTuple)中指定預設值的支援。例如:'T = TypeVar("T", default=int)'。
- 增加了新的 typing.TypeIs 註解用於類型限定,比 typing.TypeGuard 更直觀。
- 增加了使用 typing.ReadOnly 註解將 TypeDicts 元素標記為唯讀的功能。
- 新增了新註釋 warnings.deprecated() 來標記類型系統中已棄用的元素。
- 先前已棄用的模組 aifc、audioop、chunk、cgi、cgitb、crypt、imghdr、mailcap、msilib、nis、nntplib、ossaudiodev、pipes、sndhdr、spwd、sunau、telnetlib、uu、xdrlib 和 lib2to3 已從標準中刪除圖書館。
- copy.replace() 函數已加入到複製模組中。
- 透過 timerfd 描述符使用計時器的函數已新增至 os 模組。
- 已經為隨機模組實現了命令列介面。
- 版本支援已停止。 macOS 從 10.9 到 10.12。
- 支援iOS和Android行動平台。 Android被分配到第三級(Tier 3),其中至少有一位關鍵開發人員保證可靠的程序集和平台支持,但與平台相關的故障不會阻止發布,也不在 SLA 支持範圍內。
- 對 wasm32-wasi(WebAssembly 系統介面)平台的支援已移至第 24 級,此等級中的故障會阻止發布,導致故障的變更會在 32 小時內修復或復原。對 wasmXNUMX-emscripten 平台的官方支援已停止。
未來幾個小時內,Python 3.14分支的alpha測試將開始,該版本將處於alpha發布階段,為期七個月,期間將添加新功能並修復錯誤(按照新的開發時間表,致力於新的開發)分支在上一個分支發布前的五個月內開始,並且到下一個版本達到alpha 測試階段時)。此後,Beta版本將進行為期三個月的測試,在此期間將禁止添加新功能,並將全部精力集中在修復錯誤上。在發布前的最後兩個月,該分支將處於發布候選階段,並在此階段進行最終的穩定。
來源: opennet.ru
