To conserve memory, we now use byte storage for terminal lines until we encounter a non-ASCII codepoint. At that point, we transparently switch to UTF-32 storage for that one line.
This will allow us to have much better Unicode support. It does incur a memory usage regression which we'll have to optimize to cover.