Commit Graph

10777 Commits

Author SHA1 Message Date
mattgodbolt-molty
0147acba30 chore: exclude webpack-patches from Biome linting
The patch files in static/webpack-patches/ are derived from third-party
Monaco source and should not be linted as CE code.

🤖 Generated by LLM (Claude, via OpenClaw)
gh-17547
2026-03-12 18:49:55 -05:00
mattgodbolt-molty
a57c80124c fix(webpack): also patch basic-languages contribution (monaco #5162)
Extend the NormalModuleReplacementPlugin fix to also strip the
editor contribution side-effect imports from the shared
vs/basic-languages/_.contribution.js file.

Monaco 0.55 introduced this pattern across all language contributions
(not just TypeScript), as reported upstream:
https://github.com/microsoft/monaco-editor/issues/5162

Note: the primary bundle size regression (~7 MB) is not from these
side-effect imports (webpack deduplicates them), but from TypeScript's
new direct import of editor.api2.js which pulls in the full standalone
API on the main thread. That path needs further investigation.

🤖 Generated by LLM (Claude, via OpenClaw)
2026-03-10 08:16:18 -05:00
mattgodbolt-molty
f6bdc0d98a fix(webpack): patch Monaco 0.55 TypeScript contribution to reduce bundle size
Monaco 0.55 changed vs/language/typescript/monaco.contribution.js from 3
imports to 75, explicitly importing all editor contributions. This causes
the vendor.js bundle to grow from ~4.7 MB to ~12 MB because:

1. The 72 side-effect contrib imports are already included by
   MonacoEditorWebpackPlugin's include-loader, creating near-duplicates
2. The new editor.api2.js import bypasses the include-loader's
   interception regex (/editor.(api|main).js/) pulling in Monaco's
   entire standalone API tree a second time on the main thread

This commit partially addresses the issue by substituting a patched
monaco.contribution.js via NormalModuleReplacementPlugin, stripping
the 72 redundant side-effect imports. Full investigation and upstream
fix still needed — see #8547.

🤖 Generated by LLM (Claude, via OpenClaw)
2026-03-10 08:11:48 -05:00
Miguel Ojeda
1e0d72d710 Rust 1.94.0 (#8530)
Infra: https://github.com/compiler-explorer/infra/pull/2012.

Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
gh-17470
2026-03-06 08:44:23 +01:00
dependabot[bot]
370fdea8f8 Bump immutable from 5.1.4 to 5.1.5 (#8538) gh-17469 2026-03-05 11:53:13 +01:00
dependabot[bot]
acbdcded42 Bump svgo from 4.0.0 to 4.0.1 (#8539) gh-17468 2026-03-05 11:52:50 +01:00
Eczbek
e554f4a974 Add library rsl-util (#8541)
Also see https://github.com/compiler-explorer/infra/pull/2017
gh-17467
2026-03-04 21:47:39 -06:00
Matt Godbolt (bot acct)
e5fdc3be9b feat: add 'Compile' option to Ctrl+S behaviour setting (#8537)
Fixes #8536.

Adds a new **Compile** option to the *Ctrl+S behaviour* selector in
Settings (alongside the existing Save / Short Link / Reformat / Do
nothing options).

When selected, Ctrl+S behaves identically to Ctrl+Enter: it calls
`maybeEmitChange()` and, if compile-on-change is disabled, explicitly
fires `requestCompilation`.

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17458
2026-03-04 14:27:09 -05:00
Marc Auberer
631b0f10e9 [Spice] Add version 0.24.4 (#8523)
Infra PR: https://github.com/compiler-explorer/infra/pull/2003
gh-17439
2026-02-27 21:29:48 -05:00
Thomas Padioleau
0e9c3c86dc Update Kokkos library versions in properties file (#8525)
Related to https://github.com/compiler-explorer/infra/pull/2005.
gh-17438
2026-02-27 21:28:35 -05:00
Cliff Burdick
6b4451b881 Add CCCL 3.3.0 (#8527) gh-17437 2026-02-27 21:27:58 -05:00
Alastair Murray
d4aef5fb1e Update Mojo default example to compile with nightly and 0.26.1.0 (#8526)
Recent compilers do not allow parametric functions to be exported, so
remove the keyword. Note that this means the function now gets inlined
with default optimization levels.
gh-17436
2026-02-27 21:18:09 -05:00
Patrick Quist
305156c0a4 fix: allow plus signs in property key names and values (#8485)
## Summary
- Fixes the property parser regex to allow `+` in key names (e.g.
`abc+def=etc`)
- The regex from #8387 used `[^=+]+` for key matching, which excluded
`+` from key names entirely
- Changed to a lazy `.+?` match so `+` is only treated as the `+=`
operator when immediately before `=`

This is a small targeted fix and does not address all edge cases with
the `+=` syntax.

## Test plan
- [x] Added test: `abc+def=etc` correctly sets key `abc+def` to `etc`
- [x] Added test: `abc=def+ghi` correctly sets key `abc` to `def+ghi`
- [x] All existing `+=` append tests continue to pass

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

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
gh-17435
2026-02-27 21:10:47 -05:00
Jonathan Coates
e21749ea2b Update labelReference regex to match LLVM IR syntax (#8491)
A `catchswitch` instruction has the form:

    catchswitch within none [label %catch.start] unwind to caller

The LLVM IR parser then extracts the labels out of this expression.
However, the regex is too greedy, and (incorrectly) matches
`%catch.start]`. We update the regex to match what LLVM's lexer does.
The [language reference](https://llvm.org/docs/LangRef.html#identifiers)
states that quoted identifiers can include `\xx` escapes, however as far
as I can tell [that is *not*
true](413cafa462/llvm/lib/AsmParser/LLLexer.cpp (L391-L421)),
so I have elected not to support them.

For the following program (targetting WASM, compiled with
`-fwasm-exceptions`):

```c
void bar(int x);

void foo() {
    try {
        bar(1);
    } catch(int x) {
    }
}
```

**Before:**

<img width="1492" height="411" alt="A CFG of the above program. The
catch block is entirely disconnected from the main part of the graph."
src="https://github.com/user-attachments/assets/ad9038cc-f372-4109-bc25-328537bcea88"
/>

**After:**

<img width="1286" height="639" alt="A CFG of the above program. The
catch block is now correctly connected to the rest of the graph."
src="https://github.com/user-attachments/assets/27cce7b3-dd67-4c1c-928c-93f7eaa53fa2"
/>
gh-17434
2026-02-27 20:59:37 -05:00
someone12469
2dab371c98 Add clang fork for P3822 (conditional noexcept in requirements) (#8494)
see also https://github.com/compiler-explorer/clang-builder/pull/104,
https://github.com/compiler-explorer/compiler-workflows/pull/54,
https://github.com/compiler-explorer/infra/pull/1984
gh-17433
2026-02-27 20:52:52 -05:00
Blake Ledden
05f60761ad Remove unused AsmResultLink type and links field (#8365)
The `links` field in `ParsedAsmResultLine` and the `AsmResultLink` type
have been unused since 2019 when clickable address links were replaced
by the labels system. This just removes the dead code.

Closes #8251
gh-17432
2026-02-27 20:49:32 -05:00
Marc Auberer
1f58adcdc1 LLVM + Clang 22.1.0 (#8524)
Make the newly released LLVM and Clang 22.1.0 available in Compiler
Explorer

Infra PR: https://github.com/compiler-explorer/infra/pull/2004
gh-17431
2026-02-28 00:34:31 +01:00
Matt Godbolt (bot acct)
b35398e471 Fix nasm default output format to elf64 (#8502)
Fixes #8273

The default NASM output format was `elf` (32-bit ELF), causing a
spurious `64-bit unsigned relocation zero-extended from 32 bits
[-w+zext-reloc]` warning when using 64-bit addressing (which is the
common case on CE's x86-64 infrastructure).

Changed the default to `elf64`. Users who explicitly need 32-bit ELF
output can still pass `-felf` to override.

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17407
2026-02-23 07:17:25 -06:00
Partouf
9ae16f889f go fix on large asm output gh-17406 2026-02-23 14:02:44 +01:00
Matt Godbolt (bot acct)
20505fba5a Filter NVCC fatbinData label from assembly output (#8506)
*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

Closes #5178

## Problem

NVCC embeds the CUDA fat binary blob in the host-side x86 assembly
inside a `#APP`/`#NO_APP` inline-assembly block, under a label called
`fatbinData`. In a realistic kernel this can be 100+ lines of `.quad`
hex values — a wall of noise before any user-readable code.

Example: https://godbolt.org/z/W3YMcq8oY

## Fix

Per-compiler pre-processing step in `NvccCompiler.processAsm()`: before
the host assembly reaches the ASM parser, any `#APP`/`#NO_APP` block
containing a `.nv_fatbin` section is stripped out entirely.

- Only `.nv_fatbin` blocks are removed; genuine user inline-assembly
blocks (which also use `#APP`/`#NO_APP` but without `.nv_fatbin`) are
left intact.
- Intentionally NVCC-specific — no changes to the base `AsmParser`, no
false-positive risk for other compilers.
- Stripping happens before `findUsedLabels` runs, so `fatbinData`
naturally disappears as unreferenced without any special-casing in the
parser's label-filtering logic.
- Gated on the existing Labels filter: with no filters active everything
remains visible; with Labels on the blob disappears.

## Testing

**New compiler unit tests** (`test/compilers/nvcc-tests.ts`):
- Strips `#APP`/`#NO_APP` blocks containing `.nv_fatbin`
- Preserves `#APP`/`#NO_APP` blocks without `.nv_fatbin` (user inline
asm)
- Handles multiple mixed blocks correctly
- No-op when no `#APP` blocks present
- Gracefully handles malformed unclosed blocks

**New parser filter-case**
(`test/filters-cases/nvcc-x86-host-example.asm`): representative NVCC
12.0 host assembly (real 15-line fat binary, boilerplate functions,
`.nvFatBinSegment` section) with nine filter-combination snapshots
documenting parser behaviour in isolation. These correctly show that the
**base parser itself does not filter `fatbinData`** — that's the
compiler pre-processor's job.

All 767 tests pass.

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17405
2026-02-22 19:46:36 -06:00
Mosè Giordano
8b73b405a0 Add julia v1.12.5 (#8507)
Companion PR to https://github.com/compiler-explorer/infra/pull/1987.
This is to celebrate #8503 😃
gh-17404
2026-02-22 18:36:39 -06:00
Saagar Jha
30ca56cd2d Centralize CORS handling for /api routes (#8504)
This fixes some APIs that were failing due to CORS checks since the
default handler would not respond to OPTIONS preflight requests from the
browser.
gh-17392
2026-02-22 17:29:21 -06:00
Matt Godbolt (bot acct)
54572dfa4d Add LLVM IR filters for declarations and library function thunks (#8503)
Closes #6319
Closes #6320

Adds two new opt-in filter checkboxes to the LLVM IR view's **Filters**
dropdown:

### Hide Declarations (off by default)
Filters external function declaration lines (lines starting with
`declare`). These are forward declarations of external functions and are
often noise when focusing on user code.

**Off by default** — as noted in #6319, `declare` lines are part of
valid IR and are needed when copying output into other tools such as
`opt`, `llc`, `alive2`, etc.

### Hide Library Functions (off by default)
Filters compiler-generated library function thunks — specifically
function definitions whose name matches patterns like `@jfptr_*` (used
by Julia). These are boilerplate wrapper functions that aren't useful
when reading IR.

**Off by default** for the same reason — these are real function
definitions in the IR.

Both filters follow the same pattern as existing IR filters (debug info,
metadata, attributes, comments). Unit tests added in
`llvm-ir-parser-tests.ts` covering filter-on, filter-off, and
preservation of unaffected lines.

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17391
2026-02-22 17:25:36 -06:00
Steve
17d1898b3a Add support for additional compiler options in .NET compilers (#8497)
Today we only support passing options to the codegen backend, but not
the compiler that produces IL.

This change adds a new pseudo-option `-compopt`/`--compiler-options` so
that options follow after this pseudo-option can be passed to the
compiler that produces IL.
gh-17390
2026-02-22 17:09:28 -06:00
Steve
ccafabc85a Bump .NET versions (#8496)
Bump .NET version in favor of
https://github.com/compiler-explorer/infra/pull/1971
gh-17389
2026-02-22 17:08:31 -06:00
Matt Godbolt (bot acct)
ab95e8a644 Fix ex-WINE MSVC compiler sort order (#8500)
Fixes #8006

The ex-WINE compilers were appearing at the **top** of the MSVC compiler
dropdown instead of the bottom, because they used the MSVC compiler
version (`19.xx`) for their semver while native MSVC compilers use the
toolset version (`14.xx`). Since `19.xx > 14.xx`, they sorted as
"newest".

This aligns the ex-WINE semvers to the `14.xx` toolset versioning:
- `19.00.24210` → `14.00.24210` (VS 2015 Update 3)
- `19.10.25017` → `14.10.25017` (VS 2017 RTM)
- `19.14.26423` → `14.14.26423` (VS 2017 15.7)

These now sort correctly before `14.20` (VS 2019 16.0), placing the
ex-WINE compilers at the bottom of the list where they belong.

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17365
2026-02-21 14:05:51 -06:00
Matt Godbolt (bot acct)
d05e74eb1d Update llvmDisassembler to clang 19.1.0 (#8498)
Fixes #7493

OneAPI >= 2025.0.0 produces SPIR-V bitcode that clang 18.1.0's
`llvm-dis` can't read, resulting in `Invalid record` errors in the
device viewer. Updating the global `llvmDisassembler` path from clang
18.1.0 to 19.1.0 resolves this while remaining backwards compatible with
older bitcode formats.

Updated in all three properties files:
- `c++.amazon.properties`
- `c.amazon.properties`
- `objc++.amazon.properties`

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17360
2026-02-21 12:39:23 -06:00
Partouf
e6f50e59a7 nsjail documentation gh-17351 2026-02-20 12:54:12 +01:00
Matt Godbolt (bot acct)
83b241ae80 feat(cypress): executor, GCC dump, preprocessor, opt remarks, and shortcut tests (#8489)
## Summary

14 new Cypress E2E tests across 5 new spec files, plus shared helpers
extracted to utils.ts.

### New test files

| File | Tests | What it covers |
|------|-------|----------------|
| `execute.cy.ts` | 4 | Executor pane: open, stdout, stderr, non-zero
exit codes |
| `gccdump.cy.ts` | 3 | GCC Tree/RTL dump: open, pass picker, dump
content |
| `pp-view.cy.ts` | 4 | Preprocessor: open, `#define` expansion,
`#include` macro expansion, source change updates |
| `opt-view.cy.ts` | 2 | Optimisation remarks: open, shows remarks with
`-O2` |
| `shortcuts.cy.ts` | 1 | Ctrl+Enter triggers recompilation |

### Shared helpers added to utils.ts

- `openPaneFromCompiler(buttonId)` — generic helper for any compiler
toolbar pane button
- `openExecutor()`, `openGccDump()`, `openPreprocessor()`,
`openOptRemarks()` — convenience wrappers

### Result

- Total test count: 82 (68 existing + 14 new)
- All passing locally and should pass on CI (uses only `gdefault`)

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

🤖 Generated by LLM (Claude, via OpenClaw)

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17335
2026-02-18 20:39:27 -06:00
Matt Godbolt (bot acct)
0f2928f027 refactor(cypress): extract shared helpers to utils.ts (#8488)
## Summary

Refactors the Cypress test suite to extract common helpers into
`cypress/support/utils.ts`, making it simpler to add new tests.

### Changes

- **Shared helpers extracted to utils.ts**: `findPane()`,
`sourceEditor()`, `compilerOutput()`, `compilerPane()`,
`waitForEditors()`, `setupAndWaitForCompilation()`, `visitPage()`, and
many more
- **New workflow helpers**: `addCompilerFromEditor()`,
`addCompilerFromCompilerPane()`, `openConformanceView()`,
`addConformanceCompiler()`, `openDiffView()`, `allCompilerTabs()`,
`compilerEditorFromTab()`, `compilerPaneFromTab()`,
`lastCompilerContent()`
- **Template literals**: Replaced `.join('\n')` array patterns with
backtick multiline strings
- **Bug fix**: `frontend.cy.ts` hardcoded `localhost:10240` instead of
using `baseUrl` — now uses relative URL
- **Deprecated**: Marked `clearAllIntercepts()` as deprecated with
explanation of why the name is misleading

### Result

- Net reduction of ~110 lines across test files
- All 68 tests pass (7 spec files)
- Adding a new test now typically needs just 3-4 lines of well-named
helper calls
- No changes to test behaviour or coverage

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

🤖 Generated by LLM (Claude, via OpenClaw)

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17326
2026-02-18 13:34:46 -05:00
Matt Godbolt (bot acct)
fee671eb0c Cypress E2E tests: conformance view, diff view, multi-compiler (#8484)
## Summary

Adds 11 new Cypress E2E tests across 3 new test files, covering
conformance view, diff view, and multi-compiler pane workflows.

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

## New Test Files

### `conformance.cy.ts` (5 tests)
- Opens conformance view from editor dropdown
- Verifies pass indicator (fa-check-circle) for clean compilation
- Verifies fail indicator (fa-times-circle) for static_assert failure
- Source change updates pass/fail status dynamically
- Multiple compilers with different -D flags showing pass + fail
simultaneously

### `multi-compiler.cy.ts` (4 tests)
- Adds second compiler pane from editor dropdown
- Different -D flags produce different output in separate panes
- Cloning a compiler inherits its options
- Source change triggers recompilation in all panes

### `diff.cy.ts` (2 tests)
- Opens diff view from the Add menu
- Verifies diff content with two compiler panes (auto-selected)

## Approach

All tests use only gdefault (the single compiler available on CI
runners), using preprocessor conditionals (#ifdef) with -D flags to
produce different compilation outputs. This avoids any dependency on
specific compiler versions being installed.

## Test Duration

~55 seconds for all 11 new tests (headless Chrome).

## Follows from

PR #8478 (merged) which added the initial compile workflow tests.

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17319
2026-02-18 07:06:57 -06:00
Matt Godbolt (bot acct)
ad480589d2 WIP: Cypress E2E tests for core compilation workflow (#8478)
*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

## What

Adds Cypress E2E tests for the core CE workflow — writing code, seeing
assembly output, and interacting with panes.

## Tests (14 total)

**Basic compilation (2)**
- Default code compiles on load and assembly appears
- Recompilation when source code changes

**Source-assembly line linking (2)**
- Hover over source → assembly lines highlight
- Hover over assembly → source lines highlight

**Compiler options (1)**
- `-DCYPRESS_TEST` toggles `#ifdef` branch correctly

**Output filters (2)**
- Toggling directives filter off shows `.cfi_startproc`
- Toggling comments filter off shows `GNU C++` comment lines

**Compilation errors (1)**
- Invalid code shows "Compilation failed" message

**Output pane (3)**
- Valid code → "Compiler returned: 0"
- Invalid code → `error:` messages with non-zero return
- Undeclared identifier appears in error output

**Editor interactions (3)**
- Add a second source editor
- Add a second compiler
- Both compilers produce assembly independently

## Utilities added

- `monacoEditorTextShouldContain` / `monacoEditorTextShouldNotContain` —
retrying assertions that handle Monaco's non-breaking space (U+00A0)
rendering
- `getMonacoEditorText` — normalised text extraction from Monaco
view-lines
- `findPane(titleMatch)` — robust GoldenLayout pane discovery via tab
titles

---
🤖 Generated by LLM (Claude, via OpenClaw)

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17309
2026-02-16 21:04:18 -06:00
Partouf
328934696d fix gh-17306 2026-02-17 03:34:57 +01:00
Partouf
e3fdd58866 Add ICU library to C++ configuration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
gh-17299
2026-02-17 02:46:06 +01:00
Matt Godbolt (bot acct)
e0e7647e10 fix: add node_modules to cypress typeRoots (#8482)
Cypress bundles its types at `node_modules/cypress/types/` rather than
in `@types`, so the `typeRoots` array in `cypress/tsconfig.json` needs
to include `../node_modules` in addition to `../node_modules/@types`.

Without this, `npx tsc -p cypress/tsconfig.json --noEmit` fails with:
```
TS2688: Cannot find type definition file for 'cypress'
```

Fixes #4831

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17298
2026-02-16 19:42:54 -06:00
Matt Godbolt
624c5c026e Update npm dependencies and fix tom-select type import (#8477)
Inline the escape_html type instead of importing from tom-select's
internal dist/types/ path, which was removed in v2.5.1. The type is just
(str: string) => string, so there's no need to depend on the package's
internal file layout.

Also fix missing iframe title attributes in test/embedding.html.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
gh-17267 gh-17287
2026-02-16 15:12:07 -06:00
Matt Godbolt
a11ae0dd3a Update jQuery to v4.0.0 (#8402)
## Summary
- Updates jQuery from 3.7.1 to 4.0.0
- Adds `$.trim` polyfill for golden-layout compatibility (golden-layout
1.5.9 uses the removed `$.trim()` API and has an incorrectly vague
`"jquery": "*"` dependency)

Manually tested locally to verify golden-layout works correctly with the
polyfill.

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
gh-17262
2026-02-16 14:07:57 -06:00
Erik Hemming
97233932f1 Add m68k asm parser to handle | comment character (#8469)
m68k GAS uses `|` as the comment character instead of `#`.
The base asm parser doesn't recognise this, so inline asm source
location markers (e.g. `| 2 "file.c" 1`) leak through into the output
instead of being filtered.

Repro on godbolt.org: https://godbolt.org/z/vYneWc8Tf

---------

Co-authored-by: Patrick Quist <partouf@gmail.com>
gh-17261
2026-02-16 14:01:37 -06:00
Matt Godbolt (bot acct)
f692962005 docs: note Go convention for cross-arch point release updates (#8475)
Some languages like Go update cross-architecture compiler IDs in-place
when new patch releases come out (e.g. `386_gl124` moves from 1.24.2 to
1.24.13). This documents it as an accepted exception to the general rule
that compiler IDs must not change meaning.

Discovered while reviewing #8462.

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

🤖 Generated by LLM (Claude, via OpenClaw)

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17260
2026-02-16 13:58:44 -06:00
Matt Godbolt (bot acct)
3c873d8ff0 fix: add aliases for replaced Go amd64 compiler IDs (#8476)
Adds `alias` entries for Go amd64 compiler IDs that were replaced in
previous version-bump PRs (#7535, #8462). This ensures old shared links
using these IDs still resolve:

- `gl1210` → `gl12113` (Go 1.21.0 → 1.21.13)
- `gl1221` → `gl12212` (Go 1.22.1 → 1.22.12)
- `gl1232` → `gl1238` (Go 1.23.2 → 1.23.8)
- `gl1242` → `gl12413` (Go 1.24.2 → 1.24.13)
- `gl1254` → `gl1257` (Go 1.25.4 → 1.25.7)

*(I'm Molty, an AI assistant acting on behalf of @mattgodbolt)*

🤖 Generated by LLM (Claude, via OpenClaw)

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17259
2026-02-16 13:54:49 -06:00
Dmitriy Matrenichev
2a636a3570 Add Go 1.26.0 (#8462)
Just like #7057 but for Go 1.26.0

Depends on https://github.com/compiler-explorer/infra/pull/1969
gh-17254
2026-02-16 13:47:47 -06:00
Tony Cook
be4294ce2b update perl "compiler" and library configurations (#8464)
Requires https://github.com/compiler-explorer/infra/pull/1970
which requires
https://github.com/compiler-explorer/misc-builder/pull/124
and builds of perl versions 5.8.9, 5.38.5 and 5.42.0
gh-17247
2026-02-16 12:07:04 -06:00
Spencer Fricke
2af0449016 Add Slang 2026.2 (#8470)
To go with https://github.com/compiler-explorer/infra/pull/1973
gh-17246
2026-02-16 11:59:09 -06:00
averne
830f792fca Add clang for ROCm 7.0.2-7.2.0 (#8471)
Related: https://github.com/compiler-explorer/infra/pull/1974

---------

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17245
2026-02-16 11:58:24 -06:00
Matt Godbolt (bot acct)
cef3a56049 docs: document compiler ID stability rules (#8474)
Adds a section to `AddingACompiler.md` explaining that compiler IDs are
permanent and must not be removed or reassigned. This is a common
mistake in version-bump PRs where contributors replace existing entries
with newer patch releases instead of adding alongside them.

The new section covers:
- Why IDs must be stable (shortlinks, saved sessions, embeds)
- The correct approach when adding newer versions (add, don't replace)
- Using `alias` as a fallback when a compiler genuinely can't be kept
- The same rule applying to infra install targets
- The rare exception for lesser-used languages with involved maintainers

🤖 Generated by LLM (Claude, via OpenClaw)

Co-authored-by: mattgodbolt-molty <mattgodbolt-molty@users.noreply.github.com>
gh-17243
2026-02-16 10:53:20 -06:00
Cliff Burdick
da8059fa84 Add CCCL 3.2.1 (#8468) gh-17242 2026-02-16 10:52:55 -06:00
dependabot[bot]
7d0d75d544 Bump cryptography from 46.0.1 to 46.0.5 in /etc/scripts/docenizers (#8463)
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.1
to 46.0.5.
<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>46.0.5 - 2026-02-10</p>
<pre><code>
* An attacker could create a malicious public key that reveals portions
of your
private key when using certain uncommon elliptic curves (binary curves).
This version now includes additional security checks to prevent this
attack.
This issue only affects binary elliptic curves, which are rarely used in
real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab
and
Atuin Automated Vulnerability Discovery Engine** for reporting the
issue.
  **CVE-2026-26007**
* Support for ``SECT*`` binary elliptic curves is deprecated and will be
  removed in the next release.
<p>.. v46-0-4:</p>
<p>46.0.4 - 2026-01-27<br />
</code></pre></p>
<ul>
<li><code>Dropped support for win_arm64 wheels</code>_.</li>
<li>Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL
3.5.5.</li>
</ul>
<p>.. _v46-0-3:</p>
<p>46.0.3 - 2025-10-15</p>
<pre><code>
* Fixed compilation when using LibreSSL 4.2.0.
<p>.. _v46-0-2:</p>
<p>46.0.2 - 2025-09-30<br />
</code></pre></p>
<ul>
<li>Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL
3.5.4.</li>
</ul>
<p>.. _v46-0-1:</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="06e120e682"><code>06e120e</code></a>
bump version for 46.0.5 release (<a
href="https://redirect.github.com/pyca/cryptography/issues/14289">#14289</a>)</li>
<li><a
href="0eebb9dbb6"><code>0eebb9d</code></a>
EC check key on cofactor &gt; 1 (<a
href="https://redirect.github.com/pyca/cryptography/issues/14287">#14287</a>)</li>
<li><a
href="bedf6e186b"><code>bedf6e1</code></a>
fix openssl version on 46 branch (<a
href="https://redirect.github.com/pyca/cryptography/issues/14220">#14220</a>)</li>
<li><a
href="e6f44fc8e6"><code>e6f44fc</code></a>
bump for 46.0.4 and drop win arm64 due to CI issues (<a
href="https://redirect.github.com/pyca/cryptography/issues/14217">#14217</a>)</li>
<li><a
href="c0af4dd7b7"><code>c0af4dd</code></a>
release 46.0.3 (<a
href="https://redirect.github.com/pyca/cryptography/issues/13681">#13681</a>)</li>
<li><a
href="99efe5ad15"><code>99efe5a</code></a>
bump version for 46.0.2 (<a
href="https://redirect.github.com/pyca/cryptography/issues/13531">#13531</a>)</li>
<li>See full diff in <a
href="https://github.com/pyca/cryptography/compare/46.0.1...46.0.5">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.1&new-version=46.0.5)](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>
2026-02-16 10:46:54 -06:00
narpfel
c4c0ad4c8b [llvm-ir]: Filter empty metadata nodes (#8473)
LLVM IR specialised metadata nodes can have no arguments, e. g.
[`DIAssignID`](https://llvm.org/docs/LangRef.html#diassignid), which is
commonly emitted by `clang` (https://godbolt.org/z/rb19oGMoT).

These were not filtered because the regex required at least one
character in the field list.
gh-17226
2026-02-16 10:38:21 -06:00
Christopher Erleigh
08ba65abd7 fix: use llvm-objdump for cross-architecture binary disassembly (#8460)
## Summary

- When multiarch compilers (Rust, Zig, etc.) target a non-host
architecture (e.g. `--target=aarch64-unknown-linux-gnu`), GNU `objdump`
fails because it cannot disassemble foreign-arch binaries, producing
`<No output: objdump returned 1>`
- Adds a `llvmObjdumper` config property that switches to `llvm-objdump`
when the compilation targets a non-x86 instruction set, since
`llvm-objdump` can auto-detect the target architecture from the binary
itself
- All multiarch compilers benefit from this generically via
`BaseCompiler.getObjdumperForResult()` — no per-compiler special-casing
needed

## Changes

- **`types/compiler.interfaces.ts`** — Add `llvmObjdumper` to
`CompilerInfo`
- **`lib/compiler-finder.ts`** — Read `llvmObjdumper` from config
- **`lib/base-compiler.ts`** — Add `getObjdumperForResult()` method and
refactor `objdump()` to use it
- **`etc/config/rust.defaults.properties`** — Set
`llvmObjdumper=llvm-objdump`
- **`etc/config/zig.defaults.properties`** — Set
`llvmObjdumper=llvm-objdump`
- **`test/objdumper-tests.ts`** — Add 6 tests for cross-architecture
objdumper selection

## Test plan

- [x] `npm run ts-check` passes
- [x] `npm run lint` passes
- [x] All related tests pass (301 tests across 27 files)
- [x] Smoke test: configure a Rust compiler with
`--target=aarch64-unknown-linux-gnu` and verify `llvm-objdump` is used
instead of GNU `objdump`

Fixes #5593
gh-17225
2026-02-16 10:35:07 -06:00
Partouf
f50b519ef5 Expand IDE mode docs with Ctrl+S, tab behaviour, and compiler notes
Add sections covering Ctrl+S file inclusion behaviour (including the
filename dialog), tab stacking in IDE mode, CMake language requirements
and CMakeLists.txt prerequisite, and a note about adding compilers from
the tree view.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
gh-17222
2026-02-14 19:26:23 +01:00