gem5-20.0 已发布!


经过漫长的等待和一些意外的问题,gem5-20.0 已发布! gem5 仓库的 master 分支现在指向 gem5-20 发布,而不是 gem5-19 发布。

感谢所有使此发布成为可能的人! 这是一个非常富有成效的发布,有 84 个问题,约 500 次提交,以及 30 位独特的贡献者。

下面,我介绍了 gem5-20.0 自 gem5-19 以来的主要更改,这些更改也可以在 RELEASE-NOTES.md 文件中找到。 这应该涵盖所有主要更改和面向用户的更改。 希望阅读更改日志后,您可以更新本地 gem5 更改,然后一切都会正常工作。 我确信这不会那么干净,但我们可以希望。

排行榜

首先,我想看看此发布中最多产的贡献者的快速排行榜。 展望未来,我希望这些排行榜能够在网站上实时自动更新。 如果您有兴趣帮助完成这项工作,请告诉我!

提交

v19.0.0.0 标签和 v20.0.0.0 标签之间总共有 510 次提交。 gem5 v19.0.0.0 于 2 月 20 日标记,因此此发布超过 91 天,或每天超过 5.5 次提交! 这是一个相当快的节奏!

拥有更多提交并不一定意味着您贡献更多。 但是,出现在前 10 名提交者列表中确实意味着您在 gem5 上投入了大量时间。 为此,社区感谢您!

   235  Gabe Black
    66  Giacomo Travaglini
    46  Bobby R. Bruce
    24  Nils Asmussen
    21  Adrian Herrera
    21  Daniel Carvalho
    19  Nikos Nikoleris
    14  Matthew Poremba
    12  Timothy Hayes
     9  Ciro Santilli

审查者

可能比原始提交更重要的是那些抽出时间审查代码的人。 以下是此次提交的前 10 名审查者。 再次感谢您的工作! 审查者发现的错误数量令人难以置信,没有这些人,gem5 的代码质量将受到影响。

虽然有 510 次提交,但有 642 次审查,平均每次更改 1.25 次审查。 我们计算审查的方式并不完美,因为它遗漏了”重新审查”,也跳过了”维护者”审查。 但是,我希望在未来的发布中,这个审查比率更接近每个变更集 2 次审查。

    162 Jason Lowe-Power
    120 Bobby R. Bruce
     76 Nikos Nikoleris
     58 Gabe Black
     51 Daniel Carvalho
     49 Giacomo Travaglini
     44 Ciro Santilli
     13 Matthew Poremba
     10 Chun-Chen Hsu
      6 Ayaz Akram
      6 Andreas Sandberg

我想特别关注这个列表,因为有很多人做审查比编写代码更多。 这对社区非常有帮助,即使您没有添加代码,我们也感谢您的贡献!

经验教训

gem5 社区致力于根据最佳实践以及开发人员和用户的反馈不断改进其流程。在发布 gem5 20(我们的第二个正式 gem5 发布)时,我们学到了一些经验教训,这些经验教训将在开发未来版本的 gem5 时考虑。

gem5 项目遵循受 gitflow 启发的开发设置,其中我们的 “master” 分支在其 HEAD 包含 gem5 的最新发布,而单独的 “develop” 分支用于日常 gem5 开发。发布时,我们从 develop 创建一个 staging 分支。然后测试此 staging 分支,并在必要时修复,在此期间开发在 develop 分支上继续进行。一旦所有主要测试都显示通过,并且找不到其他错误,staging 分支合并到 master 和 develop 分支,然后随后删除,从而完成发布。总的来说,我们发现这个政策对我们有利,尽管还有改进的空间。

对于 gem5 20,我们有一个政策,在创建 staging 分支之前给用户整整两周的通知,另外还有两周用于测试和修复 staging 分支上的错误。我们的经验表明,在创建 staging 之前的两周通知在集中开发人员的注意力、促进发布所需功能的优先级排序以及总体上改善通过我们的 Gerrit 代码审查系统审查的补丁集周转方面是好的。然而,事后看来,两周对许多人来说通知太短,导致那些希望将其功能纳入 gem5 20 的人的大量 Gerrit 积压。在未来的发布中,我们将在创建 staging 分支之前给出整整一个月的通知。此外,我们在星期五创建了 staging 分支,目标是正好两周后(另一个星期五)将 staging 分支合并到 master 和 develop 分支。我们发现这导致了漫长的紧张更改周、疲劳和士气低落。星期五发布还有工作泄漏到周末或投诉直到下周一才解决的令人担忧的前景。展望未来,我们将承诺在周中发布

我们还意识到,staging 分支存在两周的政策是不必要的限制性。鉴于只允许测试、错误修复和关键的最后时刻更改合并到分支中,我们认为没有理由 staging 分支不应该存在,直到其稳定性和可靠性得到充分证明。在未来的发布中,gem5 staging 分支将存在,直到测试运行以及这些测试暴露的错误被修复所需的时间。由于开发可以在 develop 分支上继续进行,这个更持久的 staging 分支不会干扰其他 gem5 活动。

在测试我们的 staging 分支时,我们发现了一些由我们不定期运行的测试暴露的错误。特别是,令我们惊讶的是,使用我们正式支持的编译器集构建不同 gem5 ISA 的简单检查揭示了许多编译错误。因此,我们将在 gem5 开发期间定期测试支持的编译器。我们还将继续改进我们的测试程序,更频繁地运行更多测试,特别是通过启动定期夜间构建,可以运行更大的测试和构建过程。在开发过程中更早地发现错误,与在 staging 分支中稍后发现和修复错误相比,将为我们节省大量工作。

最后,gem5 20 正式支持 Python3,同时向后兼容 Python2。我们了解到支持 Python3 和 Python2 是一项费力的任务,比我们预期的要多。已部署大量资源以确保 gem5 20 与 Python3 一起运行,同时仍为那些继续使用现已退役的 Python2 的人运行。然而,这种支持水平不能无限期地维持。因此,我们渴望在 gem5 的未来发布中加速放弃 Python2 支持

我们欢迎任何其他关于如何改进此流程的反馈。 请随时通过邮件列表提交问题告知我们。

更改日志

新功能

已移除的功能

新支持的平台

测试改进

其他 API 更改

其他更改