10712 Commits

Author SHA1 Message Date
Ofek Shilon
bd3bd900d9 Update spd-clang build switches 2026-02-05 17:21:28 +02:00
Ofek Shilon
7f81ff2f00 Update clang/mfcc build switches 2026-02-05 17:21:28 +02:00
Ofek Shilon
7196c1f29d Fix mfcc path, filter-comments defaults to false, change default.cpp to valid cuh 2026-02-05 17:21:28 +02:00
Ofek Shilon
45e92dfb4f Fix bender data path 2026-02-05 17:21:28 +02:00
Ofek Shilon
703a12f906 Restored mfcc operation. Still need to separate spd properties to files 2026-02-05 17:21:27 +02:00
Ofek Shilon
5457a1541f Fix build 2026-02-05 17:21:27 +02:00
Ofek Shilon
3b75cf28f3 start 2026-02-05 17:21:27 +02:00
Matt Godbolt
b12c96db22 Add AVR GCC 7.3.0 compiler (#8440)
Add AVR GCC 7.3.0 to the C++, C, and GIMPLE compiler configs.

Binary installed at `/opt/compiler-explorer/avr/gcc-7.3.0/avr/bin/`

Built via gcc-cross-builder PR #78 (merged).

Closes #2965
gh-17132
2026-02-04 22:45:22 -06:00
Matt Godbolt
cb7af62ad5 build(deps): upgrade monaco-editor-webpack-plugin to 7.1.1 (#8437)
## Summary
Upgrades monaco-editor-webpack-plugin from 7.1.0 to 7.1.1 to fix module
worker compatibility.

## Problem
Monaco 0.53+ creates module workers (`{type: "module"}`), but webpack
plugin 7.1.0 generates `importScripts()` calls in blob URLs for
cross-origin CDN workers. Module workers cannot use `importScripts()`,
causing:
```
TypeError: Module scripts don't support importScripts()
```

## Solution
Plugin 7.1.1 generates proper ES module `import` statements for module
workers instead of `importScripts()`.

## Testing
- [ ] Dev server starts successfully
- [ ] Monaco editor loads without worker errors
- [ ] Syntax highlighting works
- [ ] Autocomplete works

---
🤖 Generated by LLM (Claude, via OpenClaw)
gh-17129
2026-02-04 17:37:28 -06:00
Cliff Burdick
341193781c Add CCCL 3.1.4 (#8434) gh-17118 2026-02-03 20:27:16 -06:00
Matt Godbolt
1f118e6889 Update monaco-editor from 0.49 to 0.55 (#8426)
Bump `monaco-editor` from `^0.49.0` to `^0.55.1` (resolves to 0.55.1).

## What changed in Monaco 0.49 → 0.55

- **0.50–0.52**: Minor additions (placeholder, compactMode, new editor
options)
- **0.53**: AMD build deprecated (we use ESM via webpack — unaffected)
- **0.54**: New `mouseMiddleClickAction` option, bug fixes
- **0.55**: Nested language namespaces moved to top level
(`languages.typescript` → `typescript`, etc.) — we don't use any of
these

## No breaking changes affect our usage

- `deltaDecorations` still works (soft-deprecated since 0.34); existing
TODOs in ast-view and ir-view track migration to
`createDecorationsCollection`
- No removed APIs are used by CE
- `monaco-vim` 0.4.4 has a wildcard peer dep — works fine
- Webpack plugin stays pinned at 7.1.0 due to upstream bug
[microsoft/monaco-editor#5073](https://github.com/microsoft/monaco-editor/issues/5073)
— see #8214 for tracking

Closes #7881

## Testing

-  `npm run ts-check` — all 4 projects pass (backend, frontend, tests,
frontend-tests)
-  `npm run test-min` — 1382 tests passed
-  Dev server: UI renders, compilation works, source-to-asm line
mapping works, vim mode works
-  Zero browser console errors/warnings

---
🤖 *This PR was generated by an LLM (Claude, via OpenClaw)*
gh-17117
2026-02-03 20:25:34 -06:00
Matt Godbolt
ec1ac47033 Fix any types for delayCleanupTemp and toolchainPath (#8409)
## Summary

- Fixed `delayCleanupTemp: any` → `boolean`
- Fixed `toolchainPath: any` → `string | undefined`
- Changed `getToolchainPath()` to return `string | undefined` instead of
`string | false` (more idiomatic TypeScript)
- Fixed a latent bug in `changeOptionsBasedOnOverrides`

### Bug fix details

The bug was introduced in commit 079d49575 ("Compiler overrides #5001")
on May 16, 2023.

The original **correct** code (from commit 86a84f7f6) was:
```typescript
let sysrootPath: string | undefined;
const overriddenToolchainPath = this.getOverridenToolchainPath(overrides);
if (overriddenToolchainPath) {
    sysrootPath = getSysrootByToolchainPath(overriddenToolchainPath);
}
```

The buggy refactor changed it to:
```typescript
const sysrootPath = overriddenToolchainPath ?? 
    getSysrootByToolchainPath(overriddenToolchainPath);
```

This had two issues:
1. **The fallback was never reached**: `false ?? x` returns `false`
because `false` is not nullish (only `null`/`undefined` trigger `??`)
2. **The fallback passed the wrong variable**: It passed
`overriddenToolchainPath` to the fallback, but when the fallback is
needed, that variable would be `false`/`undefined`

Fixed to match the original correct behaviour:
```typescript
const sysrootPath = overriddenToolchainPath
    ? getSysrootByToolchainPath(overriddenToolchainPath)
    : this.toolchainPath
      ? getSysrootByToolchainPath(this.toolchainPath)
      : undefined;
```

The sysroot is now always computed via `getSysrootByToolchainPath()`,
since toolchain paths (e.g. `/opt/compiler-explorer/gcc-7.2.0`) differ
from sysroot paths (e.g.
`/opt/compiler-explorer/gcc-7.2.0/x86_64-pc-linux-gnu/sysroot`).

## Test plan
- [x] `npm run ts-check` passes
- [x] `npm run test-min` passes
- [x] Pre-commit hooks pass

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

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17110
2026-02-02 21:31:18 -06:00
jmuddnv
172877993d Changes for HPC SDK 26.1 (#8416)
Add nvc 26.1 to etc/config/c.amazon.properties
Add nvc++ 26.1 to etc/config/c++.amazon.properties
Add nvfortran 26.1 to etc/config/fortran.amazon.properties

---------

Co-authored-by: Compiler Explorer Bot <mattgodbolt@users.noreply.github.com>
gh-17107
2026-02-02 20:59:20 -06:00
Mateusz Pusz
d97720efe7 mp-units/2.5.0 added (#8414) gh-17106 2026-02-02 20:41:15 -06:00
Ivan Pribec
3c194c53c3 Add recent ifx versions (#8418)
Depends on https://github.com/compiler-explorer/infra/pull/1949
gh-17105
2026-02-02 20:40:38 -06:00
Ivan Pribec
630fd4559c Add LFortran versions from 0.53 to 0.59 (#8417)
Adds recent LFortran versions.

Depends on https://github.com/compiler-explorer/infra/pull/1948
gh-17104
2026-02-02 20:39:24 -06:00
Johan Engelen
fd0f7a7920 Add LDC 1.41.0 and make it the default D compiler (#8433)
Infra https://github.com/compiler-explorer/infra/pull/1950
gh-17103
2026-02-02 20:38:12 -06:00
Matt Godbolt
2416973a8e Clean up and refactor LlvmPassDumpParser (#8430)
Addresses #4128 — cleans up commented-out code and improves code quality
in `LlvmPassDumpParser`.

**Commit 1: Remove commented-out code**
Remove unused fields (`label`, `instruction`), dead `maxIrLines`
configuration code, stale debug logging (`console.log`/`console.dir`),
and obsolete early-exit logic. The `compilerProps` constructor parameter
was only used by the commented-out code, so remove it and update all
call sites.

**Commits 2–4: Add comprehensive test suite**
50 tests locking in existing behaviour across all parser methods:
`breakdownOutputIntoPassDumps`, `breakdownPassDumpsIntoFunctions`,
`breakdownIntoPassDumpsByFunction`, `matchPassDumps`,
`associateFullDumpsWithFunctions`, and end-to-end `process()`. Covers
edge cases like loop dumps, `(invalidated)` passes, IR→MIR transitions,
CIR headers, and full-module mode.

**Commits 5–6: Clean up code style**
- snake_case → camelCase throughout (`raw_passes`, `final_output`,
`function_name`, etc.)
- Mark all regex fields `readonly`
- Replace `.map()` used for side effects with `for...of` loop
- Replace `[_, entry]` destructuring with `Object.values()`

🤖 Generated by LLM (Claude, via OpenClaw)
gh-17102
2026-02-02 20:06:09 -06:00
dependabot[bot]
d51b212683 Bump urllib3 from 2.5.0 to 2.6.3 in /etc/scripts/docenizers (#8391)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.5.0 to 2.6.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/urllib3/urllib3/releases">urllib3's
releases</a>.</em></p>
<blockquote>
<h2>2.6.3</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h2>Changes</h2>
<ul>
<li>Fixed a security issue where decompression-bomb safeguards of the
streaming API were bypassed when HTTP redirects were followed.
(CVE-2026-21441 reported by <a
href="https://github.com/D47A"><code>@​D47A</code></a>, 8.9 High,
GHSA-38jv-5279-wg99)</li>
<li>Started treating <code>Retry-After</code> times greater than 6 hours
as 6 hours by default. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3743">urllib3/urllib3#3743</a>)</li>
<li>Fixed <code>urllib3.connection.VerifiedHTTPSConnection</code> on
Emscripten. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3752">urllib3/urllib3#3752</a>)</li>
</ul>
<h2>2.6.2</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h2>Changes</h2>
<ul>
<li>Fixed <code>HTTPResponse.read_chunked()</code> to properly handle
leftover data in the decoder's buffer when reading compressed chunked
responses. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3734">urllib3/urllib3#3734</a>)</li>
</ul>
<h2>2.6.1</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h2>Changes</h2>
<ul>
<li>Restore previously removed <code>HTTPResponse.getheaders()</code>
and <code>HTTPResponse.getheader()</code> methods. (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3731">#3731</a>)</li>
</ul>
<h2>2.6.0</h2>
<h2>🚀 urllib3 is fundraising for HTTP/2 support</h2>
<p><a
href="https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support">urllib3
is raising ~$40,000 USD</a> to release HTTP/2 support and ensure
long-term sustainable maintenance of the project after a sharp decline
in financial support. If your company or organization uses Python and
would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and
thousands of other projects <a
href="https://opencollective.com/urllib3">please consider contributing
financially</a> to ensure HTTP/2 support is developed sustainably and
maintained for the long-haul.</p>
<p>Thank you for your support.</p>
<h2>Security</h2>
<ul>
<li>Fixed a security issue where streaming API could improperly handle
highly compressed HTTP content (&quot;decompression bombs&quot;) leading
to excessive resource consumption even when a small amount of data was
requested. Reading small chunks of compressed data is safer and much
more efficient now. (CVE-2025-66471 reported by <a
href="https://github.com/Cycloctane"><code>@​Cycloctane</code></a>, 8.9
High, GHSA-2xpw-w6gg-jr37)</li>
<li>Fixed a security issue where an attacker could compose an HTTP
response with virtually unlimited links in the
<code>Content-Encoding</code> header, potentially leading to a denial of
service (DoS) attack by exhausting system resources during decoding. The
number of allowed chained encodings is now limited to 5. (CVE-2025-66418
reported by <a
href="https://github.com/illia-v"><code>@​illia-v</code></a>, 8.9 High,
GHSA-gm62-xv2j-4w53)</li>
</ul>
<blockquote>
<p>[!IMPORTANT]</p>
<ul>
<li>If urllib3 is not installed with the optional
<code>urllib3[brotli]</code> extra, but your environment contains a
Brotli/brotlicffi/brotlipy package anyway, make sure to upgrade it to at
least Brotli 1.2.0 or brotlicffi 1.2.0.0 to benefit from the security
fixes and avoid warnings. Prefer using <code>urllib3[brotli]</code> to
install a compatible Brotli package automatically.</li>
</ul>
</blockquote>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/urllib3/urllib3/blob/main/CHANGES.rst">urllib3's
changelog</a>.</em></p>
<blockquote>
<h1>2.6.3 (2026-01-07)</h1>
<ul>
<li>Fixed a high-severity security issue where decompression-bomb
safeguards of
the streaming API were bypassed when HTTP redirects were followed.
(<code>GHSA-38jv-5279-wg99
&lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-38jv-5279-wg99&gt;</code>__)</li>
<li>Started treating <code>Retry-After</code> times greater than 6 hours
as 6 hours by
default. (<code>[#3743](https://github.com/urllib3/urllib3/issues/3743)
&lt;https://github.com/urllib3/urllib3/issues/3743&gt;</code>__)</li>
<li>Fixed <code>urllib3.connection.VerifiedHTTPSConnection</code> on
Emscripten.
(<code>[#3752](https://github.com/urllib3/urllib3/issues/3752)
&lt;https://github.com/urllib3/urllib3/issues/3752&gt;</code>__)</li>
</ul>
<h1>2.6.2 (2025-12-11)</h1>
<ul>
<li>Fixed <code>HTTPResponse.read_chunked()</code> to properly handle
leftover data in
the decoder's buffer when reading compressed chunked responses.
(<code>[#3734](https://github.com/urllib3/urllib3/issues/3734)
&lt;https://github.com/urllib3/urllib3/issues/3734&gt;</code>__)</li>
</ul>
<h1>2.6.1 (2025-12-08)</h1>
<ul>
<li>Restore previously removed <code>HTTPResponse.getheaders()</code>
and
<code>HTTPResponse.getheader()</code> methods.
(<code>[#3731](https://github.com/urllib3/urllib3/issues/3731)
&lt;https://github.com/urllib3/urllib3/issues/3731&gt;</code>__)</li>
</ul>
<h1>2.6.0 (2025-12-05)</h1>
<h2>Security</h2>
<ul>
<li>Fixed a security issue where streaming API could improperly handle
highly
compressed HTTP content (&quot;decompression bombs&quot;) leading to
excessive resource
consumption even when a small amount of data was requested. Reading
small
chunks of compressed data is safer and much more efficient now.
(<code>GHSA-2xpw-w6gg-jr37
&lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-2xpw-w6gg-jr37&gt;</code>__)</li>
<li>Fixed a security issue where an attacker could compose an HTTP
response with
virtually unlimited links in the <code>Content-Encoding</code> header,
potentially
leading to a denial of service (DoS) attack by exhausting system
resources
during decoding. The number of allowed chained encodings is now limited
to 5.
(<code>GHSA-gm62-xv2j-4w53
&lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-gm62-xv2j-4w53&gt;</code>__)</li>
</ul>
<p>.. caution::</p>
<ul>
<li>If urllib3 is not installed with the optional
<code>urllib3[brotli]</code> extra, but
your environment contains a Brotli/brotlicffi/brotlipy package anyway,
make
sure to upgrade it to at least Brotli 1.2.0 or brotlicffi 1.2.0.0 to
benefit from the security fixes and avoid warnings. Prefer using</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0248277dd7"><code>0248277</code></a>
Release 2.6.3</li>
<li><a
href="8864ac407b"><code>8864ac4</code></a>
Merge commit from fork</li>
<li><a
href="70cecb27ca"><code>70cecb2</code></a>
Fix Scorecard issues related to vulnerable dev dependencies (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3755">#3755</a>)</li>
<li><a
href="41f249abe1"><code>41f249a</code></a>
Move &quot;v2.0 Migration Guide&quot; to the end of the table of
contents (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3747">#3747</a>)</li>
<li><a
href="fd4dffd2fc"><code>fd4dffd</code></a>
Patch <code>VerifiedHTTPSConnection</code> for Emscripten (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3752">#3752</a>)</li>
<li><a
href="13f0bfd55e"><code>13f0bfd</code></a>
Handle massive values in Retry-After when calculating time to sleep for
(<a
href="https://redirect.github.com/urllib3/urllib3/issues/3743">#3743</a>)</li>
<li><a
href="8c480bf87b"><code>8c480bf</code></a>
Bump actions/upload-artifact from 5.0.0 to 6.0.0 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3748">#3748</a>)</li>
<li><a
href="4b40616e95"><code>4b40616</code></a>
Bump actions/cache from 4.3.0 to 5.0.1 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3750">#3750</a>)</li>
<li><a
href="82b8479663"><code>82b8479</code></a>
Bump actions/download-artifact from 6.0.0 to 7.0.0 (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3749">#3749</a>)</li>
<li><a
href="34284cb017"><code>34284cb</code></a>
Mention experimental features in the security policy (<a
href="https://redirect.github.com/urllib3/urllib3/issues/3746">#3746</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/urllib3/urllib3/compare/2.5.0...2.6.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=urllib3&package-manager=uv&previous-version=2.5.0&new-version=2.6.3)](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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-17101
2026-02-02 20:04:48 -06:00
Saagar Jha
e622115375 Pair some more languages with their formatters (#8412)
Most of these should be fairly noncontroversial but for the others I
figured clang-format is better than no formatter. If someone ends up
adding more "official" options then it should be straightforward to
switch to using that instead.
gh-17100
2026-02-02 20:04:07 -06:00
Artem Belevich
76dc4b0ca5 Add += append syntax for string properties. (#8387)
Introduce a += operator in property file parsing that appends values to
existing string properties. This allows splitting long property values
across multiple lines for improved readability.

Example:
  group.compilers=comp1:comp2:comp3
  group.compilers+=:comp4:comp5:comp6

Error handling:
- Logs error and skips if += is used on an undefined property
- Logs error and skips if += is used on a non-string property

Includes unit tests for the new functionality.

<!-- 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!
-->
gh-17099
2026-02-02 20:02:38 -06:00
Matt Godbolt
53c7dd328b Configure Biome import organiser with grouped imports (#8431)
Enable Biome's `organizeImports` with groups matching the original
ESLint `import/order` configuration:

1. **Node builtins** (`node:fs`, `path`, etc.)
2. *(blank line)*
3. **Third-party packages** (`express`, `@sentry/node`, etc.)
4. *(blank line)*
5. **Local/relative imports** (`../foo.js`, `./bar.js`, aliases)

This resolves the inconsistency where Biome wasn't enforcing import
grouping, meaning new files would lose the blank-line separation that
the old ESLint config enforced.

### Impact
- **354 files** updated out of 738 checked (~48%)
- **+188 / -240 lines** (net -52) — almost entirely single blank line
additions/removals between import groups
- No import reordering; purely group separator consistency

Fixes #7373

🤖 Generated by LLM (Claude, via OpenClaw)
gh-17085
2026-02-01 20:50:46 -06:00
Matt Godbolt
a13ee5e284 Add NVIDIA licence metadata to NVCC, NVRTC, nvc++, nvc, and nvfortran (#8429)
Add `licenseName` and `licenseLink` to all NVIDIA compiler groups:

- **NVCC** and **NVRTC**: NVIDIA CUDA Toolkit EULA
- **nvc++** (C++), **nvc** (C), **nvfortran** (Fortran): NVIDIA HPC SDK
EULA

These were the only compiler groups on CE with no licence metadata
despite being proprietary software. The CUDA EULA (Section 1.7)
explicitly requires compliance with US export controls (EAR/OFAC),
including a clause that users confirm they are not in an embargoed
country.

Related: #975
gh-17076
2026-02-01 18:29:22 -06:00
Matt Godbolt
226edbec58 docs: reference compile_commands.json community tool (#8427)
Add a note in AddingACompiler.md pointing to pseyfert's
[compilecommands_to_compilerexplorer](https://github.com/pseyfert/compilecommands_to_compilerexplorer)
tool, which generates `.local.properties` from `compile_commands.json`.

Closes #953

🤖 Generated by LLM (Claude, via OpenClaw)
gh-17071 gh-17070
2026-02-01 12:31:29 -06:00
Matt Godbolt
11cc294698 Fix debug info leaking through filters with clang 21 (#8425)
## Summary
- Fixes #8364: clang 21 debug info (`.debug_loclists` etc.) was passing
through directive+label filters
- The label processor's `endBlock` regex only matched `.cfi_endproc`,
missing section boundaries (`.section`, `.data`, `.text`) that the main
parser already handles — so `currentLabelSet` was never cleared across
sections, causing weak label associations to leak from used labels (e.g.
jump tables in `.rodata`) into debug sections
- Passes `startBlock` and `endBlock` from the parser into `LabelContext`
instead of using hardcoded inline regexes, and clears `currentLabelSet`
on `endBlock`

## Test plan
- [x] Added `bug-8364.asm` test case with a jump table followed by
`.debug_loclists` section
- [x] Verified debug labels appear in unfiltered output but are excluded
from directive+label filtered output
- [x] Full test suite passes (2106 tests, no regressions)
- [x] TypeScript type check clean
- [x] Lint clean

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

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17049
2026-01-31 19:11:08 -06:00
Matt Godbolt
1ae5a36d95 Attempt at latest browserslist (#8424) gh-17044 2026-01-31 18:50:25 -06:00
narpfel
2229a31480 Ignore click events when selecting text and the event handler would cancel selection (#8413)
Resolves #8405.
gh-17041
2026-01-31 17:34:26 -06:00
Matt Godbolt
ddb0266645 Convert propscheck.py to TypeScript/Vitest tests (#8404)
## Summary

Replaces the Python `propscheck.py` validation script with TypeScript
code that:
- Uses a testable validator module (`lib/properties-validator.ts`)
- Has comprehensive unit tests (71 tests in
`test/properties-validation-tests.ts`)
- Integrates with the existing property loading infrastructure
- Runs as part of the normal test suite

## Changes

- **New validator module** (`lib/properties-validator.ts`):
- Raw file validation: duplicate keys, empty list elements, typos,
suspicious paths
  - Orphan detection: compilers, groups, formatters, tools, libraries
  - Cross-file duplicate compiler ID detection
  - Disabled allowlist support (`# Disabled: id1 id2`)
- Invalid property format detection (leverages `parseProperties()` with
new `collectErrors` option)
  - Missing compilers list detection for language files

- **Property library enhancement** (`lib/properties.ts`):
- Added `collectErrors` option to `parseProperties()` for structured
error collection

- **New npm script**: `npm run test:props` for quick property validation
  - Set `CHECK_LOCAL_PROPS=true` to include `.local.properties` files

- **Updated references**:
  - CI workflow no longer calls propscheck.py
  - Pre-commit hook uses `npm run test:props`
  - CE Properties Wizard uses the new validation

- **Removed**: `etc/scripts/util/propscheck.py` and `propschecktest.py`

## Test plan

- [x] All 71 unit tests pass
- [x] Integration tests validate real config files
- [x] `npm run test:props` works standalone
- [x] CE Properties Wizard validation works
- [x] CI passes

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

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17039
2026-01-30 19:03:00 -05:00
Matt Godbolt
707eac527c Fix any types for alwaysResetLdPath and compilerWrapper (#8410)
## Summary

Improves types for two properties in BaseCompiler:

- `alwaysResetLdPath: any` → `boolean` (added `false` default to
`ceProps()` call)
- `compilerWrapper: any` → `string | undefined` (using generic
`compilerProps<string>()`)

These are more precise than the initial `PropertyValue` type, matching
their actual usage.

## Test plan
- [x] `npm run ts-check` passes
- [x] `npm run test-min` passes
- [x] Pre-commit hooks pass

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

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17031
2026-01-25 21:52:25 -05:00
Matt Godbolt
6f20c5a5c9 Fix any types for objdumperClass and executionEnvironmentClass (#8411)
## Summary

- `objdumperClass: any` → `new () => BaseObjdumper`
- `executionEnvironmentClass: any` → `typeof LocalExecutionEnvironment`

Used a constructor type for `objdumperClass` since `BaseObjdumper` is
abstract and `typeof BaseObjdumper` wouldn't allow instantiation.

### Additional fix

This change exposed a latent type issue: `ObjdumpResult.asm` is `string
| undefined`, but was being passed directly to
`postProcessObjdumpOutput(output: string)`. Added a nullish coalescing
fallback (`?? ''`) for safety.

## Test plan
- [x] `npm run ts-check` passes
- [x] `npm run test-min` passes
- [x] Pre-commit hooks pass

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17030
2026-01-25 21:50:21 -05:00
Matt Godbolt
9c27705265 Use CompilationInfo type instead of Record<any, any> in tooling (#8408)
## Summary
- Replaces `Record<any, any>` with `CompilationInfo` for the
`compilationInfo` parameter in tooling files
- The `CompilationInfo` type was already imported in 2 of 3 files but
not used
- Follows up on #8407 which fixed the same issue for `tools` type

## Files changed
- `compiler-dropin-tool.ts` - use existing import
- `sonar-tool.ts` - use existing import  
- `microsoft-analysis-tool.ts` - add import
- `test/tool-tests.ts` - cast mock objects at declaration

## Test plan
- [x] `npm run ts-check` passes
- [x] `npm run test-min` passes

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17021
2026-01-25 20:55:57 -05:00
Matt Godbolt
f49ed02cfb Fix ClientOptionsType.tools to use proper Tool type (#8407)
## Summary
- Changes `ClientOptionsType.tools` from `Record<any, any>` to
`Record<LanguageKey, Record<string, Tool>>`
- This prevents bugs like the one fixed in #8406 where `tool.name` was
used instead of `tool.tool.name`
- The `any` type was escaping type checking entirely

## Test plan
- [x] `npm run ts-check` passes
- [x] `npm run test-min` passes

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17018
2026-01-25 20:28:16 -05:00
Matt Godbolt
695d764cc3 Fix /api/tools/:language endpoint missing name field (#8406)
## Summary
- Fixed the `/api/tools/:language` API endpoint to correctly return the
`name` field
- The `BaseTool` class stores tool properties in a nested `tool`
property, but the API handler was incorrectly accessing `name`,
`languageId`, and `stdinHint` directly on the class instance instead of
via `tool.tool.*`
- Added tests to verify the tools endpoint returns the expected fields

Fixes #8399

## Test plan
- [x] Added unit test that verifies `name` field is included in response
- [x] Added test for empty tools list
- [x] All existing tests pass

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17015
2026-01-25 20:18:38 -05:00
Matt Godbolt
f46ad30286 Support absolute paths in temp directory creation (#8403)
## Summary
- When an absolute path prefix is provided to `temp.mkdir()` or
`temp.mkdirSync()`, use it directly instead of joining with
`os.tmpdir()`
- This supports use cases where compilers need temporary directories in
specific locations (e.g., shared NFS drives for remote compilation)
- Existing callers all use relative prefixes, so this is fully backwards
compatible

## Test plan
- [x] Added tests for both `mkdir` and `mkdirSync` with absolute paths
- [x] Verified existing tests still pass
- [x] Checked all callers use relative paths (no behaviour change)

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17006
2026-01-25 18:35:48 -05:00
Patrick Quist
7a7c2e9067 add zlib to c and c++ (#8398)
Fixes #8396
gh-17001
2026-01-25 17:01:46 -05:00
Quinton Miller
c68bcbb145 Add Crystal 1.19.1 and 1.18.2 (#8400) gh-17000 2026-01-25 16:57:01 -05:00
Tony Cook
3d4fc27de0 Add the perl language (#8351)
Based on
https://github.com/KaceCottam/compiler-explorer/commits/language-perl/
rebased, modernized and captures the generated perl op codes.

<img width="1569" height="878" alt="image"
src="https://github.com/user-attachments/assets/4d131097-d258-419b-86c9-1a56c16f9ce2"
/>

---------

Co-authored-by: Kace Cottam <kaceac1@hotmail.com>
gh-16999
2026-01-25 16:50:12 -05:00
Steve
9a8f2b4ecf Add .NET 10 (#8314)
Add .NET 10 compilers.

Depends on https://github.com/compiler-explorer/infra/pull/1913
gh-16997
2026-01-25 16:28:56 -05:00
Matt Godbolt
da09217c98 Update dependencies (Jan 2025) (#8401)
## Summary
- Minor/patch package updates (AWS SDK, Sentry, Biome, Vitest, etc.)
- Removes Biome version pin workaround (bug in 2.3.9 is fixed)
- Fixes for stricter Express types in `@types/express` - `req.params`
and `req.query` values are now correctly typed as `string | string[]`

## Test plan
- [x] `npm run ts-check` passes
- [x] `npm run lint` passes
- [x] `npm run test-min` passes
- [x] Manual testing of shortlinks, API endpoints, noscript mode

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

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-16995
2026-01-25 16:22:24 -05:00
Patrick Quist
8a85e6883a Drop GCC reflection nightly builds (#8390)
## Summary
- Remove `greflection-trunk` compiler from the gcc86 group
- Remove the dedicated compiler configuration for GCC reflection trunk
- Add `greflection-trunk` as an alias for `gsnapshot` to preserve
existing shortlinks

Fixes #8389

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-16989
2026-01-24 10:25:15 +01:00
Miguel Ojeda
acbd1e84c8 Rust 1.93.0 (#8395)
Infra: https://github.com/compiler-explorer/infra/pull/1940.

Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
gh-16984
2026-01-23 17:49:10 +01:00
Dana Jansens
edf9bd889e Use prebuilt runtimes when linking with the Carbon toolchain (#8384)
This depends on https://github.com/compiler-explorer/infra/pull/1936
which builds the runtimes when installing the Carbon toolchain. Then
this PR passes `--prebuilt-runtimes` to the `carbon link` step in order
to use them. The result is that compiler explorer no longer times out
when trying to link a binary with the Carbon toolchain.

The carbon.ts file is refactored a little in an attempt to improve
clarity about what is going on, and some comments are added throughout.

Fixes https://github.com/carbon-language/carbon-lang/issues/6603.
gh-16978
2026-01-20 21:02:38 -06:00
Partouf
f82d39b88d add compiler config subagent gh-16975 2026-01-19 20:52:12 +01:00
Patrick Quist
b7a44e62b5 Add /noscript/clientstate/ endpoint for noscript mode (#8385) gh-16969 2026-01-18 16:46:29 +01:00
Artem Belevich
9997f75432 [CUDA, PTX] update clang and ptxas compilers with new CUDA versions. (#8374) gh-16968 2026-01-18 12:32:09 +01:00
Alastair Murray
8e6a58f16f Suppress crash reporting in Mojo compiler (#8382) gh-16967 2026-01-18 12:31:33 +01:00
Alastair Murray
27db9839eb Update default Mojo example to have non-empty assembly (#8381) gh-16966 2026-01-18 12:31:14 +01:00
Cliff Burdick
3afc2d6b1b Add CUDA 13.1.1 (#8383)
Depends on https://github.com/compiler-explorer/infra/pull/1935
gh-16965
2026-01-18 12:29:25 +01:00
LJ
730ef9962a Add resolc Solidity compiler v0.6.0 (#8375) gh-16964 2026-01-18 12:28:57 +01:00
Marc Auberer
c69f7dcd06 [Spice] Add version 0.24.3 (#8373)
Infra PR: https://github.com/compiler-explorer/infra/pull/1931
gh-16959
2026-01-18 12:07:38 +01:00