logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·31.10.26
← Back to news

EVE Online moves to Python 3

Original article
eveonline.com|190 points|93 comments|by TylerJaacks|Aug 25, 2026

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.

Python Logo


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:

  1. Stackless Python 2.5 (Upgraded in 2007)
  2. 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

FeaturePython 2 (Legacy)Python 3 (Modern)
Text HandlingFragmented string typesUnified, consistent string type (better localization)
IntegersFixed size limitsArbitrary size (grow automatically)
Class SystemLegacy behaviorsUnified, consistent object-oriented system

Technical Diagram


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 100%\text{100\%}100% 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-Future and 2to3 machinery.
    • Apply automated fixers to rewrite obsolete patterns.
    • Ensure code runs on both 2.7 and 3.
  • 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.

Pioneer Image


Measuring the Mountain

To track progress, we compile all ∼20,000\sim 20,000∼20,000 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:

  • ∼1,500\sim 1,500∼1,500 old-style print statements.
  • ∼800\sim 800∼800 long number literals (e.g., 123L).
  • ∼600\sim 600∼600 deprecated exception clauses.
  • ∼50\sim 50∼50 instances of the <> (not equal) operator.

The "Behavioral" Challenge

The real difficulty lies in the ∼20,000\sim 20,000∼20,000 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: Python 2: ⌊1÷2⌋=0vs.Python 3: 1÷2=0.5\text{Python 2: } \lfloor 1 \div 2 \rfloor = 0 \quad \text{vs.} \quad \text{Python 3: } 1 \div 2 = 0.5Python 2: ⌊1÷2⌋=0vs.Python 3: 1÷2=0.5

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.

Recruit Image