argotorg / argotorg/solidity

Requesting implicitly generated outputs

Open
#15,742 0 comments 0 reactions 0 assignees View on GitHub
low effort medium impact should have
Dominant language
C++
Stars
25.7k
Forks
6.2k
Avg merge
2d 19h
Merged PRs (30d)
29

Description

Feature requested by @alcuadrado.

When the compilation of a specific contract is requested, the compiler may implicitly compile other contracts but will not include their outputs unless they were also requested.

This hides information that could potentially be used by frameworks to avoid unnecessary recompilation in some cases. For example when performing incremental compilation for specific files one by one, the framework could notice that it has already received outputs for one of the files it was planning to request and skip it.

While the extra information can always be requested explicitly, it's not always easy for the user to determine which contracts and outputs can be requested without triggering extra unwanted work, because this changes between compiler versions (e.g. recently as a result of #15373) and the fact that the implicit compilation even happens and under which conditions is not documented.

The feature could work either as an option telling the compiler to include all generated outputs, even if not requested or by allowing the user to conditionally request specific contracts/outputs, only if they happen to be generated anyway.

Contributor guide

Open the contributing guide

Research direction

The issue names no files or tests. Start by locating the compiler entry point for requesting a specific contract and the handling of implicitly compiled contracts; compare the proposed include-all and conditional-request approaches. Done means the chosen interface exposes outputs for contracts generated implicitly without triggering unwanted compilation.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.