EVE Online begins hauling 2.4M lines of code from Python 2 to Python 3
After 16 years frozen on Stackless Python 2.7 — a version that hit end-of-life in 2020 — developer CCP has started migrating EVE Online’s 2.4-million-line codebase to Python 3. The first stage, now live on the production Tranquility server, rewrites obsolete syntax so the code runs identically under both interpreters, using community tooling built on Python’s own 2to3 machinery. The stated measure of success is that players notice nothing at all; the payoff is longer-term, with modern Python 3 releases promising major performance gains plus access to current libraries, debuggers, and profilers the studio no longer has to reinvent itself.
The scope of the job is smaller than it sounds at the syntax level and larger than it sounds everywhere else. An initial scan found 95.9% of roughly 20,000 files already compile under both versions, leaving only about 3,300 blocking lines — legacy print statements, ‘123L’ long literals, old exception syntax, and even 50 uses of the ancient ’<>’ inequality operator. The real hazard is the estimated 20,000 lines that compile fine but behave differently, the classic trap being integer division, where 1/2 yields 0 in Python 2 but 0.5 in Python 3. In a game where those numbers can represent damage, currency, or coordinates, each requires a human judgment call rather than an automated fixer.
CCP argues the risk is now justified after two decades of stability, pointing to its sister title EVE Frontier already running the shared Carbon engine on modern Python. The harder constraint is EVE’s 23 years of live player data — every character, asset, and wallet balance must deserialize identically — on a server that stays up nearly 24 hours a day. The studio is leaning on players to stress-test milestones on its Singularity test server, framing the multi-year effort as infrastructure for the next 20 years of the game.
Read the full article
Continue reading at Hacker News →This is an AI-generated summary. Read the original for the full story.