Commit Graph

32 Commits

Author SHA1 Message Date
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>
2026-02-16 13:58:44 -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>
2026-02-16 10:53:20 -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!
-->
2026-02-02 20:02:38 -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)
2026-02-01 12:31:29 -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>
2026-01-30 19:03:00 -05:00
Matt Godbolt
44e84356c2 Update to add compilers easier 2025-11-10 11:11:29 -06:00
Matt Godbolt
daae03566c Update compiler installation documentation to reference YAML config (#8177)
The "Adding a new compiler to the live site" section was outdated,
referencing deprecated bash scripts in update_compilers/ directory.
Updated to reference the current YAML-based configuration system:
- References ce_install tool instead of old scripts
- Points to bin/yaml/*.yaml configuration files
- Links to infra repo documentation (ce_install_yaml.md,
installing_compilers.md)
- Provides concrete installation command examples
- Updates terminology (non-free instead of install_nonfree_compilers.sh)

Fixes #5937 

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-07 16:28:15 -05:00
Patrick Quist
16af4186ad CE Properties Wizard: Interactive tool for adding compilers (#7934) 2025-10-04 12:11:58 +02:00
Matt Godbolt
54e2dae21f Add comprehensive Configuration.md documentation (#7626)
This PR adds a detailed Configuration.md document that comprehensively
explains the Compiler Explorer configuration system. It covers:

- Configuration file structure and hierarchical loading
- Property types and automatic conversions
- List separators and specialized formats
- Group inheritance and compiler configuration
- Variable substitution mechanisms
- Advanced features like remote compilers and property debugging

Additionally, it updates all related documentation to reference this
central document for configuration details, reducing duplication and
ensuring consistency.

This document will serve as the foundation for future configuration
system improvements by providing clear documentation of the current
implementation.
2025-04-26 18:12:58 -05:00
Stephen Heumann
5a72fa0659 Add support for ORCA/C (#7368)
[ORCA/C](https://github.com/byteworksinc/ORCA-C) is a C compiler that
natively runs on and targets the Apple IIGS. ORCA/C and the programs it
generates can be run on modern Linux systems by using an emulation tool
called [Golden Gate](https://goldengate.gitlab.io).

This adds support for ORCA/C (run via Golden Gate) in Compiler Explorer.
It uses its own assembly format and objdumper (provided by Golden Gate),
so support for those is added. An extra configuration option was also
added to support execution via an emulator, bypassing the usual check
that executables can run natively. Asm docs for the WDC 65C816 processor
were also added.

ORCA/C and Golden Gate are not Free Software, but their rights holders
have given permission for them to be used on Compiler Explorer. Tarballs
for them can be supplied privately. See infra PR:
compiler-explorer/infra#1521

---------

Co-authored-by: Matt Godbolt <matt@godbolt.org>
2025-02-18 10:28:10 -06:00
Patrick Quist
2e197afab8 Doc update (#6172) 2024-02-21 22:08:19 +01:00
Rupert Tombs
83e06b0424 Update .js to .ts in documentation (#5558)
While reading the (excellent) documentation here, I noticed a few stale
references to `.js` files that are now implemented in TypeScript.

* Update `*.js` to `*.ts` in Markdown documentation.

* Update `app.js` to `out/dist/app.js` in
`docs/SystemdSocketActivation.md`.
_I managed to follow these instructions and locally run Compiler
Explorer through socket activation after that change._

* Update `*.js` to `*.ts` in the GitHub labeller config
`.github/labeler.yml`.
_Also correct some misnamed files here. I have checked the new version
with `ls $(grep -E "^ - " .github/labeler.yml | sed "s/ - //g")`. If I
were more familiar here, I would have liked to add a similar check to
the automated tests._

- Sheepishly add myself to the contributors list, despite this being a
tiny find-and-replace change.

---------

Co-authored-by: Jeremy Rifkin <51220084+jeremy-rifkin@users.noreply.github.com>
2023-10-04 20:27:06 -04:00
Matt Godbolt
54a99f6d51 Upgrade all minor versions; format; bump sonar and css minimizer (#4920) 2023-04-01 20:29:06 -05:00
zebrapurring
34bbde880c Support configuring extra arguments for the demangler, objdumper and execution wrapper (#4883)
Some toolchains require passing non-standard, mandatory arguments to the
CLI tools in order to execute them (configuring licenses, selecting CPU
targets, etc.). This PR allows configuring extra command-line arguments
for the demangler, object dumper and the execution wrapper. The version
flag argument has been refactored into an array, so that more than one
argument can be passed, if necessary.

The changes are fully backwards compatible.

Co-authored-by: zebrapurring <>
2023-04-01 23:49:22 +02:00
Jeremy Rifkin
07f37abe76 The War of The Types (#4490) 2023-01-13 19:22:25 -05:00
Marc Poulhiès
69055681d9 Support for compiling to binary object (#3232) 2023-01-11 19:39:25 +01:00
Matt Godbolt
f2c1e0bd31 The Grand Reformat (#3643)
* The Grand Reformat

- everything made prettier...literally
- some tweaks to include a few more files, including documentation
- minor changes to format style
- some tiny `// prettier-ignore` changes to keep a few things the way we like them
- a couple of super minor tweaks to embedded document types to ensure they format correctly
2022-05-09 23:13:50 -05:00
cui fliter
d0c0791bd0 fix some typos (#3509)
* fix some typos

Signed-off-by: cuishuang <imcusg@gmail.com>

* Update AboutLibraryPaths.md

Co-authored-by: Rubén Rincón Blanco <ruben@rinconblanco.es>
2022-04-13 00:12:50 +02:00
stoperro
f726eadde5 * Fixed documentation for executionWrapper to state it's a Path, not Boolean (#2862) 2021-08-22 17:24:18 -05:00
Rubén Rincón Blanco
34e793c4b2 Update AddingACompiler.md 2021-07-29 16:06:29 +02:00
Rubén Rincón Blanco
26a16a254c Clarify that property override between nested properties do not work
@thedmd mentioned over at Discord that it was not properly specified in the docs. Hope this helps
2021-07-29 16:06:11 +02:00
RabsRincon
2306073103 Grammar check pass on docs
Used WebStorm built-in spellchecker and updated the docs where necessary
2021-07-13 12:01:07 +02:00
Matt Godbolt
a6eef13562 Support an executionWrapper per compiler. CC @jfalcou 2021-06-27 17:09:30 -05:00
Matt Godbolt
e66f4c4b57 More master->main. Will do the PP one in the PP branch 2021-02-13 17:27:43 -06:00
Hui
50a2bfb904 Update the Windows setup doc and add doc to setup msvc compiler on linux host 2020-05-26 15:23:47 +01:00
Matt Godbolt
2ff1004a5c Some path fixups post rename of c-e-image->infra 2020-05-14 23:23:25 -05:00
RabsRincon
3e8b2c8122 Add Client .idea scope 2018-03-19 01:41:26 +01:00
RabsRincon
5f7756d145 Format docs 2018-03-04 06:01:44 +01:00
RabsRincon
e5ef04117e Add range-v3 0.3.5 library
Updated docs to reflect `description` key addition
2018-03-04 05:59:40 +01:00
Rubén
e9c22f8bfa Fix table not being displayed properly 2017-11-18 01:47:37 +01:00
RabsRincon
cc74f3b9dd Fix minor errors on the AddingACompiler doc 2017-11-18 01:03:01 +01:00
Matt Godbolt
dc1de9711d Add some documentation on adding compilers 2017-11-14 22:51:31 -06:00