newsence

Python 3.15 的 JIT 編譯器重回正軌

Hacker News·19 天前

我們已經提前一年多達成了 CPython JIT 在 Python 3.15 的性能目標,透過社群協作與技術創新,在 macOS 與 Linux 平台上實現了顯著的加速,讓 JIT 專案重新回到正軌。

背景

Python 3.15 的即時編譯(JIT)開發進度在經歷一段低潮後,近期終於重回正軌並達成初步效能目標。核心開發者 Ken Jin 指出,透過社群協作與技術架構的轉向,JIT 在 macOS AArch64 環境下已取得約 11% 至 12% 的效能提升,這標誌著 CPython 在「Faster CPython」計畫受挫後,成功轉型為由社群主導開發的重要里程碑。

社群觀點

針對 CPython JIT 的進展,Hacker News 社群展開了多面向的討論。部分開發者關注 JIT 與 Python 另一項重大變革「無鎖執行緒」(Free-threading)的整合進度。留言指出,雖然 JIT 目前尚未完全支援無鎖執行緒,但開發團隊目標在 3.15 或 3.16 版本達成此目標。有觀點引用相關訪談提到,社群普遍期待無鎖執行緒能在未來幾個版本內成為預設選項,屆時 JIT 與直譯器如何在高並發環境下協作將是關鍵。

然而,討論中也出現了對 CPython 重新發明輪子的質疑。有網友詢問為何不直接採用早已具備成熟 JIT 技術的 PyPy。對此,支持者反駁認為 PyPy 對 C 語言擴充套件(C Extensions)的支援度不足,且版本更新速度往往落後於 CPython 官方。此外,也有人指出 PyPy 的維護現狀似乎不若以往活躍,因此在 CPython 參考實作中內建 JIT 具有其必要性,不應因為其他實作已存在類似功能就放棄改進官方版本。

技術細節方面,資深開發者對於 JIT 的具體實現方式表現出濃厚興趣,特別是關於「追蹤投影」(Trace Projection)與「引用計數消除」(Refcount Elimination)的運作機制。留言者提到,目前官方文件的技術細節相對稀缺,許多高層次的設計討論往往直接跳入程式碼實作,導致外界難以理解其底層邏輯。例如,JIT 如何在編譯時期處理大量的指令變體(Stencils),以及如何有效減少引用計數帶來的開銷,都是社群渴望獲得更多解答的技術難題。

最後,討論中也夾雜了對當前科技趨勢的悲觀情緒。有開發者擔憂在人工智慧與企業利益主導的開發環境下,傳統的效能優化工作可能會被忽視,甚至認為未來的程式開發將過度依賴自動化工具而失去對底層技術的掌握。儘管如此,多數意見仍肯定 CPython 開發團隊在資源受限的情況下,透過拆解複雜問題並吸引社群貢獻,成功讓 JIT 專案起死回生的努力。

延伸閱讀

  • Free-threading 專訪:關於 Python 無鎖執行緒實作細節與生態系遷移的深度訪談。
  • Does JIT Go Brrr:追蹤 CPython JIT 效能數據變化的即時監測網站。
https://fidget-spinner.github.io/posts/jit-on-track.html