feat: avoid unnecessary ssa passes while loop unrolling (#6509) #2985
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
push: | |
branches: | |
- master | |
jobs: | |
release-please: | |
name: Create Release | |
outputs: | |
release-pr: ${{ steps.release.outputs.pr }} | |
tag-name: ${{ steps.release.outputs.tag_name }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Run release-please | |
id: release | |
uses: google-github-actions/release-please-action@v3 | |
with: | |
token: ${{ secrets.NOIR_RELEASES_TOKEN }} | |
command: manifest | |
update-acvm-workspace-package-versions: | |
name: Update acvm workspace package versions | |
needs: [release-please] | |
if: ${{ needs.release-please.outputs.release-pr }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout release branch | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ fromJSON(needs.release-please.outputs.release-pr).headBranchName }} | |
token: ${{ secrets.NOIR_RELEASES_TOKEN }} | |
- name: Setup toolchain | |
uses: dtolnay/rust-toolchain@1.65.0 | |
- name: Update ACVM workspace root versions | |
run: | | |
./scripts/update-acvm-workspace-versions.sh | |
- name: Update lockfile | |
run: | | |
cargo update --workspace | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18.19.0 | |
cache: 'yarn' | |
cache-dependency-path: 'yarn.lock' | |
- name: Update yarn.lock | |
run: yarn | |
- name: Configure git | |
run: | | |
git config user.name noirwhal | |
git config user.email tomfrench@aztecprotocol.com | |
- name: Commit updates | |
run: | | |
git add . | |
git commit -m 'chore: Update root workspace acvm versions and lockfile' | |
git push | |
update-docs: | |
name: Update docs | |
needs: [release-please, update-acvm-workspace-package-versions] | |
if: ${{ needs.release-please.outputs.release-pr }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout release branch | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ fromJSON(needs.release-please.outputs.release-pr).headBranchName }} | |
token: ${{ secrets.NOIR_RELEASES_TOKEN }} | |
- name: Install Yarn dependencies | |
uses: ./.github/actions/setup | |
- name: Install wasm-bindgen-cli | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: wasm-bindgen-cli@0.2.86 | |
- name: Install wasm-opt | |
run: | | |
npm i wasm-opt -g | |
- name: Query new noir version | |
id: noir-version | |
run: | | |
NOIR_VERSION=$(grep '^version =' ./Cargo.toml | sed -E 's/version = "([^"]+)"/v\1/') | |
echo "semver=$NOIR_VERSION" >> $GITHUB_OUTPUT | |
- name: Cut a new version | |
working-directory: ./docs | |
run: yarn version ${{ steps.noir-version.outputs.semver }} | |
- name: Configure git | |
run: | | |
git config --local user.name noirwhal | |
git config --local user.email tomfrench@aztecprotocol.com | |
- name: Commit new documentation version | |
run: | | |
git add . | |
git commit -m "chore(docs): cut new docs version for tag ${{ steps.noir-version.outputs.semver }}" | |
git push | |
release-end: | |
name: Release End | |
runs-on: ubuntu-latest | |
# We want this job to always run (even if the dependant jobs fail) as we need apply changes to the sticky comment. | |
if: ${{ always() }} | |
needs: | |
- release-please | |
- update-acvm-workspace-package-versions | |
- update-docs | |
env: | |
# We treat any skipped or failing jobs as a failure for the workflow as a whole. | |
FAIL: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }} | |
steps: | |
- name: Add warning to sticky comment | |
uses: marocchino/sticky-pull-request-comment@v2 | |
with: | |
# We need to specify the PR on which to make the comment as workflow is triggered by push. | |
number: ${{ fromJSON(needs.release-please.outputs.release-pr).number }} | |
# delete the comment in case failures have been fixed | |
delete: ${{ env.FAIL == false }} | |
message: "The release workflow has not completed successfully. Releasing now will result in a broken release" | |
- name: Report overall success | |
run: | | |
if [[ $FAIL == true ]]; then | |
exit 1 | |
else | |
exit 0 | |
fi | |
build-binaries: | |
name: Build binaries | |
needs: [release-please] | |
if: ${{ needs.release-please.outputs.tag-name }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Dispatch to publish workflow | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
workflow: publish-nargo.yml | |
repo: noir-lang/noir | |
ref: master | |
token: ${{ secrets.GITHUB_TOKEN }} | |
inputs: '{ "tag": "${{ needs.release-please.outputs.tag-name }}", "publish": true }' | |
publish-es-packages: | |
name: Publish ES packages | |
needs: [release-please] | |
if: ${{ needs.release-please.outputs.tag-name }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Dispatch to publish-es-packages | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
workflow: publish-es-packages.yml | |
ref: master | |
token: ${{ secrets.NOIR_REPO_TOKEN }} | |
inputs: '{ "noir-ref": "${{ needs.release-please.outputs.tag-name }}", "npm-tag": "latest" }' | |
publish-acvm: | |
name: Publish acvm | |
needs: [release-please] | |
if: ${{ needs.release-please.outputs.tag-name }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Dispatch to publish-acvm | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
workflow: publish-acvm.yml | |
ref: master | |
token: ${{ secrets.NOIR_REPO_TOKEN }} | |
inputs: '{ "noir-ref": "${{ needs.release-please.outputs.tag-name }}" }' |