layout: post title: “gem5-19 Released!” author: Jason Lowe-Power date: 2020-02-25 categories: project

gem5-19.0.0.0 has officially been released! We're a couple of months behind schedule, but future releases should be better.

The main goal of the gem5-19 release was to test our release mechanisms to make sure that things go smoothly for the first [“RE-gem5”]({% post_url 2019-9-12-re-gem5 %}) release. In this sense, gem5-19 is a major success! We were able to find several bugs in our release methodology that have been worked out. I'm hopeful that the gem5-20 release will not have any hiccups ;).

Below is a discussion about the main changes in gem5-19 and an FAQ about gem5 releases. We don't have a formal release notes for this version of gem5. However, all releases going forward will have a formal release notes that details the differences from the previous version.

Main changes in gem5-19

There are a few big changes with gem5-19 that everyone (users, developers, etc.) should be aware of. If you‘ve been following the gem5-dev mailing list this likely isn’t news to you. However, with the inundation of email, I'm sure we all have missed a few messages.

New website

If you‘re reading this on the website, then you can tell, a lot has changed! Instead of using the old wiki, we’ve migrated to a jekyll-based site hosted on github pages (with the source code on our googlesource site). Our goal is to make this new website easier to navigate than the old wiki and improve our documentation and communication.

One big change from the old wiki is how anyone can contribute to the website. Now, instead of creating a wiki account and making changes, you can clone the website, update the markdown and then have your code reviewed on the same Gerrit code review site as the gem5 source.

If you have any questions on the new site or how to contribute, don't hesitate to ask on the mailing lists!

There may be some information which didn't get migrated from the old website. You can still access all of the old pages on old.gem5.org.

Issue tracker

Another way we‘re working to improve our documentation and communication is by instituting an issue tracker. We have a Jira-based issue tracking system which can be found at gem5.atlassian.net. Anyone can create an account on this site and add new issues or comment on existing issues. Since we started this site last fall, we’ve had over 300 issues created!

With all of these new issues created, we‘re looking for people to contribute to fixing the issues! There are some issues marked as “easy” or “good first time issues” which we encourage people interested in learning to contribute to gem5 to take a look at. For any issue, if you’re interested in taking it on, feel free to make yourself the assignee or make a comment. Someone from the community will likely chime in and let you know what needs to be done!

Stable vs development branches

gem5 now has (at least) two branches in the git repository: “master” and “develop”. The “master” branch is the stable gem5 release. This will only be updated on releases or with hot fixes. If you clone gem5 from https://gem5.googlesource.com/public/gem5 you will get the stable master branch. As of today, this will be the gem5-19 release.

If you want to contribute your changes to gem5, things have changed a little bit. You'll now need to push your changes to the “develop” branch. Other than changing which branch you have checked out and which branch you push to, there are no changes!

FAQ about the release

Below, I'd like to answer a few common questions about this release. You can find all of the details about our release process in the Contributing document.

Why releases?

For the past 10 years since the first gem5 “release” in 2011, gem5 has been only available by downloading the development version. This has caused a number of pain points for gem5 users. For instance, if someone created a new model that was not integrated into the mainline gem5 (e.g., gem5-gpu then the APIs that this model used might change at any time (this exact problem happened with gem5-gpu, which is no longer maintained because of this issue). Additionally, it was difficult for gem5 users to communicate to the rest of the community (e.g., in papers) what version of gem5 was used to run experiments. This reduced the reproducibility of research and made it difficult for others to understand the impact of potential research ideas (e.g., “did the authors know there was a bug which causes a 2x slowdown fixed last month?”).

Now, with releases it will make it easier to solve these problems. In papers what cite gem5, authors can now explicitly say which version of gem5 they used to run their experience (e.g., “We used gem5-20.2.0.3...”). This will make it much easier to reproduce research ideas and to evaluate if the authors are using appropriate simulation infrastructure.

Additionally, starting with gem5-20, we will define stable APIs. These APIs will not change from one version to another without first going through a “deprecation” phase. More details about this deprecation process will be published with gem5-20.

How frequently will gem5 be released?

gem5 will be released three times per year approximately in April, August, and December. These times were chosen to align with the computer architecture paper submission calendar. Releases will be a few weeks after the MICRO, HPCA, and ISCA deadlines, most years.

This calendar was chosen so that after a paper submission researchers can start using the “current” version for the next paper.

What does the release number mean?

The currently release is officially “gem5-19.0.0.0”. You may say “that‘s a lot of 0’s!” and you'd be right.

To explain why this is, gem5 conforms to a “v{YY}.{MAJOR}.{MINOR}.{HOTFIX}” versioning system. E.g., the first major release of 2022 will be “v22.0.0.0”, followed by “v22.1.0.0”. All the releases (with the exception of hotfixes) are considered major releases. For the meantime, there are no minor releases though we keep the minor release numbers in case this policy changes in the future.

Should I use the master or develop branch

As of right now, the master branch will not change again until the gem5-20 release. This means that any new features added or bugs fixed between now and the gem5-20 release will not be in the master branch (unless we find a “breaking” bug).

For now, if you want the same behavior as before, you should use the develop branch which will be updated on every gem5 commit. In the future, after gem5-20, we will begin strongly encouraging users to use master instead of the develop branch.

gem5-20

The next release will be gem5-20. This will be the first “official” release of gem5 since its inception. We will be working hard on gem5-20 over the next couple of months. The main goals of gem5-20 will be on improving the stability of gem5, ensuring important applications run correctly on gem5, and creating robust testing infrastructure.

We would love to have you contribute to this effort! Please check out the current open issues on our issue tracker and find any open issue or contact us on the mailing lists.