EVE Online 已啟動將其 240 萬行程式碼從 Stackless Python 2.7 遷移至 Python 3 的作業,首先使用 'futurize' 工具進行自動化處理,接著針對約 20,000 處行為差異進行人工審查。這是該遊戲引擎在 16 年來的首次重大升級。 這項遷移是最大且最古老的 Python 程式碼庫之一的重大技術里程碑,為大規模舊系統遷移策略提供了寶貴的見解。它展示了成熟系統如何在維持穩定性的同時,對核心基礎架構進行現代化更新。 該流程使用 'futurize' 處理 240 萬行程式碼的大部分內容,接著針對 Python 2 與 3 行為不同的約 20,000 個位置進行人工檢查,例如整數除法行為(例如 1 / 2 從 0 變為 0.5)。團隊還計畫使用其開源的 carbonengine/scheduler 程式庫來取代 Stackless Python。
事件背景
Stackless Python 是一種使用微執行緒(microthreads)來避免 C 呼叫堆疊開銷的 Python 變體,自 2003 年起對 EVE Online 的大規模併發需求至關重要。Python 3 引入了與 Python 2 的重大差異,包括整數除法的運作方式及 Unicode 處理,這使得大型程式碼庫需要仔細進行遷移。像 'futurize' 這樣的工具有助於在過渡期間保持向後相容性的同時,自動化轉換流程。



