1"use strict";(self.rspackChunkrspack_website=self.rspackChunkrspack_website||[]).push([["05c"],{iM(e,s,n){n.r(s);var r=n("i"),i=n("f"),l=n("V");function a(e){let s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s.h1,{id:"releasing",children:[(0,r.jsx)(s.a,{className:"rp-header-anchor","aria-hidden":"true",href:"#releasing",children:"#"}),"Releasing"]}),"\n",(0,r.jsx)(s.p,{children:"Rspack releases are automated through GitHub Actions."}),"\n",(0,r.jsxs)(s.p,{children:["You can view all released versions on the npm version pages of ",(0,r.jsx)(s.a,{href:"https://www.npmjs.com/package/@rspack/core?activeTab=versions",rel:"noopener noreferrer",target:"_blank",children:"@rspack/core"})," and ",(0,r.jsx)(s.a,{href:"https://www.npmjs.com/package/@rspack/cli?activeTab=versions",rel:"noopener noreferrer",target:"_blank",children:"@rspack/cli"}),"."]}),"\n",(0,r.jsxs)(s.h2,{id:"latest-release",children:[(0,r.jsx)(s.a,{className:"rp-header-anchor","aria-hidden":"true",href:"#latest-release",children:"#"}),"Latest release"]}),"\n",(0,r.jsx)(s.p,{children:"The latest stable release follows the Semantic Versioning specification (x.y.z)."}),"\n",(0,r.jsxs)(s.p,{children:["The ",(0,r.jsx)(s.a,{href:"https://github.com/web-infra-dev/rspack/actions/workflows/release.yml?query=is%3Asuccess",rel:"noopener noreferrer",target:"_blank",children:"full release workflow"})," is triggered manually by Rspack maintainers on Tuesday with the complete release notes."]}),"\n",(0,r.jsxs)(s.p,{children:["During the release, the binary artifacts below are built, grouped by the support tier that the ",(0,r.jsx)(s.a,{href:"https://github.com/nodejs/node/blob/main/BUILDING.md#platform-list",rel:"noopener noreferrer",target:"_blank",children:"Node.js platform list"})," gives to the platform they run on:"]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"Tier 1"})}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:"x86_64-unknown-linux-gnu"}),"\n",(0,r.jsx)(s.li,{children:"aarch64-unknown-linux-gnu"}),"\n",(0,r.jsx)(s.li,{children:"x86_64-pc-windows-msvc"}),"\n",(0,r.jsx)(s.li,{children:"aarch64-apple-darwin"}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"Tier 2"})}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:"powerpc64le-unknown-linux-gnu"}),"\n",(0,r.jsx)(s.li,{children:"s390x-unknown-linux-gnu"}),"\n",(0,r.jsx)(s.li,{children:"aarch64-pc-windows-msvc"}),"\n",(0,r.jsx)(s.li,{children:"x86_64-apple-darwin"}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"Experimental"})}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:"x86_64-unknown-linux-musl"}),"\n",(0,r.jsx)(s.li,{children:"riscv64gc-unknown-linux-gnu"}),"\n"]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"Others"})}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:"aarch64-unknown-linux-musl"}),"\n",(0,r.jsx)(s.li,{children:"riscv64gc-unknown-linux-musl"}),"\n",(0,r.jsx)(s.li,{children:"i686-pc-windows-msvc"}),"\n"]}),"\n",(0,r.jsx)(l.Pq,{type:"warning",title:"Platforms below Tier 1",children:(0,r.jsx)(s.p,{children:"For these platforms Rspack only guarantees that the binding is built successfully. CI verifies the build only and never runs the test suite on them, so a green CI run is not a guarantee that Rspack behaves correctly there."})}),"\n",(0,r.jsxs)(s.h3,{id:"release-steps",children:[(0,r.jsx)(s.a,{className:"rp-header-anchor","aria-hidden":"true",href:"#release-steps",children:"#"}),"Release steps"]}),"\n",(0,r.jsxs)(s.ol,{children:["\n",(0,r.jsxs)(s.li,{children:["Create a new branch, for example ",(0,r.jsx)(s.code,{children:"release/v1.0.0"}),"."]}),"\n",(0,r.jsxs)(s.li,{children:["Update the version using the ",(0,r.jsx)(s.code,{children:"pnpm x version"})," command on the branch."]}),"\n"]}),"\n",(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(s.pre,{className:"shiki css-variables",style:{backgroundColor:"var(--shiki-background)",color:"var(--shiki-foreground)"},tabIndex:"0",lang:"bash",children:(0,r.jsxs)(s.code,{children:[(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"# Release a patch version"})}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"pnpm"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" x"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" version"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" patch"})]}),"\n",(0,r.jsx)(s.span,{className:"line"}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"# Release a minor version"})}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"pnpm"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" x"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" version"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" minor"})]}),"\n",(0,r.jsx)(s.span,{className:"line"}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"# Release a major version"})}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"pnpm"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" x"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" version"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" major"})]}),"\n",(0,r.jsx)(s.span,{className:"line"}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"# Release an alpha version"})}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"pnpm"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" x"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" version"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" patch"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" --pre"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"}
1,children:" alpha"})]}),"\n",(0,r.jsx)(s.span,{className:"line"}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"# Release a beta version"})}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"pnpm"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" x"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" version"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" patch"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" --pre"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" beta"})]}),"\n",(0,r.jsx)(s.span,{className:"line"}),"\n",(0,r.jsx)(s.span,{className:"line",children:(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"# Release a rc version"})}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"pnpm"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" x"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" version"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" patch"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" --pre"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" rc"})]})]})})}),"\n",(0,r.jsxs)(s.ol,{start:"3",children:["\n",(0,r.jsx)(s.li,{children:"Commit the code and push to the remote branch."}),"\n"]}),"\n",(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(s.pre,{className:"shiki css-variables",style:{backgroundColor:"var(--shiki-background)",color:"var(--shiki-foreground)"},tabIndex:"0",lang:"bash",children:(0,r.jsxs)(s.code,{children:[(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"git"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" add"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" ."})]}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"git"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" commit"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" -m"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:' "chore: release v1.0.0"'})]}),"\n",(0,r.jsxs)(s.span,{className:"line",children:[(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"git"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" push"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" origin"}),(0,r.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:" release/vx.y.z"})]})]})})}),"\n",(0,r.jsxs)(s.ol,{start:"4",children:["\n",(0,r.jsxs)(s.li,{children:["Create a PR with the title ",(0,r.jsx)(s.code,{children:"chore: release v1.0.0"}),"."]}),"\n",(0,r.jsxs)(s.li,{children:["Run the ",(0,r.jsx)(s.a,{href:"https://github.com/web-infra-dev/rspack/actions/workflows/ecosystem-ci.yml",rel:"noopener noreferrer",target:"_blank",children:"Ecosystem CI workflow"})," to ensure all ecosystem projects are working properly."]}),"\n",(0,r.jsxs)(s.li,{children:["Run the full release workflow on the release branch:\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"https://github.com/web-infra-dev/rspack/actions/workflows/release.yml",rel:"noopener noreferrer",target:"_blank",children:"Release Full"}),": Publish npm packages to registry"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"https://github.com/web-infra-dev/rspack/actions/workflows/release-crates.yml",rel:"noopener noreferrer",target:"_blank",children:"Release Crates"}),": Publish Rust crates to crates.io"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["After the release, merge the PR to the ",(0,r.jsx)(s.code,{children:"main"})," branch."]}),"\n",(0,r.jsxs)(s.li,{children:["Use the ",(0,r.jsx)(s.code,{children:"create-draft-release-notes"})," skill to create a draft ",(0,r.jsx)(s.a,{href:"https://github.com/web-infra-dev/rspack/releases",rel:"noopener noreferrer",target:"_blank",children:"GitHub release note"}),"."]}),"\n",(0,r.jsx)(s.li,{children:"Review the draft release note, optionally add release highlights, and publish it."}),"\n"]}),"\n",(0,r.jsxs)(s.h2,{id:"canary-release",children:[(0,r.jsx)(s.a,{className:"rp-header-anchor","aria-hidden":"true",href:"#canary-release",children:"#"}),"Canary release"]}),"\n",(0,r.jsx)(s.p,{children:"Canary is the pre-release version for testing and verifying new features."}),"\n",(0,r.jsxs)(s.p,{children:["Releasing a canary version does not require manually creating a branch or updating the version, it only requires Rspack maintainers to trigger the ",(0,r.jsx)(s.a,{href:"https://github.com/web-infra-dev/rspack/actions/workflows/release-canary.yml",rel:"noopener noreferrer",target:"_blank",children:"Canary release workflow"}),"."]})]})}function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}t.__RSPRESS_PAGE_META={},t.__RSPRESS_PAGE_META["en%2Fcontribute%2Fdevelopment%2Freleasing.md"]={toc:[{id:"latest-release",text:"Latest release",depth:2},{id:"release-steps",text:"Release steps",depth:3},{id:"canary-release",text:"Canary release",depth:2}],title:"Releasing",headingTitle:"Releasing",frontmatter:{description:"Rspack releases are automated through GitHub Actions"}},n.d(s,{default:()=>t})}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.