Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document output selection #15744

Open
cameel opened this issue Jan 20, 2025 · 0 comments
Open

Document output selection #15744

cameel opened this issue Jan 20, 2025 · 0 comments
Labels
documentation 📖 low effort There is not much implementation work to be done. The task is very easy or tiny. medium impact Default level of impact must have eventually Something we consider essential but not enough to prevent us from releasing Solidity 1.0 without it.

Comments

@cameel
Copy link
Member

cameel commented Jan 20, 2025

Due to performance issues of IR compilation, recently there's been increased interest by frameworks in using outputSelection to select only the actually necessary contracts and outputs. However, this feature and its quirks were never extensively documented, so it's often used inefficiently, with no easy way for users to find out how it was intended to be used.

We really need some docs on:

  • Syntax:
    • The special "*" and "" values and where they can be used.
    • Valid outputs in all input modes (Solidity, Yul, evmasm import).
  • Semantics:
    • Behavior of wildcards, e.g.:
      • Inconsistencies between "*" and "".
      • The fact that "*" does not match experimental outputs (#14363) and a list of such outputs.
      • The fact that patterns like "*.sol" are interpreted literally and only specifically "*" is a wildcard.
    • Behavior of overlapping selections (e.g. "*"/"contract" vs "file.sol"/"*").
    • Other: invalid output names, duplicates, etc.
  • Lazy compilation
    • Which outputs trigger which compilation stages (parsing, analysis, code generation, bytecode generation).
    • Implicit compilation due to bytecode dependencies.
    • How this functionality changed across compiler versions (it's not straightforward to check because an inefficient selection won't usually produce an error).
@cameel cameel added documentation 📖 low effort There is not much implementation work to be done. The task is very easy or tiny. medium impact Default level of impact must have eventually Something we consider essential but not enough to prevent us from releasing Solidity 1.0 without it. labels Jan 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation 📖 low effort There is not much implementation work to be done. The task is very easy or tiny. medium impact Default level of impact must have eventually Something we consider essential but not enough to prevent us from releasing Solidity 1.0 without it.
Projects
None yet
Development

No branches or pull requests

1 participant