mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2026-05-16 03:11:14 -04:00
## Summary Three related fixes prompted by driving the deployed MCP endpoint after #8644 / #8685 merged: 1. **`list_libraries` match also searches version strings.** The natural LLM query "find Boost 1.88" returned zero results — `list_libraries({language:"c++", match:"boost 1.88"})` only matched against `{id, name}`, so the version token never matched anything. 2. **HPPA + Go cross-compiler `instructionSet` retags.** Discovered via `list_compilers(match="gcc 16", instructionSet="amd64")` returning *only* `hppag1610` (HPPA cross-compiler) and missing plain `g161` (x86-64 GCC). Two layered causes — HPPA had no entry in `InstructionSetsList`, so the heuristic in `lib/instructionsets.ts` defaulted HPPA cross-compilers to `amd64`; and 12 Go cross-compiler groups (`386gl`, `arm32gl`, `arm64gl`, `mips*gl`, `ppc64*gl`, `riscvgl`, `s390xgl`, `wasmgl`) had never been tagged at all. 3. **Defensive bucketing in MCP `pickLatest`.** Belt-and-braces fix: bucket key is now `(lang, instructionSet, group)` so different compiler families that happen to share an arch tag can't fight for the same `latestPerMajor` slot. ## Changes - `lib/mcp/tools/libraries.ts` — extend `applyMatch` haystack to include `versions[].version` (human form, e.g. `"1.88.0"`) and `versions[].id` (e.g. `"188"`). - `lib/mcp/tools/compilers.ts` — `pickLatest` bucket key now includes `c.group`. - `types/instructionsets.ts` + `lib/instructionsets.ts` — new `'hppa'` entry. - `etc/config/{ada,c++,c,d,fortran,gimple,objc++,objc}.amazon.properties` — `group.<gnathppa|gcchppa|cgcchppa|gdchppa|gimplehppa|objcppgcchppa|objchppa>.instructionSet=hppa`. - `etc/config/go.amazon.properties` — explicit `instructionSet=` for all 13 Go arch groups (12 cross + amd64gl for symmetry). - `test/mcp/mcp-tests.ts` — covers the bucketing-by-group case. - `test/instructionsets-tests.ts` — covers the hppa target-string branch. ## Follow-up #8690 — drop the `lib/instructionsets.ts` path-based heuristic entirely in favour of required `instructionSet` properties (the path branch is Amazon-install-specific and silently mistags compilers on any non-Amazon layout). ## Test plan - [x] `npm run test -- --run mcp` — passes (existing + 2 new) - [x] `npm run test -- --run instructionsets` — passes (existing + 1 new) - [x] `npm run test:props` — 90/90 pass - [x] `make pre-commit` — exits 0 - [ ] Drive the staging endpoint with `list_libraries({language:"c++", match:"boost 1.88"})` and confirm Boost is returned with its versions. - [ ] Drive the staging endpoint with `list_compilers({match:"gcc 16", instructionSet:"amd64", latestPerMajor:true})` and confirm `g161` (x86-64) appears and `hppag1610` does not. 🤖 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.7 (1M context) <noreply@anthropic.com>