将 Mercurial 迁移到 Python 3 的代价可能是一系列意外错误。

版本控制系统维护员 水银 让我失望 结果 致力于将项目从 Python 2 转移到 Python 3。尽管事实上第一次移植尝试是在 2008 年进行的,并且在 3 年开始加速适应使用 Python 2015,但使用 Python 3 的完整能力直到最近才实现Mercurial 5.2 的分支。

关于 Python 3 端口稳定性的预测令人失望。 特别是,预计几年后代码中会出现随机错误,因为测试并未覆盖 100% 的代码库,而且许多问题在静态分析期间是不可见的,仅在运行时出现。 此外,许多第三方附加组件和扩展仍未翻译为 Python 3。
由于在移植过程中决定逐步将代码调整为 Python 3,同时保持对 Python 2 的支持,因此代码中包含了许多将 Python 2 和 3 结合起来的 hack,这些修改必须在 Python 2 支持结束后进行清理。

在评论 Python 3 的情况时,Mercurial 维护者认为,在没有与开发人员相关的突破性改进的情况下,决定推广破坏互操作性的 Python 3 并将其强加为新的、更正确的语言,是一个很大的错误,导致对社区造成极大伤害,这就是大型项目不需要这样做的一个例子。 Python 3 的发布并没有逐步构建功能并允许逐步定制应用程序,而是迫使开发人员重写代码并花费资源维护 Python 2 和 Python 3 的单独分支。直到 Python 3.0 发布七年后, Python 3.5 引入了一些功能来平滑过渡过程并确保相同的代码库同时运行 Python 2 和 Python 3。

来源: opennet.ru

添加评论