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 已公布的技术方案。目前明确披露的迁移步骤,仍是自动转换代码,以及随后针对行为差异开展的人工审查。

评论

请登录后发表观点

暂无数据