argotorg / argotorg/solidity

Deprecate and remove wildcard output selection

Open
#16,462 1 comment 0 reactions 0 assignees View on GitHub
breaking change :warning: low effort low impact must have eventually
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.