Proposal: Migrate Compiler Explorer configuration to TOML
Description
This PR adds a proposal document for migrating Compiler Explorer's configuration system from .properties files to TOML format. The document includes:
- Analysis of current configuration limitations
- Benefits of TOML format
- Audit of array usage patterns in current configs
- Phased migration approach
- Conversion examples
- Implementation details
The proposal addresses issues raised in #7150 regarding group property inheritance and #7341 regarding readability of long configuration lines.
Checklist
- [x] Documentation change only (no code changes)
- [x] Issue addressed: #7150, #7341
This is a draft PR to gather feedback on the migration approach before any implementation work begins.
Testing
- The document has been reviewed for technical accuracy
- No code changes in this PR
General thoughts
I think the estimations might be too low, but not by much.
And then the question is; is this really worth 2 months of anyone's time?
Details
- Don't forget that https://github.com/compiler-explorer/infra/blob/main/bin/lib/amazon_properties.py needs changing too, but that's probably the easiest part as it doesn't require a full implementation.
- It might be good to actually get rid of the top level lists of
compilers=[...], libs, tools etc, they're redundant, long and awkward to change when adding a library for example.- The context can be determined from the header of each section.
- Group level compiler list should ofc be kept, otherwise you can't group them. This also means you always need to have a minimum of 1 compiler group, I don't think that would be a bad thing.
- This might be something we can add later as it would require breaking backwards compatibility.
- As a prerequisite for this we should get rid of the links that exist in other prop files and "just" add them in the normal way.
- It has proven to be super confusing for new users that want to try out the amazon prop files. It's annoying even for me to change every time I want a fresh amazon prop file.
- We're not using it anyway as intended; because we can't, because you can't have duplicate compiler id's.
- (example https://github.com/compiler-explorer/compiler-explorer/blob/main/etc/config/c%2B%2B.gpu.properties#L2)
Yeah time is definitely a good question here. Maybe it's good enough of an improvement to fix up some of the annoying bits like no newlines