Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a two-week delay to Wasmtime's release process #3955

Merged

Conversation

alexcrichton
Copy link
Member

This commit is a proposal to update Wasmtime's release process with a
two-week delay from branching a release until it's actually officially
released. We've had two issues lately that came up which led to this proposal:

  • In fix(wasi): enable all WasiFiles to be pollable (#3913) #3915 it was realized that changes just before the 0.35.0 release
    weren't enough for an embedding use case, but the PR didn't meet the
    expectations for a full patch release.

  • At Fastly we were about to start rolling out a new version of Wasmtime
    when over the weekend the fuzz bug Register allocation panic with simd comparison #3951 was found. This led to the
    desire internally to have a "must have been fuzzed for this long"
    period of time for Wasmtime changes which we felt were better
    reflected in the release process itself rather than something about
    Fastly's own integration with Wasmtime.

This commit updates the automation for releases to unconditionally
create a release-X.Y.Z branch on the 5th of every month. The actual
release from this branch is then performed on the 20th of every month,
roughly two weeks later. This should provide a period of time to ensure
that all changes in a release are fuzzed for at least two weeks and
avoid any further surprises. This should also help with any last-minute
changes made just before a release if they need tweaking since
backporting to a not-yet-released branch is much easier.

Overall there are some new properties about Wasmtime with this proposal
as well:

  • The main branch will always have a section in RELEASES.md which is
    listed as "Unreleased" for us to fill out.
  • The main branch will always be a version ahead of the latest
    release. For example it will be bump pre-emptively as part of the
    release process on the 5th where if release-2.0.0 was created then
    the main branch will have 3.0.0 Wasmtime.
  • Dates for major versions are automatically updated in the
    RELEASES.md notes.

The associated documentation for our release process is updated and the
various scripts should all be updated now as well with this commit.

This commit is a proposal to update Wasmtime's release process with a
two-week delay from branching a release until it's actually officially
released. We've had two issues lately that came up which led to this proposal:

* In bytecodealliance#3915 it was realized that changes just before the 0.35.0 release
  weren't enough for an embedding use case, but the PR didn't meet the
  expectations for a full patch release.

* At Fastly we were about to start rolling out a new version of Wasmtime
  when over the weekend the fuzz bug bytecodealliance#3951 was found. This led to the
  desire internally to have a "must have been fuzzed for this long"
  period of time for Wasmtime changes which we felt were better
  reflected in the release process itself rather than something about
  Fastly's own integration with Wasmtime.

This commit updates the automation for releases to unconditionally
create a `release-X.Y.Z` branch on the 5th of every month. The actual
release from this branch is then performed on the 20th of every month,
roughly two weeks later. This should provide a period of time to ensure
that all changes in a release are fuzzed for at least two weeks and
avoid any further surprises. This should also help with any last-minute
changes made just before a release if they need tweaking since
backporting to a not-yet-released branch is much easier.

Overall there are some new properties about Wasmtime with this proposal
as well:

* The `main` branch will always have a section in `RELEASES.md` which is
  listed as "Unreleased" for us to fill out.
* The `main` branch will always be a version ahead of the latest
  release. For example it will be bump pre-emptively as part of the
  release process on the 5th where if `release-2.0.0` was created then
  the `main` branch will have 3.0.0 Wasmtime.
* Dates for major versions are automatically updated in the
  `RELEASES.md` notes.

The associated documentation for our release process is updated and the
various scripts should all be updated now as well with this commit.
@alexcrichton
Copy link
Member Author

Some examples of PRs:

Note that I've included a major version bump to 0.36.0 in this PR since that's the next version of Wasmtime, and that'll be necessary to bootstrap this process. That's because main will always be a version ahead of the latest release branch.

@github-actions github-actions bot added cranelift Issues related to the Cranelift code generator cranelift:meta Everything related to the meta-language. cranelift:module cranelift:wasm isle Related to the ISLE domain-specific language wasmtime:docs Issues related to Wasmtime's documentation labels Mar 22, 2022
@github-actions
Copy link

Subscribe to Label Action

cc @cfallin, @fitzgen

This issue or pull request has been labeled: "cranelift", "cranelift:meta", "cranelift:module", "cranelift:wasm", "isle", "wasmtime:docs"

Thus the following users have been cc'd because of the following labels:

  • cfallin: isle
  • fitzgen: isle

To subscribe or unsubscribe from this label, edit the .github/subscribe-to-label.json configuration file.

Learn more.

@alexcrichton
Copy link
Member Author

I added some more notes here on performing a security release, specifically indicating that we should open a version-bump PR ahead-of-time as we announce the intent to make patch releases. This gives us some extra runway to fix any issues with CI that arise, for example the backports included in #3984.

Copy link
Member

@cfallin cfallin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good overall; the advanced sed magic feels a little brittle but given that we will review all the PRs manually before merging, let's see how it works I guess (props for automating even the little nits like editing the date on main though!).

locally maintain and develop patches for any older releases being backported
to. Note that from the major release process there should already be a
branch for all older releases.
2. **Send a PR for the version bump when an email goes out announcing there will
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for maximum clarity it might be good to say here that the PR should not include the security patch at this point (that comes below)

@alexcrichton alexcrichton merged commit c89dc55 into bytecodealliance:main Apr 1, 2022
@alexcrichton alexcrichton deleted the new-release-process branch April 1, 2022 18:11
@cfallin cfallin mentioned this pull request Jun 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cranelift:meta Everything related to the meta-language. cranelift:module cranelift:wasm cranelift Issues related to the Cranelift code generator isle Related to the ISLE domain-specific language wasmtime:docs Issues related to Wasmtime's documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants