EVE Online moves to Python 3

(eveonline.com)

76 points | by TylerJaacks 4 days ago

10 comments

  • santiagobasulto 6 minutes ago
    When python started incorporating asyncio my initial reaction was fairly negative. I was behaving like a grumpy graybeard programmer ("kids these days should learn how to use concurrency instead of working on a new runtime altogether!" [0]).

    But after using it for a production project I have to say I'm deeply satisfied and surprised by the maturity, quality of APIs and performance in general.

    I was proven wrong and I'm happy about that :)

    [0] Old man yell at clouds type of meme

  • est 40 minutes ago
    Stackless python had such potential, it could be extremely useful in Agent era for long running tasks with durable state.

    modern Python went in a somewhat different direction with asyncio, but with tasklet and continuation it could be a much powerful combo.

  • simonebrunozzi 37 minutes ago
    Can an experienced player gives us a summary of what's the "vibe" of the EVE online community these days? I was lightly involved ~15 years ago.
    • azalemeth 14 minutes ago
      I too would love to know the answer to this question. I loved Eve as a teenager / young adult. It was a brilliant burst of nerdery, and the first time I ever met someone who wrote linux kernel modules for a living.

      I sometimes think about logging in (I think I ragequit likely in a pod inside a wormhole in the middle of nullsec) and then I realise that way madness (and much sunk time) lies.

      • efromvt 0 minutes ago
        Yeah if I ever have the need to occupy an inordinate number of hours of my life again I’ll log back in, the temptation to dust of the account(s) arises sometimes. Think I managed to log off in lowsec but who knows!
  • p1anecrazy 41 minutes ago
    > The classic example is division: in Python 2, 1 / 2 is 0; while in Python 3 it is 0.5.

    Can someone kindly explain this?

    edit: I misread it as “In Python 2 2.1/2 is 0, while in Python 3 it is 0.5”

    • smoe 38 minutes ago
      From long ago memory: in Python 2, 1 / 2 did integer division. You had to do something like 1 / 2.0 if you wanted floating point division.
      • kingforaday 16 minutes ago
        Spot on. Py2 was integer division, Py3 was true division. In Py2 you could get the true division with an `from __future__ import division` (Can't recall which Py2 version this became an import). Fun fact too: In Py3 you can do a // to get back to the floor division affect (e.g. 1 // 2 --> 0)
  • brianwawok 3 days ago
    Shocking to me they are still on Python. Over like moving the high CPU parts over to rust or something.
    • dygd 49 minutes ago
      Some parts are in C++ and they even made it open source recently:

      https://github.com/carbonengine

      https://fenris.com/carbon

    • jubilanti 49 minutes ago
      Will you rust people ever shut up?
      • alexaholic 43 minutes ago
        The Jehovah's Witnesses of programming
      • Ygg2 3 minutes ago
        Python is very strange programming language for a MMORPG. I'd imagine they would write it in C++ or something. They don't quite explain what they use it for.

        And yeah, using a faster but safe language could help immensely.

      • gubyfuf 39 minutes ago
        [flagged]
    • gonzalohm 53 minutes ago
      Does the game have performance issues? I don't see the need to rewrite unless there is a problem with it
      • NitpickLawyer 3 minutes ago
        > Does the game have performance issues?

        Yes, it has had huge concurrency issues for the entirety of its life. Their solution to large fights has historically been "let us know in advance pls", plus "move systems to beefier hw nodes" and "tidi" which stands for time dilation, where the "tick rate" of the whole server goes down and a fight takes 10-20-100x longer than it should.

        It's an amazing concept of a game, but software wise it has been a mess since forever.

      • eterm 46 minutes ago
        They have to slow down the game tick-rate to accommodate, something they call "Time Dilation": https://wiki.eveuniversity.org/Time_dilation

        How much of that is down to processing time is unclear, but I think it's fair to say there is scope for improved performance.

        Secondary to that, if you have general performance improvements then you can afford to run a smaller server cluster or smaller servers, reducing costs.

      • swdunlop 42 minutes ago
        Oh my yes. EVE Online can experience issues when a conflict in a solar system exceeds a certain number of players. Each system in EVE is a monolithic process, so, if a conflict gets out of hand, things get slow.

        This is referred to as Time Dilation (TiDi) in EVE -- https://wiki.eveuniversity.org/Time_dilation -- it's an interesting engineering rathole, Fenris f/k/a CCP has been pretty open about their stack, and the challenges that have built up.

        Anything that speeds up EVE lets more players cram in without experiencing TiDi, and this might let the devs escape Stackless Python, which is another interesting engineer rathole. (It's ratholes all the way down, and this is the one that got EVE on my radar, and has kept it there.)

    • dcrazy 3 days ago
      > Every character, every skill point, every asset in every hangar, every ISK in every wallet was written in Python 2 code, and all of it must read back under Python 3 exactly as it was.

      This task would be even more challenging under such a dramatic rewrite.

  • chews 3 days ago
    It really speaks to how great the technical team can be. As crazy as it sounds Goldman Sacks and JP Morgan both maintained 2.7 Python as a core language until just a few years ago (yes, it's still used in production).
    • ghuntley 2 days ago
    • 7bit 3 days ago
      Or insane
      • cyberpunk 26 minutes ago
        Python is used as a kind of 'visual basic' language in a lot of banks especially in front-of-house trading software, e.g murex or frontarena. Migrations between major versions of these can take years, costs 100s of millions and involve thousands of devs. Mistakes can be _expensive_.

        It is kind of 'insane' but also, meh..

        There's more dragons out there than we've been led to believe :}

  • zzzeek 25 minutes ago
    what did they do about stackless? are they using greenlet or did they switch to asyncio?

    googled it so this becomes a PSA: https://simonwillison.net/2026/Aug/25/eve-online-move-to-pyt...

    so it's neither, it's their own: https://github.com/carbonengine/scheduler

    so that's interesting

  • jamesnorden 3 days ago
    Had to check the date.
  • stefantalpalaru 3 days ago
    [dead]
  • oybng 34 minutes ago
    The proposed solution to 2.4M lines of python is.. more python, with the primary motivation being "performance" lol