Skip to content

Changing Wasmtime's versioning for unreleased branches #13622

@alexcrichton

Description

@alexcrichton

I'd like to propose a change to how we manage versions in the Wasmtime repository motivated by downstream usage in Spin. Specifically I'd like to propose improving signalling of in-development versions of Wasmtime and assist in making it as easy as possible to test release branches before we publish them. The goal here would be to retain the "feel" of our release process today (just hit merge on PRs) while changing the underlying implementation.

Specifically what I'd like to propose is:

  • The main branch perpetually has a version number X.0.0-dev. The "-dev" part here signifies that it'll never be published anywhere and it's entirely in development. While not strictly necessary this'll help differentiate development on a branch from release branches I believe.
  • Upon making the release-X.0.0 branch, currently automation sends a PR to main to bump to (X+1).0.0. It'd still do that, but it'd also create a PR against the release-X.0.0 branch which changes the version number to X.0.0-rc.1.
  • Upon bumping to X.0.0-rc.1, this PR would additionally have "[automatically-tag-and-release-this]" which means that X.0.0-rc.1 would be published to crates.io and additionally be published to this repository's github releases.
  • I'd expect that the github releases for X.0.0-rc.1 would permanently be listed as a "pre-release" in the GitHub sense. We'd create corresponding tags and such for this exactly as-is today.
  • If necessary we could bump the rc on the release branch manually (triggered via a specific input to github actions) and make multiple release candidate publishes before a branch is actually released.
  • As is today the actual publication of the release branch would happen via automation where we'd automatically change X.0.0-rc.N to X.0.0 and then tag/publish that.

This would enable publishing pre-release artifacts of Wasmtime to crates.io to enable as-easy-as-possible downstream consumption to help report issues and test out what's about to be published. This would enable Spin, for example, to update and test out easily and see if anything needs updating. While this is all possible in theory to do with git dependencies it's generally much easier to work with crates.io dependencies and I think it's wortwhile to lower the bar as much as possible to make it easy to test out pre-release artifacts.

I wanted to open an issue here and see if anyone had any thoughts about this though and/or opposed this. My intention is that the work here is largely just changing scripts/publish.rs w.r.t. version bumps, adjusting the precise schedule of what makes PRs where, and then updating documentation of our release process.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions