EVE Online: The Move to Python 3 Begins!
EVE Online, running on Stackless Python since 2003, is beginning its long-delayed migration from Python 2.7 (last upgraded in 2010) to Python 3 The upgrade process starts with the `futurize` script applied against 2.4 million lines of code, followed by manual review of approximately 20,000 behavior differences between Python 2 and 3 EVE Online has already laid groundwork for leaving Stackless behind, having replaced it in their Carbon engine for EVE Frontier using their open-source `carbonengine
Analysis
TL;DR
- EVE Online, running on Stackless Python since 2003, is beginning its long-delayed migration from Python 2.7 (last upgraded in 2010) to Python 3
- The upgrade process starts with the
futurizescript applied against 2.4 million lines of code, followed by manual review of approximately 20,000 behavior differences between Python 2 and 3 - EVE Online has already laid groundwork for leaving Stackless behind, having replaced it in their Carbon engine for EVE Frontier using their open-source
carbonengine/schedulerlibrary - This represents one of the most significant real-world Python-at-scale migration case studies, spanning over two decades of production code
Why It Matters
This migration is a landmark case study for any organization maintaining large Python 2 codebases, demonstrating the practical challenges of upgrading a 2.4-million-line production system that has been running for over two decades. The approach—automated tooling followed by targeted manual review of behavioral differences—offers a replicable blueprint for similar enterprise migrations.
Technical Details
- Codebase scale: 2.4 million lines of Python code, with approximately 20,000 identified locations where Python 2 and 3 behavior diverge
- Migration methodology: Uses the
futurizescript (part of thefuturelibrary) for automated conversion, followed by careful manual review of semantic differences such as integer division (1/2returning0in Python 2 vs0.5in Python 3) - Stackless Python decommissioning: The team has already developed and open-sourced
carbonengine/scheduler, a replacement for Stackless Python's microtask scheduling, first deployed in the Carbon engine for EVE Frontier - Historical context: Stackless Python has been the runtime since the game's 2003 launch, with the last major Python upgrade occurring in 2010 to Stackless Python 2.7
Industry Insight
- Large-scale Python 2-to-3 migrations remain relevant well beyond the 2020 EOF deadline for organizations with legacy codebases; the EVE Online case demonstrates that even well-resourced teams may delay such migrations for over a decade
- The open-sourcing of their scheduling library (
carbonengine/scheduler) provides a valuable reference for other projects looking to decouple from Stackless Python while maintaining concurrent task execution patterns - The hybrid approach of automated tooling (
futurize) combined with targeted manual review of behavioral edge cases is a proven strategy that other teams should adopt rather than attempting purely manual or purely automated migrations
Disclaimer: The above content is generated by AI and is for reference only.