Files
mattgodbolt-molty d71d9a3258 MCP: address two more Copilot findings
Two more from the latest Copilot review:

- 405 responses for GET/DELETE on /mcp now advertise `Allow: POST,
  OPTIONS` instead of just `POST`. Strictly per RFC 7231 the Allow
  header should list every supported method, and the OPTIONS handler
  is right above. Tests updated.
- Add unit tests for the `lookup_asm_instruction` MCP tool — every
  other MCP tool had tests; this one didn't. Three cases: success
  path (MOV on amd64 returns html/tooltip), case-insensitive opcode
  (lowercase "mov" upper-cased before lookup), and not-found path
  (returns isError with helpful message). The "internal error in
  catch-block" case is harder to set up cleanly because z.enum on
  `availableAsmDocsKeys` already rejects unknown instruction sets at
  validation, so the catch only fires for genuine provider failures
  (nothing easy to mock without surgery).

A third Copilot finding flagged that getSafeHash's new non-object
assert could regress legacy `req.body.config` strings. Discussed and
deliberately not changing the code: in-tree every caller passes an
object (the default-shortener path on godbolt.org sends an object;
the external-shortener path goes through a different handler). The
old behaviour for string config was undefined-ish (silent no-op on
nonce assignment, possible loop, possibly profane stored hash). The
new behaviour fails loudly with a 500 — strictly better. Updated
docs/API.md to make the body-must-be-object expectation explicit on
/api/shortener since the prior docs implied but never stated it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 09:45:33 -05:00
..
2023-07-30 18:06:09 -05:00
2026-05-06 10:38:05 -04:00
2026-05-08 09:45:33 -05:00
2020-05-20 12:55:12 +02:00
2026-03-21 21:21:40 +01:00
2018-02-23 09:19:04 -06:00
2026-02-20 12:54:12 +01:00
2025-08-02 16:20:20 -05:00
2022-05-09 23:13:50 -05:00
2022-12-27 18:46:15 -06:00
2022-05-09 23:13:50 -05:00
2023-02-02 20:44:45 +01:00
2024-03-08 22:25:09 -06:00
2025-10-04 16:37:04 +02:00
2020-10-01 23:40:14 +02:00

How do I ?

This is a how-to guide for the user-interface presented by Compiler Explorer. This doesn't cover the details of how to set up or modify Compiler Explorer for your own needs. For that, please check the documents which already cover topics like:

Fast links:

Change the assembly syntax from Intel

Output, intel and at&t

The option to switch assembly from Intel to AT&T syntax is present in the Output option of each compiler. If enough space is not present, the option also presents itself as the gear symbol (⚙)

Compare the time taken by compilation and networking

Brief overview of UI

This is the symbol that looks like a bar graph (📊). If your compilations are taking long, you can use this to check the time taken by:

  • Networking, JavaScript, waiting for events, etc.
  • Checking the cache and retrieving from it on a cache-hit
  • Compilation (on force compilation or cache-miss)
  • Parsing the generated assembly before presenting it

View intermediate information provided by the compilers

Options for GCC Options for Clang

Though both GCC and Clang create supplementary outputs along with assembly (shown by default), and an executable (created if an executor has been added), the exact nature of the outputs and their formats differ between the compilers.

GCC allows the Tree, IPA, RTL and graph outputs, while Clang allows optimization, AST, IR and graph outputs. Some outputs (e.g. RTL or graph) also have a rich set of options in the UI to enable focussing on a particular function or compiler stage.