Commit Graph

11069 Commits

Author SHA1 Message Date
Paul Gey
3d0907ce42 npm>=12 requires --allow-git gh-18689 2026-07-24 21:57:56 +02:00
Macsen Casaus
1eacae7d5b Add TI C29 Clang compiler support (#8911)
Closes #8910 

Depends on https://github.com/compiler-explorer/infra/pull/2225

<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
  by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
  but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->

Co-authored-by: Macsen Casaus <m-casaus@ti.com>
Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-18675
2026-07-21 15:34:47 -05:00
NoNaeAbC
437fb4424c Bump shader explorer from 0.1.2 to 0.1.3 (#8840) gh-18673 2026-07-21 15:16:44 -05:00
Cliff Burdick
8834b7d5ed Add MatX version 1.0.0 to aws configuration (#8904)
Updated MatX library versions to include version 1.0.0.
gh-18672
2026-07-21 15:16:37 -05:00
Ville Voutilainen
9b333c6775 Update c++.amazon.properties (#8941)
<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
  by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
  but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
gh-18671
2026-07-21 15:08:13 -05:00
Wyatt Childers
a49cc6e68f Add EDG 6.9 release (#8940) gh-18669 2026-07-21 20:20:54 +01:00
mattgodbolt-molty
01c26e3d74 Note the known tag-step 403 on workflow-changing branch builds
Seen on the branch build of #8939 (a workflow deletion): creating the
gh-<N> tag 403s because GITHUB_TOKEN can't hold workflows=write.
Deliberately not handled in code; branch tags matter (branch builds are
sometimes deployed), so the loud failure is correct.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
gh-18666
2026-07-20 17:09:47 -05:00
Matt Godbolt (bot acct)
667df01b5c Remove the duplicate-issue-detection workflow (#8939)
Removes `duplicate-detection.yml` (`wow-actions/potential-duplicates`),
added in #8171.

The evidence for removal:
- In nine months it has **never fired**: zero issues ever labelled
`potential-duplicate`, zero comments posted, across 100 consecutive
successful runs.
- The threshold has no working value: the workflow's own comments note
0.85 matched issue-template boilerplate, and at 0.90 nothing has ever
cleared the bar. Title edit-distance (Damerau-Levenshtein) fundamentally
can't catch real duplicates, which are worded differently.
- Upstream is unmaintained (last release October 2022, still targets
node20), making it the repo's last remaining runner deprecation warning
after #8936.

If duplicate detection is wanted later, a semantic approach (e.g. a
Claude-powered triage workflow like the one in jsbeeb) is the direction
that could actually work; deliberately out of scope here.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
gh-18665
2026-07-20 23:00:23 +01:00
dependabot[bot]
9e2544c183 Bump github/codeql-action from 4 to 4.37.0 in the github-actions group (#8938)
Bumps the github-actions group with 1 update:
[github/codeql-action](https://github.com/github/codeql-action).

Updates `github/codeql-action` from 4 to 4.37.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.37.0</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0">2.26.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3995">#3995</a></li>
<li>In addition to the existing input format, the
<code>config-file</code> input for the <code>codeql-action/init</code>
step will soon support a new <code>[owner/]repo[@ref][:path]</code>
format. All components except the repository name are optional. If
omitted, <code>owner</code> defaults to the same owner as the repository
the analysis is running for, <code>ref</code> to <code>main</code>, and
<code>path</code> to <code>.github/codeql-action.yaml</code>. Support
for this format ships in this version of the CodeQL Action, but will
only be enabled over the coming weeks. <a
href="https://redirect.github.com/github/codeql-action/pull/3973">#3973</a></li>
</ul>
<h2>v4.36.3</h2>
<p>No user facing changes.</p>
<h2>v4.36.2</h2>
<ul>
<li>Cache CodeQL CLI version information across Actions steps. <a
href="https://redirect.github.com/github/codeql-action/pull/3943">#3943</a></li>
<li>Reduce requests while waiting for analysis processing by using
exponential backoff when polling SARIF processing status. <a
href="https://redirect.github.com/github/codeql-action/pull/3937">#3937</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6">2.25.6</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3948">#3948</a></li>
</ul>
<h2>v4.36.1</h2>
<p>No user facing changes.</p>
<h2>v4.36.0</h2>
<ul>
<li><em>Breaking change</em>: Bump the minimum required CodeQL bundle
version to 2.19.4. <a
href="https://redirect.github.com/github/codeql-action/pull/3894">#3894</a></li>
<li>Add support for SHA-256 Git object IDs. <a
href="https://redirect.github.com/github/codeql-action/pull/3893">#3893</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5">2.25.5</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3926">#3926</a></li>
</ul>
<h2>v4.35.5</h2>
<ul>
<li>We have improved how the JavaScript bundles for the CodeQL Action
are generated to avoid duplication across bundles and reduce the size of
the repository by around 70%. This should have no effect on the runtime
behaviour of the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3899">#3899</a></li>
<li>For performance and accuracy reasons, <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> will now only be enabled on a pull request when
diff-informed analysis is also enabled for that run. If diff-informed
analysis is unavailable (for example, because the PR diff ranges could
not be computed), the action will fall back to a full analysis. <a
href="https://redirect.github.com/github/codeql-action/pull/3791">#3791</a></li>
<li>If multiple inputs are provided for the GitHub-internal
<code>analysis-kinds</code> input, only <code>code-scanning</code> will
be enabled. The <code>analysis-kinds</code> input is experimental, for
GitHub-internal use only, and may change without notice at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/3892">#3892</a></li>
<li>Added an experimental change which, when running a Code Scanning
analysis for a PR with <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> enabled, prefers CodeQL CLI versions that have
a cached overlay-base database for the configured languages. This speeds
up analysis for a repository when there is not yet a cached overlay-base
database for the latest CLI version. We expect to roll this change out
to everyone in May. <a
href="https://redirect.github.com/github/codeql-action/pull/3880">#3880</a></li>
</ul>
<h2>v4.35.4</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.4">2.25.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3881">#3881</a></li>
</ul>
<h2>v4.35.3</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.19.3 and earlier. These versions of
CodeQL were discontinued on 9 April 2026 alongside GitHub Enterprise
Server 3.15, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3837">#3837</a></li>
<li>Configurations for private registries that use Cloudsmith or GCP
OIDC are now accepted. <a
href="https://redirect.github.com/github/codeql-action/pull/3850">#3850</a></li>
<li>Best-effort connection tests for private registries now use
<code>GET</code> requests instead of <code>HEAD</code> for better
compatibility with various registry implementations. For NuGet feeds,
the test is now always performed against the service index. <a
href="https://redirect.github.com/github/codeql-action/pull/3853">#3853</a></li>
<li>Fixed a bug where two diagnostics produced within the same
millisecond could overwrite each other on disk, causing one of them to
be lost. <a
href="https://redirect.github.com/github/codeql-action/pull/3852">#3852</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.3">2.25.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3865">#3865</a></li>
</ul>
<h2>v4.35.2</h2>
<ul>
<li>The undocumented TRAP cache cleanup feature that could be enabled
using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment
variable is deprecated and will be removed in May 2026. If you are
affected by this, we recommend disabling TRAP caching by passing the
<code>trap-caching: false</code> input to the <code>init</code> Action.
<a
href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li>
<li>The Git version 2.36.0 requirement for improved incremental analysis
now only applies to repositories that contain submodules. <a
href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li>
<li>Python analysis on GHES no longer extracts the standard library,
relying instead on models of the standard library. This should result in
significantly faster extraction and analysis times, while the effect on
alerts should be minimal. <a
href="https://redirect.github.com/github/codeql-action/pull/3794">#3794</a></li>
<li>Fixed a bug in the validation of OIDC configurations for private
registries that was added in CodeQL Action 4.33.0 / 3.33.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3807">#3807</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2">2.25.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3823">#3823</a></li>
</ul>
<h2>v4.35.1</h2>
<ul>
<li>Fix incorrect minimum required Git version for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>: it should have been 2.36.0, not 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3781">#3781</a></li>
</ul>
<h2>v4.35.0</h2>
<ul>
<li>Reduced the minimum Git version required for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> from 2.38.0 to 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3767">#3767</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.1">2.25.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3773">#3773</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h2>4.37.0 - 08 Jul 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.26.0">2.26.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3995">#3995</a></li>
<li>In addition to the existing input format, the
<code>config-file</code> input for the <code>codeql-action/init</code>
step will soon support a new <code>[owner/]repo[@ref][:path]</code>
format. All components except the repository name are optional. If
omitted, <code>owner</code> defaults to the same owner as the repository
the analysis is running for, <code>ref</code> to <code>main</code>, and
<code>path</code> to <code>.github/codeql-action.yaml</code>. Support
for this format ships in this version of the CodeQL Action, but will
only be enabled over the coming weeks. <a
href="https://redirect.github.com/github/codeql-action/pull/3973">#3973</a></li>
</ul>
<h2>4.36.3 - 01 Jul 2026</h2>
<p>No user facing changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="99df26d4f1"><code>99df26d</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3996">#3996</a>
from github/update-v4.37.0-c7c896d71</li>
<li><a
href="31c27074fd"><code>31c2707</code></a>
Add changenote for <a
href="https://redirect.github.com/github/codeql-action/issues/3973">#3973</a></li>
<li><a
href="72df2181aa"><code>72df218</code></a>
Update changelog for v4.37.0</li>
<li><a
href="c7c896d71b"><code>c7c896d</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3995">#3995</a>
from github/update-bundle/codeql-bundle-v2.26.0</li>
<li><a
href="3f34ff0ea3"><code>3f34ff0</code></a>
Add changelog note</li>
<li><a
href="43bec09f1d"><code>43bec09</code></a>
Update default bundle to codeql-bundle-v2.26.0</li>
<li><a
href="f58f0d11eb"><code>f58f0d1</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3973">#3973</a>
from github/mbg/repo-props/config-file-shorthands</li>
<li><a
href="7dc37cbb5b"><code>7dc37cb</code></a>
Merge remote-tracking branch 'origin/main' into
mbg/repo-props/config-file-sh...</li>
<li><a
href="8e22350a7e"><code>8e22350</code></a>
Thread <code>ActionState</code> to <code>initConfig</code></li>
<li><a
href="69c9e8c7d9"><code>69c9e8c</code></a>
Mark some <code>status-report</code> imports as <code>type</code>-only
to avoid circular dependencies</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/v4...v4.37.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=4&new-version=4.37.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
gh-18664
2026-07-20 16:57:47 -05:00
Matt Godbolt (bot acct)
661f946d81 Add dependabot version updates for GitHub Actions (#8937)
Follow-up to #8936. The action pins in `.github/workflows/` sat on
node20-targeting majors for a year because nothing bumps them: the
dependabot PRs this repo gets are security updates, which need no config
file but don't cover action versions. Version updates only run for
ecosystems listed in `.github/dependabot.yml`, which didn't exist.

This adds the minimal config, scoped to `github-actions` only:

- **Monthly** schedule, with **all bumps grouped into one PR** per
interval, so the expected noise is roughly one small rolled-up PR a
month.
- **7-day cooldown**: a new release isn't proposed until it has been
public a week, the window in which compromised releases (tj-actions
style) tend to be caught and yanked.
- No behaviour change for anything else: npm/pip version updates stay
off, and security updates are unaffected.

This is also what keeps `astral-sh/setup-uv` fresh: from v8 it publishes
immutable releases only (no floating major tags), so its exact pin from
#8936 would otherwise rot silently. Note the deploy job already skips
for `dependabot[bot]` pushes, so grouped bump PRs won't publish branch
dists or create gh- tags.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
gh-18659
2026-07-20 16:50:36 -05:00
Matt Godbolt (bot acct)
abe65dc410 Bump workflow actions to Node 24 majors (#8936)
Every CI run currently emits "Node.js 20 is deprecated. The following
actions target Node.js 20 but are being forced to run on Node.js 24"
runner annotations (visible on every job of the main build and the
Windows build). These come from the runner at execution time, so the
actionlint gate added in #8912 can't catch them: actionlint checks
workflow files statically and has no knowledge of which Node runtime an
action's implementation targets.

This bumps every runner-flagged action to its latest major, all of which
target node24:

| Action | From | To |
|---|---|---|
| actions/checkout | v4 | v7 |
| actions/setup-node | v4 | v7 |
| actions/upload-artifact | v4 | v7 |
| actions/download-artifact | v4 | v8 |
| actions/setup-python | v5 | v7 |
| actions/labeler | v5 | v6 |
| actions/github-script | v7 | v9 |
| github/codeql-action | v3 | v4 |
| peter-evans/create-pull-request | v6 | v8 |
| cypress-io/github-action | v6 | v7 |
| browser-actions/setup-chrome | v1 | v2 |
| codecov/codecov-action | v5 | v7 |
| astral-sh/setup-uv | v6 | v8.3.2 (exact pin; from v8 they publish
immutable releases only, no floating major tags) |

The last three rows came from iterating: this branch's own push builds
run the full workflow (including the real deploy path), and scanning
their annotations after each round caught what the first sweep missed —
our github-script uses, codecov-action (whose v5 pins a node20
github-script by SHA internally; their v6 fixed that), and setup-uv.

codeql-action v3 additionally carries its own deprecation warning
(sunset December 2026).

**Behaviour changes checked against our usage:**
- create-pull-request v7 renamed `git-token` to `branch-token` and
removed the `PULL_REQUEST_NUMBER` env output: browserslist.yml uses
neither.
- setup-python v7 removed the `pip-install` input:
check-infra-settings.yml doesn't use it.
- github-script v9: `require('@actions/github')` no longer works inside
scripts; neither of ours does that (one calls
`github.rest.git.createRef`, the other requires only the core `fs`
module).
- setup-uv v7/v8 removed the `server-url` input and changed the
manifest-file format: we pass no inputs.
- setup-chrome v2 installs Chrome for Testing by default: fine (arguably
better) for the Cypress frontend tests.
- download-artifact v8 now errors on hash mismatch by default: a fix we
want.
- checkout v7 blocks fork-PR checkout under
`pull_request_target`/`workflow_run` unless opted in: our only such
workflows (label.yml, check-infra-settings-comment.yml) don't use
checkout at all.
- codecov-action v6 is their node24 bump; v7 only rotates their signing
account. Our `token`/`verbose` usage is unaffected.

**Deliberately left alone:**
- `browser-actions/setup-firefox@v1`: latest release is still v1 (1.7.x,
node24).
- `wow-actions/potential-duplicates@v1`: upstream is unmaintained (last
release 2022); no node24 version exists. Its warning will remain on
duplicate-detection runs until we replace or drop it.
- `jakejarvis/s3-sync-action@master`: a Docker action, unaffected by the
Node runtime deprecation.

**Validation:**
- actionlint 1.7.12 (the pinned CI version) passes clean.
- All PR checks green across two full rounds, including Cypress on
Chrome for Testing and CodeQL v4.
- Because pushes to any branch run the real deploy job, the complete
chain (dist build → download-artifact v8 → sentry → S3 sync →
github-script v9 tagging → post_deploy_check on admin-node) ran green
for real.
- Runner compatibility: these majors require Actions Runner >= 2.327.1;
the self-hosted admin-node and ce fleet runners are all on 2.335.1
(confirmed from job logs).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
gh-18656
2026-07-20 22:44:52 +01:00
Matt Godbolt (bot acct)
07226d33bf Reapply extraBodyClass-driven branding, validating via the manifest in production (#8935)
Reapplies #8755, which was reverted in 463e3e70f after it broke the
staging deploy:

```
error: Top-level error (shutting down): Missing branding assets for extraBodyClass='staging'
in /infra/.deploy/static: favicon-staging.ico, site-logo-staging.svg
```

### What went wrong

`validateBrandingAssets` checked `staticPath` on the local filesystem.
That's correct for dev and local prod runs, but AWS deploys ship **two**
packages (`build-dist.sh`): the node app tarball (no `static/` at all)
and the static bundle, which goes to the CDN
(`staticUrl=https://static.ce-cdn.net/`). Production nodes never have
the branding files on disk, so any env with `extraBodyClass` set
(staging, beta, win\*) died at startup. Prod itself has an empty
`extraBodyClass`, which is why the check short-circuited there and the
bug only surfaced on the staging deploy.

### The fix (second commit)

The webpack manifest **does** ship with the node app, and lists every
asset copied from `public/` into the static bundle. So in production,
validate the derived `favicon-<class>.ico` / `site-logo-<class>.svg`
names against **manifest keys** instead of the filesystem; dev keeps the
on-disk check against `public/`. This preserves the fail-fast-on-typo
behaviour #8755 wanted, checking the thing that actually describes what
shipped to the CDN. If the manifest can't be loaded we're already on the
existing warn-and-fall-back handler, so validation is skipped rather
than fatal.

`setupStaticMiddleware` now takes the parsed manifest (loaded once in
`setupWebServer` via new `loadStaticManifest`) instead of reading it
itself.

### Verification

- Fresh **production** webpack build: all six env asset pairs (dev,
beta, staging, winprod, winstaging, wintest) appear as plain-name keys
in `manifest.json` (the win\* symlink placeholders are dereferenced on
copy).
- Booted the built `out/dist` server code in the exact deploy layout
(`staticUrl` set, nonexistent `staticPath`, `extraBodyClass=staging`):
boots cleanly and renders `favicon-staging.ico` +
`site-logo-staging.svg`; a mistyped class still fails startup with a
clear error.
- New regression tests pin both behaviours at the `setupWebServer` level
with a shipped-manifest-only layout.

⚠️ Merge timing: prod's empty `extraBodyClass` never exercises this path
— the real test is the next **staging** deploy, so this should merge
when someone (me) is ready to deploy staging and watch it.

cc @partouf — sorry again for the breakage; this validates against the
manifest rather than expecting the CDN bundle's files on local disk.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
gh-18647
2026-07-20 21:37:49 +01:00
Partouf
463e3e70f0 Revert "Drive env branding from extraBodyClass alone (#8755)"
This reverts commit 13358939ce.
gh-18644
2026-07-19 23:55:46 +02:00
Ran Regev
f87870ddcf Add clang_p3817 compiler entry (#8929) gh-18643 2026-07-19 23:27:05 +02:00
Odysseas Georgoudis
74e9c1dacc add quill v12.1.0 (#8926) gh-18642 2026-07-19 23:23:30 +02:00
Ivan Pribec
010c3fb93f Add LFortran compiler versions 0.60.0 to 0.64.0 (#8930) gh-18641 2026-07-19 23:21:54 +02:00
Patrick Quist
df24b89b93 Add TunnelPascal 1.9.1 to Pascal compilers (#8934) gh-18639 2026-07-19 23:16:09 +02:00
Jim McKeeth
d1aff27080 FPC: recognize AArch64 '// [n]' source-line comments (#8933) gh-18635 2026-07-19 14:13:20 +02:00
Björn Fahller
847a49f664 Add v16 of rollbear/strong_type library (#8922) gh-18621 2026-07-15 18:44:26 +02:00
Darius M
20b5f05ff1 Remove outdated comments/code from JavaScript example (#8921) gh-18620 2026-07-15 18:34:45 +02:00
Matt Godbolt
13358939ce Drive env branding from extraBodyClass alone (#8755)
The favicon selector and logo overlay used to be hard-coded switches
over the env name array (favicon) and a chained if/else in logo.pug.
Adding a new environment meant editing both, the favicon allowlist, and
the tests.

Convert both to a convention driven by extraBodyClass:
favicon-<class>.ico and site-logo-<class>.svg. logo.pug becomes one
unconditional overlay tag. getFaviconFilename takes the class string
directly.

Add validateBrandingAssets, called once during setupWebServer, which
throws if the configured assets are missing. Typos in extraBodyClass now
fail at startup with a clear error rather than serving a broken favicon.

isFaviconRequest becomes a regex matching favicon-*.ico so the log
filter no longer needs a per-env list (and previously didn't match
because req.path has a leading slash).

A new environment is now: drop two files in public/, set extraBodyClass
in the env properties file. No TS or pug changes.

---------

Co-authored-by: Matt Godbolt <mattgodbolt@hudson-trading.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
gh-18618
2026-07-14 17:18:25 +01:00
Matt Godbolt
c425932877 Mask temp paths by the CE marker, not the live os.tmpdir() (#8920)
maskRootdir() built its strip-regex from this process's os.tmpdir(), so
it only masked paths whose root matched the current tmpdir. That is
fragile in two real cases:

- The path being masked is recorded when the compile runs and need not
share the masking process's tmpdir. Snapshots/fixtures that freeze
/tmp/... paths only mask on hosts where os.tmpdir() is /tmp (they fail
where it is e.g. /usr/tmp).
- On macOS os.tmpdir() returns /var/folders/... while real temp paths
often resolve via /private/var/folders/..., so masking silently missed.
- A configured temp root (temp dirs created outside os.tmpdir()) was
never matched at all.

Key the regex off the distinctive ce_temp_prefix marker instead,
matching whatever path segments precede it. This is tmpdir-independent
and unifies the Windows and non-Windows branches into one rule (also
masking embedded temp paths like `-I/tmp/.../include` on Windows, which
the old anchored branch missed).

Adds unit tests for maskRootdir (previously untested) covering /tmp,
/usr/tmp, macOS /private/var, Windows, the -I include case, and non-temp
paths left untouched.

<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
  by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
  but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->

---------

Co-authored-by: Matt Godbolt <mattgodbolt@hudson-trading.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
gh-18605
2026-07-14 15:30:54 +01:00
Sirui Mu
7a6af91bc9 Enable AST output for Python (#8858)
This patch adds support for viewing the abstract syntax tree (AST) of
Python source code in Compiler Explorer, matching the existing AST
viewer feature for C/C++ (Clang AST).

- This patch adds a helper script `ast_dump.py` that parses and dumps
the AST for a Python source code file. `python -m ast` should also work,
but it's not available in old versions of Python.
- This patch adds an AST parser for Python which mimics the structure of
the C/C++ AST parser. It also updates the Python compiler to enable AST
output.
- All existing and new tests pass.

Assisted-by: GitHub Copilot / DeepSeek v4 Flash
Assisted-by: GitHub Copilot / DeepSeek v4 Pro

<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
  by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
  but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->

Co-authored-by: Matt Godbolt <matt@godbolt.org>
gh-18591
2026-07-14 08:46:10 +01:00
dependabot[bot]
2cc60cee5f Bump soupsieve from 2.8.3 to 2.8.4 in /etc/scripts/docenizers (#8913)
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.8.3
to 2.8.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/facelessuser/soupsieve/releases">soupsieve's
releases</a>.</em></p>
<blockquote>
<h2>2.8.4</h2>
<ul>
<li><strong>FIX</strong>: Fix another inefficient attribute pattern (<a
href="https://github.com/mauriceng98"><code>@​mauriceng98</code></a>).</li>
<li><strong>FIX</strong>: Limit total number of selectors processed in a
pattern to prevent massive selector requests (<a
href="https://github.com/mauriceng98"><code>@​mauriceng98</code></a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="28108ab805"><code>28108ab</code></a>
Limit excessive selectors</li>
<li><a
href="ef188721d6"><code>ef18872</code></a>
Fix test for Windows</li>
<li><a
href="eb43976187"><code>eb43976</code></a>
Merge commit from fork</li>
<li><a
href="3a661b23b2"><code>3a661b2</code></a>
Fix typo in pseudo-classes.md (<a
href="https://redirect.github.com/facelessuser/soupsieve/issues/294">#294</a>)</li>
<li><a
href="0cb533d83b"><code>0cb533d</code></a>
Update hatchling version requirement in pyproject.toml (<a
href="https://redirect.github.com/facelessuser/soupsieve/issues/290">#290</a>)</li>
<li>See full diff in <a
href="https://github.com/facelessuser/soupsieve/compare/2.8.3...2.8.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=soupsieve&package-manager=uv&previous-version=2.8.3&new-version=2.8.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/compiler-explorer/compiler-explorer/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
gh-18590
2026-07-14 08:45:38 +01:00
Hayden Gray
e1962cbc41 [odin] added dev-2026-07 (#8899)
adds odin dev-2026-07. depends on
https://github.com/compiler-explorer/infra/pull/2213
gh-18584
2026-07-13 22:55:27 +01:00
Connor Simms
d5e13076cc Fix Mojo syntax highlighting (#8916)
Resolves #8901
### Problem
`static/modes/mojo-mode.ts` was a copy of `static/modes/asm-mode.ts`,
likely as a placeholder. Mojo source code was highlighted as if it were
assembly.

### Solution
This PR replaces the assembly placeholder with proper highlighting rules
for Mojo.

### Details
* Supports standard Python lexical rules
* Includes legacy/deprecated keywords (`let`, `inout`, `borrowed`,
`owned`, `alias`, `fn`, ...) for backward compatibility with older Mojo
compilers on Compiler Explorer
* Prevents keyword mis-highlighting during attribute access
(`file.read()` doesn't highlight `read` as a keyword)

### Screenshots
Before:
<img width="174" height="116" alt="image"
src="https://github.com/user-attachments/assets/ad561ff2-eae4-423e-8319-e2095da7838d"
/>
After:
<img width="174" height="116" alt="image"
src="https://github.com/user-attachments/assets/b52d9e25-2c9c-4162-a105-106ad868b31d"
/>
Before:
<img width="327" height="113" alt="image"
src="https://github.com/user-attachments/assets/257e3b94-b4c8-443a-93ae-71bbdd023b05"
/>
After:
<img width="327" height="113" alt="image"
src="https://github.com/user-attachments/assets/247e1e73-c1da-4df2-9781-cf2da3476c78"
/>

### Testing
* Verified visually in the local Compiler Explorer `make dev`
environment.
gh-18583
2026-07-13 22:51:44 +01:00
Darius Neațu
098357fc7b Add missing Beman libraries for trunk (#8909)
## Summary

- Add trunk entries for 10 missing Beman libraries in
`etc/config/c++.amazon.properties`.

## Libraries (trunk)

- beman.at_most
- beman.bounds_test
- beman.closed_view
- beman.cycle
- beman.elide
- beman.gates
- beman.indirect
- beman.integer_division
- beman.range_searcher
- beman.str_split

## Tracking

- Compiler Explorer issue:
https://github.com/compiler-explorer/compiler-explorer/issues/8908
- infra PR (merge first):
https://github.com/compiler-explorer/infra/pull/2219

## Test plan

- [x] Merge infra PR first and wait for deployment
- [ ] Verify libraries appear in Godbolt library picker
- [ ] Smoke-compile a sample include for each library

Co-authored-by: Darius Neațu <neautdarius@gmail.com>
gh-18580
2026-07-12 22:22:04 +01:00
Matt Godbolt (bot acct)
41f5cf881f Add new versions: Crystal 1.20.3, Nim 2.2.10, Pony 0.52–0.67, TinyGo 0.41.1, Rakudo 2026.06, Wasmtime 46, Sway 0.71.2, Sail 0.20.2 (#8918)
*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

Adds CE properties entries so the new compiler versions installed in
compiler-explorer/infra#2230 appear in the UI. Companion to
**compiler-explorer/infra#2230**.

Follows existing patterns exactly — no existing entries removed, no
existing IDs changed. `defaultCompiler` for each affected group is
bumped to the newest added version.

## Versions added

| Language | File | New versions | IDs |
|---|---|---|---|
| Crystal | `crystal.amazon.properties` | 1.20.3 | `crystal1203` |
| Nim | `nim.amazon.properties` | 2.0.16, 2.2.10 | `nim20016`, `nim2210`
|
| Pony | `pony.amazon.properties` | 0.52.5 → 0.67.0 (16 releases) |
`p0525`…`p0670` |
| TinyGo | `go.amazon.properties` | 0.41.1 | `tinygo0411` |
| Rakudo | `raku.amazon.properties` | 2025.06.1, 2025.08, 2025.10–12,
2026.01–06 | `rakudo-moar-2026-06-01` etc. |
| Wasmtime | `wasm.amazon.properties` | 46.0.1 | `wasmtime4601` |
| Sway | `sway.amazon.properties` | 0.69.6, 0.70.3, 0.71.2 |
`swayv0696`, `swayv0703`, `swayv0712` |
| Sail | `sail.amazon.properties` | 0.19.1, 0.20.2 | `sail_0_19_1`,
`sail_0_20_2` |

Note: the Rakudo 2025.06 release is the `2025.06.1-01` point release,
added as `rakudo-moar-2025-06-1-01` (name *Rakudo 2025.06.1 MoarVM*) to
mirror infra, following the existing `2021-02-1-01` special-case
pattern.

## Not included: Kotlin/Native

infra#2230 also installs Kotlin/Native 2.3.0–2.4.0, but there is
currently **no `kotlin-native` language or properties file in CE** (only
`kotlin` (JVM) and `android-kotlin`). Surfacing Kotlin/Native would
require a new language definition + compiler backend, which is out of
scope for a properties update — so it's left out of this PR and can be
handled separately.

## Testing

Ran local discovery for each affected language (`node app.ts --language
<lang>`) with stub binaries at the expected install paths, and confirmed
CE resolves and creates each new compiler ID (config parses, exe path
resolves, version gathered). The pre-commit `test:props` validation
suite passes (90/90).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gh-18579
2026-07-12 22:18:49 +01:00
LJ
e232223f27 Add resolc Solidity compiler v1.4.0 (#8915)
Adds resolc v1.4.0.

Infra PR:
[compiler-explorer/infra/pull/2227](https://github.com/compiler-explorer/infra/pull/2227)
gh-18578
2026-07-12 21:25:47 +01:00
Matt Godbolt
d9b8c59f4e Lint GitHub Actions workflows with actionlint (#8912)
Part of the actionlint rollout across CE repos
(compiler-explorer/compiler-workflows#68, compiler-explorer/infra#2226).
[actionlint](https://github.com/rhysd/actionlint) statically checks
workflow files: schema/typos, expression type-checking against real
contexts (undefined inputs/outputs/needs are errors), unknown runner
labels, and shellcheck over embedded `run:` scripts.

This repo has no pre-commit framework, so it's wired as a small CI
workflow that runs on any push/PR touching `.github/workflows/**`, using
the pinned official docker image. `.github/actionlint.yaml` declares the
self-hosted `admin` label so `runs-on: [admin]` (deploy workflows)
checks correctly.

The existing ten workflows already pass with no findings.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
gh-18576
2026-07-12 20:21:49 +01:00
Matt Godbolt (bot acct)
930d3fe462 Add SDCC 4.6.0 (#8917)
*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

Adds SDCC 4.6.0 to the C compiler list. Requested because 4.6.0 is the
first C compiler release to support the `_Optional` type qualifier.

Follows the existing SDCC group convention exactly: appends `sdcc460` to
`group.sdcc.compilers` and adds the `exe`/`semver` entries. No existing
IDs changed.

Depends on the infra install PR landing first:
compiler-explorer/infra#2228

Verified the 4.6.0 tarball installs via `ce_install`, `bin/sdcc
--version` reports `4.6.0`, and a `_Optional int *p;` program compiles
cleanly. The properties validation suite passes (`npm run test:props`,
90 tests).

🤖 Generated by LLM (Claude, via OpenClaw)

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-18575
2026-07-12 14:17:15 +01:00
Miguel Ojeda
bef854b317 Rust 1.97.0 (#8907)
Infra: https://github.com/compiler-explorer/infra/pull/2217.

Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
gh-18562
2026-07-10 08:19:39 +02:00
Matt Godbolt (bot acct)
19de5e516d fix: use baseOptions for clangx86trunk gcc-toolchain (#8906)
*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

## Problem

Compilers in the `clangx86trunk` group that set their own `options`
property silently **override** the group-level
`options=--gcc-toolchain=/opt/compiler-explorer/gcc-snapshot`. The
per-compiler value is checked first; if found, the group fallback is
never reached.

This means ~18 compilers (all those with a per-compiler `options` line —
e.g. `clang_hana`, `clang_bb_p2996`, `clang_p2998`, `clang_patmat`,
`clang_resugar`, `clang_barry`, `clang_concepts`, etc.) fall back to the
system GCC 13 instead of `gcc-snapshot`. System GCC 13's libstdc++ lacks
headers like `bits/version.h`, so any user who switches these compilers
to `-stdlib=libstdc++` gets:

```
fatal error: 'bits/version.h' file not found
```

Reported via: https://compiler-explorer.com/z/WcPd19b5o (hana-clang, but
confirmed broken on all affected compilers).

## Fix

Move the toolchain flag from `group.clangx86trunk.options` to
`group.clangx86trunk.baseOptions`. The `baseOptions` and `options`
values are **concatenated** rather than one replacing the other, so
per-compiler `options` no longer silently discard the toolchain.

`clang_p1144` and `clang_lifetime` intentionally use different GCC
toolchains, so they get their own `baseOptions` override with the
correct path. The toolchain flag is removed from their `options` entries
(which now only contain the non-toolchain flags).

## Testing

Verified via CE compile API with `-v` that:
- Affected compilers (e.g. `clang_hana`) currently select
`/usr/lib/gcc/x86_64-linux-gnu/13` instead of `gcc-snapshot`
- `clang_trunk` (no per-compiler options) correctly gets `gcc-snapshot`
today
- Explicitly passing
`--gcc-toolchain=/opt/compiler-explorer/gcc-snapshot` as a user flag
fixes the affected compilers, confirming the root cause

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-18557
2026-07-09 13:48:21 +01:00
Cycle1337
ed127f3933 Fix compiler tool ID slimming for cached arrays (#8893) gh-18552 2026-07-08 09:42:37 +02:00
Mateusz Pusz
1d5e3b94f9 Add more include paths for mp-units library (#8895)
The latest mp-units commis added a few new include paths to improve
project organization.
gh-18550
2026-07-07 17:13:45 +01:00
Matt Godbolt (bot acct)
132f308ea4 Don't rewrite the URL in embedded mode; fixes embeds regressing to the front page (#8897)
Fixes #8896.

### What was happening

`SharingBase.ensureUrlIsNotOutdated()` replaces the page URL with
`httpRoot` (`/`) once the layout state diverges from the state recorded
after load. That rewrite exists for the main site, so an outdated
shortlink path (`/z/...`) doesn't linger in the address bar after you
edit the code.

Since #8166 started running the shared state-tracking (`SharingBase`) in
embedded mode too — to keep the "Edit on Compiler Explorer" link in sync
— the rewrite also fires inside `/e` iframes. There, `location.pathname`
(`/e`) never equals `httpRoot` (`/`), so the first state change after
load (an edit, or just layout churn) silently rewrites the iframe's URL
to `/` — dropping both the `/e` path **and** the state hash. Reproduced
with a `history.replaceState` spy: after two edits in an embed, the
iframe's location is `/` with an empty hash.

The visible symptoms are then browser-dependent, which is why it looked
intermittent: Firefox restores an iframe's *session-history* URL when
the parent page reloads, so the iframe comes back as `godbolt.org/` —
the full site, showing the default language example, and (because
cookies are unreadable in a cross-site iframe, per the `privacy_status`
SameSite console error in the report) the privacy-policy popup. Chrome
reloads iframes from their `src` attribute, so it never showed the
problem.

### The fix

Skip the rewrite entirely in embedded mode — the iframe's URL *is* the
embedded state and must never be touched. The `a.link` "Edit on Compiler
Explorer" state tracking from #8166 is unaffected.

### Tests

New `cypress/e2e/embed.cy.ts`:
- the embedded state's code loads (not the default example),
- the `/e#state` URL survives state changes (fails before this fix:
pathname becomes `/`, hash emptied),
- the "Edit on Compiler Explorer" link still picks up edits (locks in
#8166's behaviour).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
gh-18545
2026-07-06 17:17:10 -05:00
Patrick Quist
17d7ff668f Revert min support (#8892) gh-18536 2026-07-04 18:28:28 +02:00
mert-kurttutan
9d0200acfa redeploy sfpi (#8890)
This is to undo revert regarding sfpi deployment since a fix is applied
for the building of sfpi compiler
gh-18528
2026-07-03 10:48:23 +01:00
Mingxin Wang
1f0d1d5ba4 Add C++ library proxy 4.1.0 (#8861)
See [the PR from Infra
side](https://github.com/compiler-explorer/infra/pull/2196).
gh-18526
2026-07-03 10:39:39 +01:00
mert-kurttutan
a0fb0d8c40 lower engines.node version for more precise value (#8889)
It lowers to the exact value as limited by lint-staged package. For some
reason, the value is chosen to be the current LTS value at the time of
this
[PR](https://github.com/compiler-explorer/compiler-explorer/pull/8885)
even though the value is dictated by lint-staged package.
gh-18525
2026-07-03 10:38:30 +01:00
moletteremi
ff39c06176 Downgrade Scale's CUDA to the latest supported version (13.1) (#8888)
Follow up of
https://github.com/compiler-explorer/compiler-explorer/pull/8849

Thanks a lot for the review and merge !

I did not realize that scale/1.7.1 does not support cuda>13.1 as I was
testing locally with cuda/12.8.0, see

https://godbolt.org/z/cjdvYqGbd

> nvcc: warning: CUDA version is newer than the latest supported version
13.1 [-Wunknown-cuda-version]

The fix is straightforward and included in this PR. AMD backend seems
good. Sorry for the noise :)

Regards
gh-18523
2026-07-03 10:14:04 +01:00
dependabot[bot]
043a99bf30 Bump cryptography from 46.0.7 to 48.0.1 in /etc/scripts/docenizers (#8837)
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.7
to 48.0.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst">cryptography's
changelog</a>.</em></p>
<blockquote>
<p>48.0.1 - 2026-06-09</p>
<pre><code>
* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL
4.0.1.
<p>.. _v48-0-0:</p>
<p>48.0.0 - 2026-05-04<br />
</code></pre></p>
<ul>
<li>
<p><strong>BACKWARDS INCOMPATIBLE:</strong> Support for Python 3.8 has
been removed.
<code>cryptography</code> now requires Python 3.9 or later.</p>
</li>
<li>
<p><strong>BACKWARDS INCOMPATIBLE:</strong> Loading an X.509 CRL whose
inner
<code>TBSCertList.signature</code> algorithm does not match the outer
<code>signatureAlgorithm</code> now raises <code>ValueError</code>.
Previously, such CRLs
were parsed successfully and only rejected during signature
validation.</p>
</li>
<li>
<p>Added support for
:doc:<code>/hazmat/primitives/asymmetric/mlkem</code> and
:doc:<code>/hazmat/primitives/asymmetric/mldsa</code> when using OpenSSL
3.5.0 or
later, in addition to the existing AWS-LC and BoringSSL support. This
means
post-quantum algorithms are now available to users of our wheels.</p>
<ul>
<li><strong>Note:</strong> Going forward, we do not guarantee that all
functionality
in <code>cryptography</code> will be available when building against
OpenSSL. See :doc:<code>/statements/state-of-openssl</code> for more
information.</li>
</ul>
</li>
</ul>
<p>.. _v47-0-0:</p>
<p>47.0.0 - 2026-04-24</p>
<pre><code>
* Support for Python 3.8 is deprecated and will be removed in the next
  ``cryptography`` release.
* **BACKWARDS INCOMPATIBLE:** Support for binary elliptic curves
  (``SECT*`` classes) has been removed. These curves are rarely used and
  have additional security considerations that make them undesirable.
* **BACKWARDS INCOMPATIBLE:** Support for OpenSSL 1.1.x has been
removed.
OpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC
  continue to be supported.
* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL &lt; 4.1.
* **BACKWARDS INCOMPATIBLE:** Loading keys with unsupported algorithms
or
  keys with unsupported explicit curve encodings now raises
  :class:`~cryptography.exceptions.UnsupportedAlgorithm` instead of
  ``ValueError``. This change affects

:func:`~cryptography.hazmat.primitives.serialization.load_pem_private_key`,

:func:`~cryptography.hazmat.primitives.serialization.load_der_private_key`,

:func:`~cryptography.hazmat.primitives.serialization.load_pem_public_key`,

:func:`~cryptography.hazmat.primitives.serialization.load_der_public_key`,
  and :meth:`~cryptography.x509.Certificate.public_key` when called on
  certificates with unsupported public key algorithms.
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="de987ce48c"><code>de987ce</code></a>
48.0.1 version bump and changelog (<a
href="https://redirect.github.com/pyca/cryptography/issues/14996">#14996</a>)</li>
<li><a
href="8e03e30e3a"><code>8e03e30</code></a>
bump for 48.0.0 release (<a
href="https://redirect.github.com/pyca/cryptography/issues/14796">#14796</a>)</li>
<li><a
href="295e0d254e"><code>295e0d2</code></a>
Add AGENTS.md with CLAUDE.md symlink (<a
href="https://redirect.github.com/pyca/cryptography/issues/14794">#14794</a>)</li>
<li><a
href="104a2de19e"><code>104a2de</code></a>
Bump BoringSSL, OpenSSL, AWS-LC in CI (<a
href="https://redirect.github.com/pyca/cryptography/issues/14793">#14793</a>)</li>
<li><a
href="67ec1e5198"><code>67ec1e5</code></a>
call check_length early on AesSiv::encrypt (<a
href="https://redirect.github.com/pyca/cryptography/issues/14792">#14792</a>)</li>
<li><a
href="b2da57a0d9"><code>b2da57a</code></a>
changelog for mldsa/mlkem for openssl (<a
href="https://redirect.github.com/pyca/cryptography/issues/14791">#14791</a>)</li>
<li><a
href="3cf44adee2"><code>3cf44ad</code></a>
ML-KEM OpenSSL support (<a
href="https://redirect.github.com/pyca/cryptography/issues/14781">#14781</a>)</li>
<li><a
href="2e31639666"><code>2e31639</code></a>
ML-DSA OpenSSL support (<a
href="https://redirect.github.com/pyca/cryptography/issues/14773">#14773</a>)</li>
<li><a
href="5affe5a286"><code>5affe5a</code></a>
fix rust nightly clippy (<a
href="https://redirect.github.com/pyca/cryptography/issues/14790">#14790</a>)</li>
<li><a
href="2e73ca448e"><code>2e73ca4</code></a>
bump rust-openssl dep and update EcPoint::mul_generator to
mul_generator2 (<a
href="https://redirect.github.com/pyca/cryptography/issues/1">#1</a>...</li>
<li>Additional commits viewable in <a
href="https://github.com/pyca/cryptography/compare/46.0.7...48.0.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cryptography&package-manager=uv&previous-version=46.0.7&new-version=48.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/compiler-explorer/compiler-explorer/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
gh-18519
2026-07-02 22:21:37 +01:00
dependabot[bot]
eab6b6815b Bump form-data (#8838)
Bumps and [form-data](https://github.com/form-data/form-data). These
dependencies needed to be updated together.
Updates `form-data` from 2.5.5 to 2.5.6
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/form-data/form-data/blob/master/CHANGELOG.md">form-data's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/form-data/form-data/compare/v2.5.5...v2.5.6">v2.5.6</a>
- 2026-06-12</h2>
<h3>Commits</h3>
<ul>
<li>[Fix] escape CR, LF, and <code>&quot;</code> in field names and
filenames <a
href="b62031603c"><code>b620316</code></a></li>
<li>[Dev Deps] update <code>@ljharb/eslint-config</code>,
<code>auto-changelog</code>, <code>eslint</code>, <code>tape</code> <a
href="12be578e93"><code>12be578</code></a></li>
<li>[Dev Deps] update <code>js-randomness-predictor</code> <a
href="46cfd23bd4"><code>46cfd23</code></a></li>
<li>[Tests] use <code>safe-buffer</code> so the header-injection test
runs on node &lt; 4 <a
href="633044a57a"><code>633044a</code></a></li>
<li>[Deps] update <code>hasown</code> <a
href="e3b96eef16"><code>e3b96ee</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c7133499c2"><code>c713349</code></a>
v2.5.6</li>
<li><a
href="46cfd23bd4"><code>46cfd23</code></a>
[Dev Deps] update <code>js-randomness-predictor</code></li>
<li><a
href="633044a57a"><code>633044a</code></a>
[Tests] use <code>safe-buffer</code> so the header-injection test runs
on node &lt; 4</li>
<li><a
href="e3b96eef16"><code>e3b96ee</code></a>
[Deps] update <code>hasown</code></li>
<li><a
href="12be578e93"><code>12be578</code></a>
[Dev Deps] update <code>@ljharb/eslint-config</code>,
<code>auto-changelog</code>, <code>eslint</code>, <code>tape</code></li>
<li><a
href="b62031603c"><code>b620316</code></a>
[Fix] escape CR, LF, and <code>&quot;</code> in field names and
filenames</li>
<li>See full diff in <a
href="https://github.com/form-data/form-data/compare/v2.5.5...v2.5.6">compare
view</a></li>
</ul>
</details>
<br />

Updates `form-data` from 4.0.5 to 4.0.6
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/form-data/form-data/blob/master/CHANGELOG.md">form-data's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/form-data/form-data/compare/v2.5.5...v2.5.6">v2.5.6</a>
- 2026-06-12</h2>
<h3>Commits</h3>
<ul>
<li>[Fix] escape CR, LF, and <code>&quot;</code> in field names and
filenames <a
href="b62031603c"><code>b620316</code></a></li>
<li>[Dev Deps] update <code>@ljharb/eslint-config</code>,
<code>auto-changelog</code>, <code>eslint</code>, <code>tape</code> <a
href="12be578e93"><code>12be578</code></a></li>
<li>[Dev Deps] update <code>js-randomness-predictor</code> <a
href="46cfd23bd4"><code>46cfd23</code></a></li>
<li>[Tests] use <code>safe-buffer</code> so the header-injection test
runs on node &lt; 4 <a
href="633044a57a"><code>633044a</code></a></li>
<li>[Deps] update <code>hasown</code> <a
href="e3b96eef16"><code>e3b96ee</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c7133499c2"><code>c713349</code></a>
v2.5.6</li>
<li><a
href="46cfd23bd4"><code>46cfd23</code></a>
[Dev Deps] update <code>js-randomness-predictor</code></li>
<li><a
href="633044a57a"><code>633044a</code></a>
[Tests] use <code>safe-buffer</code> so the header-injection test runs
on node &lt; 4</li>
<li><a
href="e3b96eef16"><code>e3b96ee</code></a>
[Deps] update <code>hasown</code></li>
<li><a
href="12be578e93"><code>12be578</code></a>
[Dev Deps] update <code>@ljharb/eslint-config</code>,
<code>auto-changelog</code>, <code>eslint</code>, <code>tape</code></li>
<li><a
href="b62031603c"><code>b620316</code></a>
[Fix] escape CR, LF, and <code>&quot;</code> in field names and
filenames</li>
<li>See full diff in <a
href="https://github.com/form-data/form-data/compare/v2.5.5...v2.5.6">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/compiler-explorer/compiler-explorer/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
gh-18518
2026-07-02 22:21:11 +01:00
dependabot[bot]
8c8ac70bf6 Bump undici from 7.27.0 to 7.28.0 (#8843)
Bumps [undici](https://github.com/nodejs/undici) from 7.27.0 to 7.28.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nodejs/undici/releases">undici's
releases</a>.</em></p>
<blockquote>
<h2>v7.28.0</h2>
<h1>⚠️ Security Release</h1>
<p>This release line addresses <strong>7 security advisories</strong>,
all shipped in <strong>v7.28.0</strong>.</p>
<blockquote>
<p><strong>Action required:</strong> Upgrade to <strong>undici
7.28.0</strong> or later.</p>
<pre lang="sh"><code>npm install undici@^7.28.0
</code></pre>
</blockquote>
<p>The v7 line is <strong>not</strong> affected by GHSA-38rv-x7px-6hhq
(CVE-2026-9675), which is
an 8.x-only regression.</p>
<blockquote>
<p><strong>Note on GHSA-hm92-r4w5-c3mj:</strong> this fix shipped in
<strong>v7.28.0</strong>, not the
earlier 7.2x line — the vulnerable single-pool code was still present
through
<code>v7.27.2</code>. The per-origin pool fix is
<a
href="https://github.com/nodejs/undici/commit/3805b8f8"><code>3805b8f8</code></a>
(<a
href="https://redirect.github.com/nodejs/undici/pull/5041">#5041</a>).</p>
</blockquote>
<h2>Summary</h2>
<table>
<thead>
<tr>
<th>Advisory</th>
<th>CVE</th>
<th>Severity (CVSS)</th>
<th>Fixed in</th>
<th>Fix commit</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/nodejs/undici/security/advisories/GHSA-vxpw-j846-p89q">GHSA-vxpw-j846-p89q</a></td>
<td>CVE-2026-12151</td>
<td>High (7.5)</td>
<td>7.28.0</td>
<td><a
href="https://github.com/nodejs/undici/commit/8cb10f98"><code>8cb10f98</code></a></td>
</tr>
<tr>
<td><a
href="https://github.com/nodejs/undici/security/advisories/GHSA-vmh5-mc38-953g">GHSA-vmh5-mc38-953g</a></td>
<td>CVE-2026-9697</td>
<td>High (7.4)</td>
<td>7.28.0</td>
<td><a
href="https://github.com/nodejs/undici/commit/04201f89"><code>04201f89</code></a></td>
</tr>
<tr>
<td><a
href="https://github.com/nodejs/undici/security/advisories/GHSA-hm92-r4w5-c3mj">GHSA-hm92-r4w5-c3mj</a></td>
<td>CVE-2026-6734</td>
<td>High (7.5)</td>
<td>7.28.0</td>
<td><a
href="https://github.com/nodejs/undici/commit/3805b8f8"><code>3805b8f8</code></a></td>
</tr>
<tr>
<td><a
href="https://github.com/nodejs/undici/security/advisories/GHSA-pr7r-676h-xcf6">GHSA-pr7r-676h-xcf6</a></td>
<td>CVE-2026-9678</td>
<td>Moderate (5.9)</td>
<td>7.28.0</td>
<td><a
href="https://github.com/nodejs/undici/commit/85a24055"><code>85a24055</code></a></td>
</tr>
<tr>
<td><a
href="https://github.com/nodejs/undici/security/advisories/GHSA-p88m-4jfj-68fv">GHSA-p88m-4jfj-68fv</a></td>
<td>CVE-2026-9679</td>
<td>Moderate (5.9)</td>
<td>7.28.0</td>
<td><a
href="https://github.com/nodejs/undici/commit/d0574cc4"><code>d0574cc4</code></a></td>
</tr>
<tr>
<td><a
href="https://github.com/nodejs/undici/security/advisories/GHSA-g8m3-5g58-fq7m">GHSA-g8m3-5g58-fq7m</a></td>
<td>CVE-2026-11525</td>
<td>Low (3.7)</td>
<td>7.28.0</td>
<td><a
href="https://github.com/nodejs/undici/commit/d0574cc4"><code>d0574cc4</code></a></td>
</tr>
<tr>
<td><a
href="https://github.com/nodejs/undici/security/advisories/GHSA-35p6-xmwp-9g52">GHSA-35p6-xmwp-9g52</a></td>
<td>CVE-2026-6733</td>
<td>Low (3.7)</td>
<td>7.28.0</td>
<td><a
href="https://github.com/nodejs/undici/commit/ea8930cf"><code>ea8930cf</code></a></td>
</tr>
</tbody>
</table>
<hr />
<h2>High severity</h2>
<h3>WebSocket DoS via fragment count bypass — CVE-2026-12151</h3>
<p><strong><a
href="https://github.com/nodejs/undici/security/advisories/GHSA-vxpw-j846-p89q">GHSA-vxpw-j846-p89q</a></strong>
· CWE-400, CWE-770
<strong>Fix:</strong> <a
href="https://github.com/nodejs/undici/commit/8cb10f98"><code>8cb10f98</code></a>
<em>websocket: limit the number of fragments in a message</em> (part of
backport <a
href="https://github.com/nodejs/undici/commit/a027a4a0"><code>a027a4a0</code></a>
<em>Backport WebSocket maxPayloadSize fixes to v7.x</em>, <a
href="https://redirect.github.com/nodejs/undici/pull/5423">#5423</a>)</p>
<p>A malicious WebSocket server can stream a large number of small or
empty
continuation frames. Undici enforced a limit on cumulative payload size
but did
not limit the <em>number</em> of fragments per message, leading to
unbounded memory
growth and denial of service.</p>
<ul>
<li><strong>Affected:</strong> applications using <code>new
WebSocket(...)</code> or <code>WebSocketStream</code>
against untrusted endpoints.</li>
<li><strong>Workaround:</strong> none — upgrade is required.</li>
</ul>
<h3>TLS certificate validation bypass in SOCKS5 ProxyAgent —
CVE-2026-9697</h3>
<p><strong><a
href="https://github.com/nodejs/undici/security/advisories/GHSA-vmh5-mc38-953g">GHSA-vmh5-mc38-953g</a></strong>
· CWE-295</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f9eba0ad91"><code>f9eba0a</code></a>
Bumped v7.28.0 (<a
href="https://redirect.github.com/nodejs/undici/issues/5430">#5430</a>)</li>
<li><a
href="a027a4a04c"><code>a027a4a</code></a>
Backport WebSocket maxPayloadSize fixes to v7.x (<a
href="https://redirect.github.com/nodejs/undici/issues/5423">#5423</a>)</li>
<li><a
href="8cb10f983e"><code>8cb10f9</code></a>
websocket: limit the number of fragments in a message</li>
<li><a
href="04201f8947"><code>04201f8</code></a>
fix: honor requestTls when proxy is SOCKS5</li>
<li><a
href="fcd642ff61"><code>fcd642f</code></a>
fix(socks5): preserve dispatch backpressure return value (<a
href="https://redirect.github.com/nodejs/undici/issues/5166">#5166</a>)</li>
<li><a
href="bc98c97906"><code>bc98c97</code></a>
fix(socks5): use configured connector in Socks5ProxyAgent (<a
href="https://redirect.github.com/nodejs/undici/issues/5168">#5168</a>)</li>
<li><a
href="9e1c74372a"><code>9e1c743</code></a>
fix(socks5): encode embedded IPv4 tails in IPv6 literals correctly (<a
href="https://redirect.github.com/nodejs/undici/issues/5099">#5099</a>)</li>
<li><a
href="376c8be27c"><code>376c8be</code></a>
fix(socks5): enforce authenticated state before CONNECT (<a
href="https://redirect.github.com/nodejs/undici/issues/5097">#5097</a>)</li>
<li><a
href="3805b8f851"><code>3805b8f</code></a>
fix(socks5-proxy-agent): use per-origin pools to prevent cross-origin
routing...</li>
<li><a
href="85a240551c"><code>85a2405</code></a>
fix(cache): trim qualified field names</li>
<li>Additional commits viewable in <a
href="https://github.com/nodejs/undici/compare/v7.27.0...v7.28.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=undici&package-manager=npm_and_yarn&previous-version=7.27.0&new-version=7.28.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/compiler-explorer/compiler-explorer/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
gh-18517
2026-07-02 22:20:45 +01:00
Marc Auberer
4d4e9a85f4 [Spice] Prune non-latest patch versions per minor release (#8886)
Keep only the newest patch build for each minor series (0.19-0.27).
Removed compiler IDs are preserved as aliases on the surviving
latest-patch compiler so existing shortlinks keep resolving.

Infra PR: https://github.com/compiler-explorer/infra/pull/2210

Co-authored-by: Claude <noreply@anthropic.com>
gh-18516
2026-07-02 22:18:09 +01:00
moletteremi
ef9a1ce7c3 [CUDA] add scale's nvcc compiler (nvidia & amd backends) (#8849)
Hi !

This PR adds the [scale nvcc
compiler](https://docs.scale-lang.com/stable/) to the CE live site for
both AMD and Nvidia backends

It works locally and shows host asm, device LLVMIR and:

 - PTX ans SASS for Nvidia backend,
 - AMDGPU code for AMD backend.
 
There is a bug in scale 1.7.1 that prevents the compilation with both
`-S, -o` flags. As a result I had to make some temp workarounds.

For Nvidia backend, PTX is written in the device `.s` file. I run it
through `ptax` and `nvidasm` to get the SASS. To get the LLVMIR, I
decode the device `.bc` file with `llvm-dis`.

For AMD backend, the `.s` file is the AMDGPU code, and the LLVMIR is
obtained the same way.

I plan to make the `.ts` script closer to say `nvcc.ts` once the flag
bugs are fixed in scale.

Let me know if there is anything I missed for the live site integration.

infra PR: https://github.com/compiler-explorer/infra/pull/2191
Issue:
https://github.com/compiler-explorer/compiler-explorer/issues/8865

I acknowledge the use of generative AI to help drafting the code of this
PR.

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gh-18515
2026-07-02 22:14:19 +01:00
Matt Godbolt (bot acct)
40f82039a6 Rollup of dependency updates + move node floor to 22 LTS (#8885)
## What

Fresh rollup of minor/patch dependency updates via `npm update -S`, plus
a
`biome.json` tweak, plus a **node floor move to the latest 22 LTS**.
Redo of #8844
on top of current `main`.

Notable dep bumps: `@aws-sdk/*` 3.1057→3.1079, `@sentry/*` 10.55→10.63,
`webpack` 5.107→5.108, `@biomejs/biome` 2.4.16→2.5.2, `cypress`, `sass`,
`lint-staged`, and others.

## biome `!**/*.svg`

biome 2.5 now parses `.svg` files as HTML and errors on them (94 errors
across
`static/**`/`public/**`). Added `!**/*.svg` to the biome ignore list.

## Node floor → 22.23.1 (latest 22 LTS)

The update pulled `lint-staged@17.0.8`, which requires node `>=22.22.1`
— above our
previous declared minimum of `22.12.0`. Per the #8845 `find-node`
contract,
`.node-version` is the single source of truth whose satisfaction must
also satisfy
`engines.node` and every dependency. To keep that true, this bumps:

- `.node-version` → `22.23.1`
- `engines.node` → `>=22.23.1`

22.23.1 is the current latest 22 LTS and is also what CI's `setup-node`
(`22.x` +
`check-latest`) already resolves to. **Production node should move to
match.**

Lockfile regenerated cleanly under node 22.23.1 / npm 10.9.8 (CI's
toolchain).

## No `webpackJsHack` bump

The original #8844 also bumped `webpackJsHack` to dodge a source-map CDN
hash
collision; #8848 removed that escape hatch entirely (infra#2188 exempted
source
maps). So this touches no `webpack.config.esm.ts`.

## Note on the earlier biome CI failure

An earlier push failed `test` with `Cannot find module
'@biomejs/cli-linux-x64/biome'`.
Investigated: the lockfile is complete (all 8 platform optional deps
present, biome
2.5.2's package metadata is byte-identical to 2.4.16 which passes on
`main`), it
installs fine under npm 10.9/11.8 locally, and node 22.23.1 satisfies
all engines.
This is the known nondeterministic npm optional-dependency install flake
(npm/cli#4828) under node-22's bundled npm 10.9 — not a lockfile/code
defect. It
resolves on re-run; the systemic fix (make CI install with the repo's
declared
`npm@11.2.0` via corepack) is out of scope here.

Supersedes #8844.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gh-18513
2026-07-02 14:57:06 -05:00
Matt Godbolt
3a211aaf0f Remove the manual webpackJsHack static-asset version (#8848)
> [!IMPORTANT]
> **Draft / do not merge yet.** Depends on
[infra#2188](https://github.com/compiler-explorer/infra/pull/2188) being
merged **and deployed** first. Until then, this `webpackJsHack` constant
is still the only escape hatch for the source-map hash collisions, so it
must stay. There's no deadline on this PR — it's pure cleanup that can
wait indefinitely.

## What

Removes the `webpackJsHack` `.vNN.` infix from the static asset
filenames (`[name].vNN.[contenthash].js` → `[name].[contenthash].js`,
and likewise for `.css` and worker files), along with its now-misleading
"Hack alert" comment.

## Why

This constant was a **manual escape hatch**. The CDN serves static files
with a one-year immutable cache and verifies (in CI, `ce ... builds
check_hashes`) that a given filename never changes content. Source maps
are named after their *asset's* content hash (`<asset>.map`), so a
toolchain bump that regenerated a map for byte-identical JS/CSS reused
the same `.map` filename with different bytes → the check failed, and we
manually bumped this constant to rename every asset and dodge the
collision.

[infra#2188](https://github.com/compiler-explorer/infra/pull/2188) fixes
the root cause: source maps are debug-only metadata, not code, so
they're now exempt from the immutable-hash check, overwritten on deploy,
and served `no-cache` (so debugging always gets the current map). With
that deployed, this constant can never need bumping again.

## The comment was true once — on webpack 4 — but has been obsolete
since the webpack 5 upgrade

The "Hack alert" comment claims the bumps are needed for *"webpack
changes that affect how minification is done, even though that's
supposed not to matter."* That was accurate when it was written, but
stopped being true years ago:

| When | webpack | What | Minification claim valid? |
|------|---------|------|---------------------------|
| 2020-04-18 (`67575197f`, *"Add a hacky fix for the cannot upload over
identical file"*) | **4.42.1** | Comment + manual version introduced;
template changed `[chunkhash]` → `v2.[contenthash]` | **Yes** |
| 2021-12-21 (`7c20613c5`, *"Move to using webpack5 (#3197)"*) |
**5.65.0** | Upgrade to webpack 5 | **No — obsolete from here on** |

- **On webpack 4** there was no `realContentHash`; JS hashes were
computed from the chunk's module content *before* Terser ran. So a
webpack/minifier change that altered the *minified* output left the hash
unchanged → same filename, different bytes → "cannot upload over
identical file". The manual version was a genuine fix, and the comment
correctly described pre-minification hashing.
- **Since webpack 5** (`realContentHash: true`, default-on in
production, landed in 5.8) every `[contenthash]` is recomputed from the
**final, post-minification** bytes. A minifier change now produces a
*new filename* on its own — it can no longer collide. So the
minification rationale has been dead for ~3.5 years.

That means essentially every version bump from the webpack-5 era onward
(the `v2 → … → v69` march) was a **source-map** collision misattributed
to minification — the source map being the one asset whose name still
isn't a hash of its own post-processed content. That is exactly what
infra#2188 addresses.

### Net

- A real code change or a minifier change → different post-minification
bytes → different `[contenthash]` → new filename. Handled correctly by
content-addressing; no hack needed.
- The only same-name-different-bytes case was source maps → fixed by
infra#2188.
- So removing `webpackJsHack` (and its misleading comment) is safe once
infra#2188 is deployed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-18505
2026-07-02 14:08:23 -05:00
Matt Godbolt (bot acct)
eee2e8bfd9 Improve node discovery: version-manager aware, single source of truth (#8845)
## What

Reworks the bespoke `etc/scripts/find-node` and its `Makefile`
interaction so node discovery works out of the box on Linux and macOS,
is optionally friendly to version managers, and stays sympathetic to
people who just use system node.

### Before
- Only ever looked at `PATH`, plus a vestigial
`/opt/compiler-explorer/node` hardcode (an affordance for one dev's
local setup, unused by the live site).
- Duplicated the required node version in three places (`find-node` had
`22` twice; `.node-version`; `package.json` `engines`).
- Silently fell back *past* an unusable `NODE_DIR` to whatever else it
found.
- nvm users got whatever default was active, not the version this repo
pins.
- Nagged on any version that wasn't exactly `22.x`, even newer ones.

### After — clear, permissive resolution order
1. **`$NODE_DIR/bin/node`** — explicit override, now authoritative. If
it's set but missing/too old you get a clear error instead of a silent
fallback.
2. **`node`/`nodejs` on `PATH`** — covers system node *and* any version
manager with shell integration (fnm, asdf, nodenv, volta, an active
nvm). Zero extra steps on a well-configured machine.
3. **Manager rescue** — only when PATH node is absent or below the
minimum: source `nvm` and ask for the pinned version (the one manager
that's a shell function rather than a PATH binary), then try
`fnm`/`nodenv`/`asdf`. Each branch is inert unless that tool is
installed, so nobody is pushed onto a manager.

Other changes:
- **Single source of truth**: the minimum major now comes solely from
`.node-version` (the same file the managers read). Newer majors are
always fine — the "only tested against v22.x" warning is dropped.
- **`Makefile`**: `.node-bin` now also depends on `.node-version`, so
bumping the pin re-resolves node instead of serving a stale cache. The
lazy-dotfile pattern (so failures abort `make` and `make help` pays
nothing) is kept.
- **`README`**: documents the PATH-first + manager-rescue behaviour.

## Testing
- `shellcheck` clean.
- Verified: PATH discovery, valid/bogus `NODE_DIR`, nvm rescue (shadowed
`node`+`nodejs` with v18 shims → skipped them and resolved v22.22 via
nvm), too-old fallthrough, no-node/no-manager failure message, and `make
info` end-to-end.
- `fnm` branch is logically straightforward but was not exercised (no
fnm on the test box) — worth a smoke test if you have one.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Matt Godbolt <matt@godbolt.org>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
gh-18502
2026-07-02 19:50:58 +01:00
Michael Dunn-OConnor
ca8f03cafa Add Mojo 1.0.0b2 (#8841)
Add Mojo **1.0.0b2**, published to PyPI on 2026-06-18.

- Appends `mojo_1_0_0b2` to the `group.mojo.compilers` list (before
`mojo_nightly`).
- Adds the `exe` and `semver` properties for
`/opt/compiler-explorer/mojo-1.0.0b2/bin/mojo`.

Existing `mojo_0_25_6_0`, `mojo_0_25_7_0`, `mojo_0_26_1_0`,
`mojo_0_26_2_0`, and `mojo_1_0_0b1`
entries are deliberately kept per [docs/AddingACompiler.md § "Don't
remove or rename compilers on
the public
site"](https://github.com/compiler-explorer/compiler-explorer/blob/main/docs/AddingACompiler.md#dont-remove-or-rename-compilers-on-the-public-site).

**Companion infra PR required:** a matching change in
`compiler-explorer/infra`
(`bin/yaml/mojo.yaml`, `type: pip`, `mojo==1.0.0b2`) is needed to
install the binary on the public
site. That is in a separate repository and not included here.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gh-18501
2026-07-02 19:48:36 +01:00