EVE Online moves to Python 3
EVE Online: Transitioning to Python 3
2026-08-25 — Published by the EVE Online Team
Capsuleers, as part of our ongoing EVE Evolved initiative, we are turning our attention to the very foundation of New Eden: the source code.
Behind every market transaction, warp jump, and massive fleet engagement lies a colossal amount of Python code. For over two decades, this language has powered the universe, and it is now time to migrate to Python 3.
What This Means for the Pilot
For the average player, this transition translates to:
- Faster Bug Resolution: Access to superior debugging tools.
- Expanded Potential: More room to implement innovative features.
- Performance Gains: A generally faster EVE experience over time.
"The definition of success for this migration is simple: it should be completely unnoticeable, aside from the occasional moment when something runs more smoothly."
Many of you have already participated in early testing on the Singularity server; those initial updates were officially deployed today.

A Legacy in Code
EVE Online debuted in 2003, utilizing Stackless Python. This specific variant allowed for "tasklets," enabling a single server node to manage thousands of concurrent pilots efficiently. Fenris Creations didn't just use Stackless; they became primary contributors to its development.
The journey through versions looked like this:
Stackless Python 2.5(Upgraded in 2007)Stackless Python 2.7(Upgraded in 2010)
While the rest of the software industry moved on after Python 2.7 reached its official end-of-life in 2020, EVE remained stable. An entire generation of pilots has entered New Eden while the game ran on the same language version. While the Carbon engine provided immense support, staying on Python 2 has eventually become a bottleneck.
Why Upgrade Now?
Modern software development has evolved. By moving to Python 3, we gain:
- Speed: Recent releases have introduced some of the most significant performance leaps in the language's history.
- Tooling: Modern profilers and libraries are built exclusively for Python 3.
- Maintenance: We can stop maintaining legacy internal tools and focus on game improvements.
Core Language Improvements
| Feature | Python 2 (Legacy) | Python 3 (Modern) |
|---|---|---|
| Text Handling | Fragmented string types | Unified, consistent string type (better localization) |
| Integers | Fixed size limits | Arbitrary size (grow automatically) |
| Class System | Legacy behaviors | Unified, consistent object-oriented system |

The Path to Migration
The stakes are incredibly high. Every single ISK, skill point, and hangar item was created using Python 2; these must be read by Python 3 with accuracy.
We know this is possible because EVE Frontier already utilizes the Carbon engine on modern Python 3. That project leaped across twelve minor versions in one go. However, Tranquility is more complex, carrying twenty-three years of live player history.
The Technical Roadmap
The codebase consists of 2.4 million lines of Python. Much of this is ancient, dating back to the 2.3 and 2.5 eras.
- Stage 1: Mechanical Cleanup
- Use
Python-Futureand2to3machinery. - Apply automated fixers to rewrite obsolete patterns.
- Ensure code runs on both 2.7 and 3.
- Use
- Stage 2: Logic Correction
- Identify code that compiles but behaves differently.
- Manual human review of logic changes.
- Stage 3: Final Cutover
- Full transition to the Python 3 interpreter.

Measuring the Mountain
To track progress, we compile all Python files under both interpreters. The initial scan revealed that 95.9% of files already compile in both versions.
The remaining "blocking" lines (approx. 3,300) consist of:
- old-style
printstatements. - long number literals (e.g.,
123L). - deprecated exception clauses.
- instances of the
<>(not equal) operator.
The "Behavioral" Challenge
The real difficulty lies in the lines that compile but act differently. The most prominent example is division:
In Python 2:
# Integer division
result = 1 / 2
# result is 0
In Python 3:
# Float division
result = 1 / 2
# result is 0.5
Using LaTeX to express the difference:
In a game where these numbers represent coordinates or damage, a mechanical fix isn't enough—a human must decide the correct behavior.
Final Outlook
In the immediate future, you won't notice any changes. However, this is vital groundwork. By modernizing our stack, we ensure a more stable, performant, and maintainable universe for all capsuleers.
