Deprecate and remove wildcard output selection
- Dominant language
- C++
- Stars
- 25.7k
- Forks
- 6.2k
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 29
Description
Closes #14363.
## Abstract
Deprecate the use of `*` to select multiple outputs in `outputSelection` in Standard JSON. Its use should result in a warning and it should eventually be removed.
We may want to replace it with a more descriptive mechanism (e.g. having some special names covering groups of related outputs). If we do keep `*`, it should return to its original meaning of "all outputs".
## Motivation
Standard JSON allows using `*` to select multiple outputs:
```json
"outputSelection": {
"contract.sol": {
"C": ["*"]
}
}
```
This used to mean "all outputs", but this is no longer the case. Experimental and IR outputs (#14363) are excluded. The same will likely happen eventually with ethdebug outputs (#16460).
Even if it did mean "all outputs", its usefulness is questionable. For performance it's always better to pick as few outputs as possible. Having a convenient shortcut for this suggests that requesting them all is sometimes a valid option. This is really mostly the case for debugging/testing and should not be done in production. This fact should be documented (#15744), but the intuitiveness of the design should be considered too.
## Backwards Compatibility
Deprecation and a warning would be non-breaking. Actual removal from Standard JSON might be not only be breaking but even impossible as the format is supposed to be stable even across breaking compiler versions.
Contributor guide
Research direction
No files or tests are named. Start by locating the compiler's Standard JSON outputSelection handling and the existing behavior for "*"; clarify the warning, replacement or removal policy, and compatibility expectations before changing anything, then verify the resulting selection behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, solidity
- Domain
- compilers
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100