EVE Online 开始迁移到 Python 3
Simon Willison··作者 Simon Willison
关键信息
EVE Online 自 2003 年上线以来一直运行在 Stackless Python 上,而上一次重大运行时升级还是 2010 年的 Stackless Python 2.7。公告目前还没有说明将如何替代 Stackless,不过 CCP 之前曾在 EVE Frontier 的演讲中展示过如何用开源的 carbonengine/scheduler 库把 Carbon 引擎里的 Stackless 移除。
资讯摘要
CCP Games 宣布,EVE Online 终于要开始迁移到 Python 3 了。Simon Willison 将这则消息视为业内最有意思的 Python 大规模应用案例之一的重要里程碑。EVE Online 自 2003 年上线以来一直使用 Stackless Python,而上一次重大运行时升级还是 2010 年切换到 Stackless Python 2.7。根据公告,这次迁移会先对大约 240 万行代码运行 futurize。随后,团队还要人工检查大约 2 万处 Python 2 和 Python 3 行为不同的代码位置。
文章举了一个具体例子:在 Python 2 里,1 / 2 的结果是 0,而在 Python 3 里会变成 0.5。公告并没有说明这次迁移中将如何替代 Stackless。不过 Simon 提到,CCP 之前在 EVE Frontier 的演讲里介绍过,已经通过开源的 carbonengine/scheduler 库把 Carbon 引擎里的 Stackless 去掉了。這说明公司在运行时替换方面可能已经有了可行路径,只是这次新闻没有展开说明。
资讯正文
EVE Online:迁移到 Python 3 开始了!
在过去二十多年里,EVE Online 一直是 Python 大规模应用中最有趣的案例研究之一。
自 2003 年上线以来,他们一直运行在 <a href="https://github.com/stackless-dev/stackless/wiki/">Stackless Python</a> 上,而上一次重大升级还是 16 年前,升级到 Stackless Python 2.7,见 <a href="https://www.eveonline.com/news/view/stackless-python-2.7">2010 年</a>。
他们升级到 Python 3 的过程将先使用 <a href="https://python-future.org/futurize.html">futurize</a> 脚本处理 240 万行代码,然后再对约 20,000 处 Python 2 和 3 行为存在差异的地方进行仔细的人工审查——例如,<code>1 / 2</code> 在 Python 2 中是 <code>0</code>,而在 Python 3 中则是 <code>0.5</code>。
这则公告并没有提到他们打算如何替换 Stackless,不过他们在去年的大会上展示了 <a href="https://youtu.be/-x299qHLQs0">Scheduling in Carbon: Leaving Stackless Python Behind</a>,介绍他们如何在更近期的游戏 EVE Frontier 的 Carbon 引擎中用自己的(现已开源的)<a href="https://github.com/carbonengine/scheduler">carbonengine/scheduler</a> 库替代 Stackless。
来源与参考
收录于 2026-08-27