ethereum / solidity

Solidity, the Smart Contract Programming Language
https://soliditylang.org
GNU General Public License v3.0
23.04k stars 5.7k forks source link

Enough Debugging data for tools to switch to via-IR #13720

Open NunoFilipeSantos opened 1 year ago

NunoFilipeSantos commented 1 year ago

What

The via-IR pipeline, especially with enabled optimizer, is hard to process for tools, since it doesn't preserve as many fixed patterns in the bytecode as the legacy pipeline. We want to improve this situation in a forward compatible manner by providing tooling with adequate and sufficient debugging data to reconstruct the relations between Solidity code, Yul code and bytecode.

Why

We consider good tooling support a prerequisite for switching to via-IR by default, which we want to do as soon as possible to reduce our maintenance burden.

How

We initiated a debugging data working group (currently spearheaded by @gnidan and @jtohman), with the goal to get to a consensus among tooling about what debugging information precisely and in which format would be most helpful for tooling. We intend to support this process as much as possible, which will hopefully result in a specification of debugging data, which we will then generate from the compiler.

Tasks

Older issues for consideration

cameel commented 1 year ago

We could add #9590 as one of the subtasks here. Yul ASTs were requested at the debug data meeting at Devcon Bogota and I think it's pretty clear we need them. The format is also clear I think (same as the Solidity ASTs, which we already output). This is a bit we could work on even without waiting for other decisions about debug data.

ekpyron commented 1 year ago

Linking this to https://github.com/ethereum/solidity/issues/12533

NunoFilipeSantos commented 1 year ago

We could add #9590 as one of the subtasks here. Yul ASTs were requested at the debug data meeting at Devcon Bogota and I think it's pretty clear we need them. The format is also clear I think (same as the Solidity ASTs, which we already output). This is a bit we could work on even without waiting for other decisions about debug data.

@ekpyron WDYT? Is this small enough, or are we expanding the scope too much?

ekpyron commented 1 year ago

We'll only actually define the scope here properly after the debugging data working group comes back to us at the end of this quarter depending on the outcome of that.

ekpyron commented 1 year ago

But yes, #9590 likely falls under this.

NunoFilipeSantos commented 1 year ago

Added to the tasklist.

ekpyron commented 1 year ago

Linking https://github.com/ethereum/solidity/issues/11043 as well for consideration.