some users say the viaIR feature is experimental and do not want to use my code because it is not yet mainstream.
The IR pipeline has been considered production ready since 0.8.13, which was released 3.5 years ago.
I think there is some confusion stemming from the fact that it is still not the default pipeline. But that has nothing to do with it being experimental or not. It’s simply not fast enough yet. We need to get the compilation time down to acceptable levels before we do that. The way its implemented also makes it a bit harder for debuggers to track variables on the stack, so it really needs ethdebug. It is superior to the evmasm pipeline in other aspects though. You should really not hold back with switching to it if you can live with those two downsides and it will only get better from here.
We are working on addressing the compilation time - it’s actually our main backend effort right now, in the form of the SSA-CFG stage of the pipeline, which will let us bypass some of the limitations of the current Yul optimizer. There was a presentation about it on Solidity Summit and we will also publish more about it on our blog soon.
BTW, we are also in the process of introducing the --experimental flag to more explicitly delineate what is and isn’t an experimental feature. Hopefully this will prevent misconceptions like this in the future. Though the fact that --via-ir used to be called --experimental-via-ir in past and the experimental part was dropped from it should be a hint too ![]()