Skip to main content

Releasing

Releases are automated via GitHub Actions. Each component has its own independent release process with a dedicated tag pattern.

Components

ComponentTag patternBump scriptDestination
Infr (compiler + crate)infr-v*./scripts/bump-infr-version.shGitHub Releases, crates.io
VS Code extensionvscode-v*./scripts/bump-vscode-version.shVS Code Marketplace
Documentationdocs-v*./scripts/bump-docs-version.shinfrlang.org

Each component is versioned independently — you can release the extension or docs without releasing a new compiler version.

Releasing Infr (compiler + crate)

  1. Bump the version:

    ./scripts/bump-infr-version.sh 0.3.0

    This updates Cargo.toml and Cargo.lock.

  2. Commit and tag:

    git add -A && git commit -m "Bump infr version to 0.3.0"
    git tag infr-v0.3.0
  3. Push:

    git push origin main --tags

This builds binaries for all platforms, publishes to crates.io, and creates a GitHub Release.

Releasing the VS Code extension

  1. Bump the version:

    ./scripts/bump-vscode-version.sh 0.3.0

    This updates editors/vscode/package.json.

  2. Commit and tag:

    git add -A && git commit -m "Bump VS Code extension version to 0.3.0"
    git tag vscode-v0.3.0
  3. Push:

    git push origin main --tags

This publishes the extension to the VS Code Marketplace.

Releasing the documentation

  1. Bump the version:

    ./scripts/bump-docs-version.sh 0.3.0

    This updates docs/package.json.

  2. Commit and tag:

    git add -A && git commit -m "Bump docs version to 0.3.0"
    git tag docs-v0.3.0
  3. Push:

    git push origin main --tags

This builds and deploys the documentation to Cloudflare Pages.

Required secrets

The following GitHub Actions secrets must be configured in the repository:

SecretPurpose
CARGO_REGISTRY_TOKENPublishing to crates.io
VSCE_PATPublishing to VS Code Marketplace
CLOUDFLARE_API_TOKENDeploying docs to Cloudflare Pages
CLOUDFLARE_ACCOUNT_IDCloudflare account identifier

Re-running failed jobs

Each release workflow's jobs run independently of each other. If one fails, you can re-run just that job from the GitHub Actions UI without re-triggering the entire workflow.