Tech
跑了 23 年的宇宙要换 Python 了:拦路的只有 3,300 行,真正的雷是 2 万行『照常编译、答案不同』
2026年8月30日 · 凯文·凯利《失控》~2 min read
240 万行 Python 2 要搬进 Python 3,你猜真正拦路的有多少行?EVE Online 拿两版真实解释器把约 2 万个文件挨个过了一遍,回来报数:约 3,300 行。更扎手的是另一个数——还有约 2 万行,两边都编译得过,算出来的结果却不一样。
30 秒读懂
EVE Online 宣布把 240 万行、约 2 万个文件的 Python 2 代码库迁往 Python 3;服务器每天要跑 23.75 小时,官方的成功定义是玩家完全察觉不到。
方法:约 2 万个文件分别用真实的 Python 2.7 与 Python 3 解释器各编译一遍,编译器当裁判;首次全量扫描,95.9% 的文件已双版本可编译。
真被 Python 3 拒收的只有约 3,300 行:约 1,500 个旧式 print、约 800 个 123L 长整型、约 600 个旧异常写法、50 个「<>」不等号。
真雷是约 2 万行「双版本可编译、行为不同」:1/2 在 Python 2 等于 0、在 Python 3 等于 0.5,而那个数可能是伤害、ISK 或坐标,每行都要人判。
阶段一改动 2026 年 8 月 25 日已部署正式服 Tranquility;同引擎新作 EVE Frontier 已跑在现代 Python 3 上,路走得通有实证。
1 欠账
一个 2003 年的技术选型,欠成了 2026 年的 240 万行旧账
这笔账不是懒出来的,是活得太久攒出来的。
2003 年 EVE Online 上线,底座选了 Stackless Python:一种带轻量 tasklet 的 Python 变体,单个服务器节点能同时伺候数千玩家。开发商 Fenris Creations 自己就是 Stackless 的重要贡献者,等于下场帮着打地基。2007 年升到 Stackless Python 2.5,2010 年升到 2.7,然后就停住了,一停 16 年。Python 2.7 官方 2020 年就停止维护,整个软件界都搬走了,EVE 留在原地。
你别看它守旧,它守旧有守旧的本钱:23 年攒下的玩家数据全写在 Python 2 时代,每个角色、每点技能、每个机库里的资产、每一分 ISK,迁移后必须一字不差地读回来。重写个 demo 可以推倒重来,给一栋住满人的楼换地基不行。
⚡ 为什么值得围观: 这事在 Hacker News 上拿了 288 分,凑热闹的多数不玩 EVE。全世界守着祖传系统的工程师都想看同一件事:240 万行的旧账,别人怎么下的手。
2 不能停
服务器每天跑 23.75 小时,干得最漂亮的结果是没人发现你干过活
这场迁移的成功标准,官方写得近乎憋屈。
EVE 的服务器每天要跑 23.75 小时,每日停机窗口只有约一刻钟。那一刻钟,够重启进程、上个补丁,不够做任何伤筋动骨的动作。官方给这场迁移的成功定义大意是:玩家完全察觉不到,顶多偶尔觉得哪里更顺了。说白了,满分就是零存在感。
凯文·凯利在《失控》里下过一个判断:能运转的复杂系统,只能从能运转的系统上长出来,推倒重来造不出这种东西。活系统没法停机重造,只能边飞边换零件。EVE 把这句话逼到了字面意思:宇宙不能停转,换血得在血管里做。
打个比方
我楼下肠粉店全天开门,真要换整套灶台,敢关一星期店吗?老客散了就不回来了。只能一个灶一个灶换:新灶先架在旁边空烧几天,火候跟老灶对上了,才敢把锅挪过去,客人从头到尾照常吃。EVE 干的就是这件事,只是它有 2 万个灶。
3 量出来
编译器是唯一不给面子的评委:95.9% 直接过,拦路的只有 3,300 行
第一步没改一行代码,先把恐惧换算成数字。
做法土得掉渣:不开会拍脑袋估工作量,把约 2 万个文件分别丢给真实的 Python 2.7 和 Python 3 解释器各编译一遍。编译器说行才算行,它给的就是标准答案。首次全量扫描回来,95.9% 的文件已经双版本可编译;真正被 Python 3 拒收的,240 万行里只有约 3,300 行,成分如下。
被拒收的写法 规模
旧式 print 语句 约 1,500 处
123L 长整型字面量 约 800 处
Python 3 拒绝解析的旧异常写法 约 600 处
「<>」不等号(老到很多在职 Python 程序员没见过) 50 处
240 万行是库存,不是工作量。不去量,它就一直以天塌的姿势压在心口;量完,大山现了形,大半是土坡。
3,300 LINES STOOD IN THE WAY OF 2.4 MILLION 2.4M lines of Python ≈20,000 files 95.9% compile on Py2 & Py3 The ~3,300 lines Python 3 rejects old print statements ~1,500 123L long literals ~800 old except syntax ~600 the <> operator 50 Compiles on both — behaves differently ~20,000 e.g. 1/2 = 0 on Py2, 0.5 on Py3 needs line-by-line human review break mark = bar truncated, not to scale mechanically fixable needs human judgment Source: EVE Online official dev blog (2026-08-25). Of 2,400,000 lines of Python across about 20,000 files, only ~3,300 lines are rejected outright by Python 3 — and those are mechanically fixable; the real human work is the ~20,000 lines that compile on both versions but behave differently.
4 真雷
编译器拦不住的那 2 万行,才是每行都得有人拍板的硬活
语法全对、结果不对,这种雷仪器探不出来。
另有约 2 万行,两个版本都编译得过,行为却不同。最经典的一枚长这样:
Python 2
1/2 等于 0。整数除法向下取整,写这行的人二十年前就默认了这一点。
Python 3
1/2 等于 0.5。同一行字,数悄悄变了。而在 EVE 里,这个数可能是一发炮的伤害、一笔 ISK、一个坐标。
编译器抓不到它,语法上挑不出毛病;测试也未必兜得住,差异可能躺在一条一年走不了几回的分支里。这 2 万行每一行都要人盯着上下文做决定,机械工具修不了。所以阶段一的排兵反着来:先用 Python-Future/futurize 这类自动化工具把 print、123L 这些机械碎渣清干净,人的注意力一滴不洒,全省给需要人的地方。
这种「两边都跑得过、数不一样」的雷,我拆过一回。2014 年我在华南一家城商行驻场,行里要换那套 2002 年上线、跑了十二年的柜面流水库,能动手的窗口只有每天凌晨对账那一刻钟,没人敢赌一次切换。方案是新老两套并行双写,凌晨跑比对脚本。头一个月天天对出几十条差异,追下去多半是没人记得的取整规则:某档利息第三位小数怎么舍,2003 年哪个程序员写死的,文档里没有,只在代码里。连续三十天零差异,行里才批准把读流量切过去。切换那天柜台照常营业,没有一个柜员知道底下换了库。一位快退休的老工程师说的话我记到现在:对出来的差异才是真相,会上说的都不算。
5 已上路
阶段一已经进了正式服,同门师弟还替它探过一次路
这套打法没停在博客里,8 月 25 日进的是生产环境。
阶段一的改动 2026 年 8 月 25 日部署到正式服 Tranquility;7 月底玩家先在测试服 Singularity 试玩验证过一轮。到今天,成功标准守住了:没炸出事故新闻,对这类迁移来说就是最好的新闻。旁证也有:同一套引擎的新作 EVE Frontier 已经跑在现代 Python 3 上,那次迁移一口气跨了 12 个 Python 小版本。路是蹚过一遍的,这回只是车更重、乘客更多。
阶段一之后还有几个阶段、总时间表拉多长,官方没给死数;本文数字与阶段划分以官方开发博客与公开报道为准。
6 带走
这对你意味着什么:你那座「240 万行」,多半也是先量再拆的命
没有 EVE 的规模,这几条作业照样能抄。
你手里多半也压着一座旧账:十年前的 PHP 5、没人敢动的存储过程、一句注释都没有的定时任务。能抄的就三条。先量再怕:找你那门语言里最不会说谎的裁判,编译器、类型检查器、解释器都行,让它把拒收清单如实打出来,恐惧才换算得成工时。机械的归工具、判断的归人:最贵的是人的注意力,别拿它去改 print。成功定义写成「用户察觉不到」:它会逼着你选并行、双跑、比对、灰度,把大爆炸式的周末切换从选项里划掉。
核心 240 万行是库存,3,300 行是门槛,2 万行才是工作量。这三个数不量出来,你就永远在跟第一个数较劲。
老系统迁移的坏名声,一半是没量就开工挣来的。EVE 这单要是最后真做到玩家毫无察觉,「边飞边换零件」这条路上就多了一个 240 万行级别的活案例,比任何布道都管用。
取材声明:本文思想框架取材自凯文·凯利《失控》(能运转的复杂系统只能从能运转的系统上长出来、活系统只能边飞边换零件);事件与全部数字出自 EVE Online 官方开发博客及 Hacker News 相关公开讨论,细节以官方博客与公开报道为准。本文为技术科普解读。
技术
跑了 23 年的宇宙要换 Python 了:拦路的只有 3,300 行,真正的雷是 2 万行『照常编译、答案不同』
2026年8月30日 · 凯文·凯利《失控》约 6 分钟
240 万行 Python 2 要搬进 Python 3,你猜真正拦路的有多少行?EVE Online 拿两版真实解释器把约 2 万个文件挨个过了一遍,回来报数:约 3,300 行。更扎手的是另一个数——还有约 2 万行,两边都编译得过,算出来的结果却不一样。
30 秒读懂
EVE Online 宣布把 240 万行、约 2 万个文件的 Python 2 代码库迁往 Python 3;服务器每天要跑 23.75 小时,官方的成功定义是玩家完全察觉不到。
方法:约 2 万个文件分别用真实的 Python 2.7 与 Python 3 解释器各编译一遍,编译器当裁判;首次全量扫描,95.9% 的文件已双版本可编译。
真被 Python 3 拒收的只有约 3,300 行:约 1,500 个旧式 print、约 800 个 123L 长整型、约 600 个旧异常写法、50 个「<>」不等号。
真雷是约 2 万行「双版本可编译、行为不同」:1/2 在 Python 2 等于 0、在 Python 3 等于 0.5,而那个数可能是伤害、ISK 或坐标,每行都要人判。
阶段一改动 2026 年 8 月 25 日已部署正式服 Tranquility;同引擎新作 EVE Frontier 已跑在现代 Python 3 上,路走得通有实证。
1 欠账
一个 2003 年的技术选型,欠成了 2026 年的 240 万行旧账
这笔账不是懒出来的,是活得太久攒出来的。
2003 年 EVE Online 上线,底座选了 Stackless Python:一种带轻量 tasklet 的 Python 变体,单个服务器节点能同时伺候数千玩家。开发商 Fenris Creations 自己就是 Stackless 的重要贡献者,等于下场帮着打地基。2007 年升到 Stackless Python 2.5,2010 年升到 2.7,然后就停住了,一停 16 年。Python 2.7 官方 2020 年就停止维护,整个软件界都搬走了,EVE 留在原地。
你别看它守旧,它守旧有守旧的本钱:23 年攒下的玩家数据全写在 Python 2 时代,每个角色、每点技能、每个机库里的资产、每一分 ISK,迁移后必须一字不差地读回来。重写个 demo 可以推倒重来,给一栋住满人的楼换地基不行。
⚡ 为什么值得围观: 这事在 Hacker News 上拿了 288 分,凑热闹的多数不玩 EVE。全世界守着祖传系统的工程师都想看同一件事:240 万行的旧账,别人怎么下的手。
2 不能停
服务器每天跑 23.75 小时,干得最漂亮的结果是没人发现你干过活
这场迁移的成功标准,官方写得近乎憋屈。
EVE 的服务器每天要跑 23.75 小时,每日停机窗口只有约一刻钟。那一刻钟,够重启进程、上个补丁,不够做任何伤筋动骨的动作。官方给这场迁移的成功定义大意是:玩家完全察觉不到,顶多偶尔觉得哪里更顺了。说白了,满分就是零存在感。
凯文·凯利在《失控》里下过一个判断:能运转的复杂系统,只能从能运转的系统上长出来,推倒重来造不出这种东西。活系统没法停机重造,只能边飞边换零件。EVE 把这句话逼到了字面意思:宇宙不能停转,换血得在血管里做。
打个比方
我楼下肠粉店全天开门,真要换整套灶台,敢关一星期店吗?老客散了就不回来了。只能一个灶一个灶换:新灶先架在旁边空烧几天,火候跟老灶对上了,才敢把锅挪过去,客人从头到尾照常吃。EVE 干的就是这件事,只是它有 2 万个灶。
3 量出来
编译器是唯一不给面子的评委:95.9% 直接过,拦路的只有 3,300 行
第一步没改一行代码,先把恐惧换算成数字。
做法土得掉渣:不开会拍脑袋估工作量,把约 2 万个文件分别丢给真实的 Python 2.7 和 Python 3 解释器各编译一遍。编译器说行才算行,它给的就是标准答案。首次全量扫描回来,95.9% 的文件已经双版本可编译;真正被 Python 3 拒收的,240 万行里只有约 3,300 行,成分如下。
被拒收的写法 规模
旧式 print 语句 约 1,500 处
123L 长整型字面量 约 800 处
Python 3 拒绝解析的旧异常写法 约 600 处
「<>」不等号(老到很多在职 Python 程序员没见过) 50 处
240 万行是库存,不是工作量。不去量,它就一直以天塌的姿势压在心口;量完,大山现了形,大半是土坡。
拦住 240 万行的,只有 3,300 行 240万 行 Python 代码 约 20,000 个文件 95.9% 双版本可编译 被 Python 3 拒绝解析的约 3,300 行 旧式 print 语句 ~1,500 123L 长整型字面量 ~800 旧异常语法 ~600 「<>」不等号 50 双版本都能编译,行为却不同 ~20,000 例:1/2 在 Py2=0,Py3=0.5 必须逐行人工判断 断口=条被截断,未按同一尺度 机械可修 需人工判断 来源:EVE Online 官方开发博客(2026-08-25)。2,400,000 行 Python、约 20,000 个文件中,被 Python 3 直接拒绝解析的只有约 3,300 行——这些机械可修;真正要人工逐行过目的,是那约 20,000 行双版本都能编译、行为却不同的代码。
4 真雷
编译器拦不住的那 2 万行,才是每行都得有人拍板的硬活
语法全对、结果不对,这种雷仪器探不出来。
另有约 2 万行,两个版本都编译得过,行为却不同。最经典的一枚长这样:
Python 2
1/2 等于 0。整数除法向下取整,写这行的人二十年前就默认了这一点。
Python 3
1/2 等于 0.5。同一行字,数悄悄变了。而在 EVE 里,这个数可能是一发炮的伤害、一笔 ISK、一个坐标。
编译器抓不到它,语法上挑不出毛病;测试也未必兜得住,差异可能躺在一条一年走不了几回的分支里。这 2 万行每一行都要人盯着上下文做决定,机械工具修不了。所以阶段一的排兵反着来:先用 Python-Future/futurize 这类自动化工具把 print、123L 这些机械碎渣清干净,人的注意力一滴不洒,全省给需要人的地方。
这种「两边都跑得过、数不一样」的雷,我拆过一回。2014 年我在华南一家城商行驻场,行里要换那套 2002 年上线、跑了十二年的柜面流水库,能动手的窗口只有每天凌晨对账那一刻钟,没人敢赌一次切换。方案是新老两套并行双写,凌晨跑比对脚本。头一个月天天对出几十条差异,追下去多半是没人记得的取整规则:某档利息第三位小数怎么舍,2003 年哪个程序员写死的,文档里没有,只在代码里。连续三十天零差异,行里才批准把读流量切过去。切换那天柜台照常营业,没有一个柜员知道底下换了库。一位快退休的老工程师说的话我记到现在:对出来的差异才是真相,会上说的都不算。
5 已上路
阶段一已经进了正式服,同门师弟还替它探过一次路
这套打法没停在博客里,8 月 25 日进的是生产环境。
阶段一的改动 2026 年 8 月 25 日部署到正式服 Tranquility;7 月底玩家先在测试服 Singularity 试玩验证过一轮。到今天,成功标准守住了:没炸出事故新闻,对这类迁移来说就是最好的新闻。旁证也有:同一套引擎的新作 EVE Frontier 已经跑在现代 Python 3 上,那次迁移一口气跨了 12 个 Python 小版本。路是蹚过一遍的,这回只是车更重、乘客更多。
阶段一之后还有几个阶段、总时间表拉多长,官方没给死数;本文数字与阶段划分以官方开发博客与公开报道为准。
6 带走
这对你意味着什么:你那座「240 万行」,多半也是先量再拆的命
没有 EVE 的规模,这几条作业照样能抄。
你手里多半也压着一座旧账:十年前的 PHP 5、没人敢动的存储过程、一句注释都没有的定时任务。能抄的就三条。先量再怕:找你那门语言里最不会说谎的裁判,编译器、类型检查器、解释器都行,让它把拒收清单如实打出来,恐惧才换算得成工时。机械的归工具、判断的归人:最贵的是人的注意力,别拿它去改 print。成功定义写成「用户察觉不到」:它会逼着你选并行、双跑、比对、灰度,把大爆炸式的周末切换从选项里划掉。
核心 240 万行是库存,3,300 行是门槛,2 万行才是工作量。这三个数不量出来,你就永远在跟第一个数较劲。
老系统迁移的坏名声,一半是没量就开工挣来的。EVE 这单要是最后真做到玩家毫无察觉,「边飞边换零件」这条路上就多了一个 240 万行级别的活案例,比任何布道都管用。
取材声明:本文思想框架取材自凯文·凯利《失控》(能运转的复杂系统只能从能运转的系统上长出来、活系统只能边飞边换零件);事件与全部数字出自 EVE Online 官方开发博客及 Hacker News 相关公开讨论,细节以官方博客与公开报道为准。本文为技术科普解读。
テクノロジー
跑了 23 年的宇宙要换 Python 了:拦路的只有 3,300 行,真正的雷是 2 万行『照常编译、答案不同』
2026年8月30日 · 凯文·凯利《失控》約 6 分
240 万行 Python 2 要搬进 Python 3,你猜真正拦路的有多少行?EVE Online 拿两版真实解释器把约 2 万个文件挨个过了一遍,回来报数:约 3,300 行。更扎手的是另一个数——还有约 2 万行,两边都编译得过,算出来的结果却不一样。
30 秒读懂
EVE Online 宣布把 240 万行、约 2 万个文件的 Python 2 代码库迁往 Python 3;服务器每天要跑 23.75 小时,官方的成功定义是玩家完全察觉不到。
方法:约 2 万个文件分别用真实的 Python 2.7 与 Python 3 解释器各编译一遍,编译器当裁判;首次全量扫描,95.9% 的文件已双版本可编译。
真被 Python 3 拒收的只有约 3,300 行:约 1,500 个旧式 print、约 800 个 123L 长整型、约 600 个旧异常写法、50 个「<>」不等号。
真雷是约 2 万行「双版本可编译、行为不同」:1/2 在 Python 2 等于 0、在 Python 3 等于 0.5,而那个数可能是伤害、ISK 或坐标,每行都要人判。
阶段一改动 2026 年 8 月 25 日已部署正式服 Tranquility;同引擎新作 EVE Frontier 已跑在现代 Python 3 上,路走得通有实证。
1 欠账
一个 2003 年的技术选型,欠成了 2026 年的 240 万行旧账
这笔账不是懒出来的,是活得太久攒出来的。
2003 年 EVE Online 上线,底座选了 Stackless Python:一种带轻量 tasklet 的 Python 变体,单个服务器节点能同时伺候数千玩家。开发商 Fenris Creations 自己就是 Stackless 的重要贡献者,等于下场帮着打地基。2007 年升到 Stackless Python 2.5,2010 年升到 2.7,然后就停住了,一停 16 年。Python 2.7 官方 2020 年就停止维护,整个软件界都搬走了,EVE 留在原地。
你别看它守旧,它守旧有守旧的本钱:23 年攒下的玩家数据全写在 Python 2 时代,每个角色、每点技能、每个机库里的资产、每一分 ISK,迁移后必须一字不差地读回来。重写个 demo 可以推倒重来,给一栋住满人的楼换地基不行。
⚡ 为什么值得围观: 这事在 Hacker News 上拿了 288 分,凑热闹的多数不玩 EVE。全世界守着祖传系统的工程师都想看同一件事:240 万行的旧账,别人怎么下的手。
2 不能停
服务器每天跑 23.75 小时,干得最漂亮的结果是没人发现你干过活
这场迁移的成功标准,官方写得近乎憋屈。
EVE 的服务器每天要跑 23.75 小时,每日停机窗口只有约一刻钟。那一刻钟,够重启进程、上个补丁,不够做任何伤筋动骨的动作。官方给这场迁移的成功定义大意是:玩家完全察觉不到,顶多偶尔觉得哪里更顺了。说白了,满分就是零存在感。
凯文·凯利在《失控》里下过一个判断:能运转的复杂系统,只能从能运转的系统上长出来,推倒重来造不出这种东西。活系统没法停机重造,只能边飞边换零件。EVE 把这句话逼到了字面意思:宇宙不能停转,换血得在血管里做。
打个比方
我楼下肠粉店全天开门,真要换整套灶台,敢关一星期店吗?老客散了就不回来了。只能一个灶一个灶换:新灶先架在旁边空烧几天,火候跟老灶对上了,才敢把锅挪过去,客人从头到尾照常吃。EVE 干的就是这件事,只是它有 2 万个灶。
3 量出来
编译器是唯一不给面子的评委:95.9% 直接过,拦路的只有 3,300 行
第一步没改一行代码,先把恐惧换算成数字。
做法土得掉渣:不开会拍脑袋估工作量,把约 2 万个文件分别丢给真实的 Python 2.7 和 Python 3 解释器各编译一遍。编译器说行才算行,它给的就是标准答案。首次全量扫描回来,95.9% 的文件已经双版本可编译;真正被 Python 3 拒收的,240 万行里只有约 3,300 行,成分如下。
被拒收的写法 规模
旧式 print 语句 约 1,500 处
123L 长整型字面量 约 800 处
Python 3 拒绝解析的旧异常写法 约 600 处
「<>」不等号(老到很多在职 Python 程序员没见过) 50 处
240 万行是库存,不是工作量。不去量,它就一直以天塌的姿势压在心口;量完,大山现了形,大半是土坡。
240万行を阻んでいたのは 3,300 行だった 240万 Python コード行 約 20,000 ファイル 95.9% は両方でコンパイル可 Python 3 が解析を拒む約 3,300 行 旧式 print 文 ~1,500 123L 長整数リテラル ~800 旧い例外構文 ~600 「<>」演算子 50 両方でコンパイルできて、挙動が違う ~20,000 例:1/2 は Py2 で 0、Py3 で 0.5 一行ずつ人の判断が要る 切れ目=バー省略、同縮尺ではない 機械的に直せる 人の判断が要る 出典:EVE Online 公式開発ブログ(2026-08-25)。2,400,000 行の Python・約 20,000 ファイルのうち、Python 3 に解析を拒まれたのは約 3,300 行だけ——それらは機械的に直せる。本当に人手が要るのは、両方でコンパイルできて挙動が異なる約 20,000 行のほうだ。
4 真雷
编译器拦不住的那 2 万行,才是每行都得有人拍板的硬活
语法全对、结果不对,这种雷仪器探不出来。
另有约 2 万行,两个版本都编译得过,行为却不同。最经典的一枚长这样:
Python 2
1/2 等于 0。整数除法向下取整,写这行的人二十年前就默认了这一点。
Python 3
1/2 等于 0.5。同一行字,数悄悄变了。而在 EVE 里,这个数可能是一发炮的伤害、一笔 ISK、一个坐标。
编译器抓不到它,语法上挑不出毛病;测试也未必兜得住,差异可能躺在一条一年走不了几回的分支里。这 2 万行每一行都要人盯着上下文做决定,机械工具修不了。所以阶段一的排兵反着来:先用 Python-Future/futurize 这类自动化工具把 print、123L 这些机械碎渣清干净,人的注意力一滴不洒,全省给需要人的地方。
这种「两边都跑得过、数不一样」的雷,我拆过一回。2014 年我在华南一家城商行驻场,行里要换那套 2002 年上线、跑了十二年的柜面流水库,能动手的窗口只有每天凌晨对账那一刻钟,没人敢赌一次切换。方案是新老两套并行双写,凌晨跑比对脚本。头一个月天天对出几十条差异,追下去多半是没人记得的取整规则:某档利息第三位小数怎么舍,2003 年哪个程序员写死的,文档里没有,只在代码里。连续三十天零差异,行里才批准把读流量切过去。切换那天柜台照常营业,没有一个柜员知道底下换了库。一位快退休的老工程师说的话我记到现在:对出来的差异才是真相,会上说的都不算。
5 已上路
阶段一已经进了正式服,同门师弟还替它探过一次路
这套打法没停在博客里,8 月 25 日进的是生产环境。
阶段一的改动 2026 年 8 月 25 日部署到正式服 Tranquility;7 月底玩家先在测试服 Singularity 试玩验证过一轮。到今天,成功标准守住了:没炸出事故新闻,对这类迁移来说就是最好的新闻。旁证也有:同一套引擎的新作 EVE Frontier 已经跑在现代 Python 3 上,那次迁移一口气跨了 12 个 Python 小版本。路是蹚过一遍的,这回只是车更重、乘客更多。
阶段一之后还有几个阶段、总时间表拉多长,官方没给死数;本文数字与阶段划分以官方开发博客与公开报道为准。
6 带走
这对你意味着什么:你那座「240 万行」,多半也是先量再拆的命
没有 EVE 的规模,这几条作业照样能抄。
你手里多半也压着一座旧账:十年前的 PHP 5、没人敢动的存储过程、一句注释都没有的定时任务。能抄的就三条。先量再怕:找你那门语言里最不会说谎的裁判,编译器、类型检查器、解释器都行,让它把拒收清单如实打出来,恐惧才换算得成工时。机械的归工具、判断的归人:最贵的是人的注意力,别拿它去改 print。成功定义写成「用户察觉不到」:它会逼着你选并行、双跑、比对、灰度,把大爆炸式的周末切换从选项里划掉。
核心 240 万行是库存,3,300 行是门槛,2 万行才是工作量。这三个数不量出来,你就永远在跟第一个数较劲。
老系统迁移的坏名声,一半是没量就开工挣来的。EVE 这单要是最后真做到玩家毫无察觉,「边飞边换零件」这条路上就多了一个 240 万行级别的活案例,比任何布道都管用。
取材声明:本文思想框架取材自凯文·凯利《失控》(能运转的复杂系统只能从能运转的系统上长出来、活系统只能边飞边换零件);事件与全部数字出自 EVE Online 官方开发博客及 Hacker News 相关公开讨论,细节以官方博客与公开报道为准。本文为技术科普解读。