Optimize Pretty for infinite ribbon case
For a long time we have known that Pretty
is less than optimal for code generation purposes as we incur some cost due to its layout functionality (which is unnecessary when, e.g., producing assembler for as
).
We should fix this.
One tricky issue is that of the strict length field in the Beside
constructor. @mpickering has recently been working on shrinking the FastString
representation and consequently removing its cached length. This would be fine except it means that codegen performance regresses since it must walk every FastString
we print to compute its length when building a Beside
node. This is wasted effort in the case of codegen.