EVE Online 启动 Python 3 迁移:涉及 240 万行代码
Simon Willison8 小时前
从 Stackless Python 2.7 迈向 Python 3
EVE Online 是 Python 大规模应用的长期案例之一。自 2003 年上线以来,它一直使用 Stackless Python;上一次重大升级是在 2010 年,迁移至 Stackless Python 2.7。
如今,这款游戏开始推进 Python 3 迁移,涉及约 240 万行代码。
自动转换之后,还要审查约 2 万处差异
迁移计划先使用 futurize 脚本处理代码,再对约 2 万处 Python 2 与 Python 3 行为不同的位置进行仔细的人工审查。
一个典型例子是整数除法。同样的表达式:
1 / 2
- 在 Python 2 中,结果为
0。 - 在 Python 3 中,结果为
0.5。
这类差异意味着,迁移不只是完成语法转换,还需要逐一核查相关代码的行为。
Stackless 的替代方案尚未明确
此次公告并未说明 EVE Online 将如何替换 Stackless。
不过,团队此前曾在题为《Scheduling in Carbon: Leaving Stackless Python Behind》的会议演讲中,介绍另一款游戏 EVE Frontier 的相关实践:在该游戏使用的 Carbon 引擎中,通过如今已经开源的 carbonengine/scheduler 库替换 Stackless。
需要区分的是,EVE Frontier 的实践并不等于 EVE Online 已公布的技术方案。目前明确披露的迁移步骤,仍是自动转换代码,以及随后针对行为差异开展的人工审查。