Portage 3.0稳定版已经发布

最近开发者 负责包裹管理系统的人 波蒂奇 (在Gentoo Linux发行版中) 宣布发布版本3.0的稳定版本。

其中, 主要的新颖性 在这个新分支中,长期开展的工作是 过渡到Python 3并终止对Python 2.7的支持 (已经出现了很长一段时间的事情,因为该分支机构已经正式停止了几个月的支持)

我们有个好消息! Gentoo Portage项目最近稳定了软件包管理器的3.0版。

什么是新的? 好了,Portage的第三个版本取消了对Python 2.7的支持,这是整个2020年以来Gentoo Python项目在主要Gentoo存储库中一直在进行的工作。

除了终止对Python 2.7的支持之外, 另一个重大变化 从Portage 3.0的新稳定分支中脱颖而出 包含了各种优化 他们允许的 使计算更快(在50%和60%之间) 与确定依赖项相关联。

有趣的是,一些开发人员建议用C / C ++或Go重写依赖关系解析代码,以加快工作速度,但他们设法解决了现有问题。

现有代码的配置文件显示,大部分时间 计算 专门用于调用use_reduce和catpkgsplit函数 带有重复的参数集(领导这项工作的人提到,例如catpkgsplit函数被调用1至5百万次)。

发现问题后,请提及以加快计算速度, 应用了缓存 这些功能通过字典的结果。

另外,由于用户提供了补丁,因此更新到最新版本的Portage可以极大地提高50-60%的依赖关系计算速度。 我们希望看到我们的社区参与我们的软件! 有关更多详细信息,请从提供补丁的社区成员中查看此Reddit帖子。 保持健康,并与Gentoo一起烹饪!

除此之外 它还指出,lru_cache内置函数是最佳的 用于缓存任务,但自3.2起仅在Python版本中可用。

为了向后兼容,还添加了一个存根来替换lru_cache,但是决定在Portage 2.7中终止对Python 3.0的支持大大简化了该任务,并可以绕过此层。

我花了一些时间使用cProfile和vmprof对Portage进行性能分析,以了解哪些功能花费的时间最长。 我还从探查器结果生成了一些火焰图,看起来像这样。 我注意到有些功能,例如 use_reducecatpkgsplit经常以相同的参数被调用(例如1到5百万次, catpkgsplit)。 我做了一些实验以将这些函数的结果缓存在命令中,在看到一些良好的加速之后,我向Portage开发人员列表提交了补丁。 有人建议使用内置的Pythonlru_cache 而是使用函数装饰器,但这仅在Python 3.2及更高版本中可用。

另一方面,使用缓存已将ThinkPad X220上的“ emerge -uDvpU –with-bdeps = y @world”操作从5分钟20秒减少到3分16秒(63%)。 在其他系统上的测试表明,性能至少提高了48%。

准备更改的开发人员还尝试实现原型 从依赖关系解析代码 在C ++或Rust中, 但结果却实在是太难了, 因为它需要移植大量代码,并且同时怀疑结果是否值得付出努力。

最后 如果您想了解更多 关于此稳定分支的发行说明,您可以检查详细信息 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。