I keep getting bug reports like this: "During casting, sometimes everything got extremely slow and it became almost impossible to type. It made me worry I was going to lose my work, since it's hard to even select the code when it's stuck like this."
I never see it, but maybe my computer is too fast? I don't know. I can probably fix it anyway, although if anyone who does see these kinds of problems wanted to dig into it with the Chrome profiler or something, that'd be awesome.
One thought: move Aether's linting and parsing and such into a web worker? We're going to all this trouble to avoid blocking the main thread by linting and parsing and transpiling too often, but we could do it more often and not have performance problems if we did it in the background instead.
I'm now starting work on this issue.
I've got background linting done now, currently moving hasChangedSignificantly onto a worker to not have it block the UI. Should take a bit of time to implement, but improve editor performance for large programs quite a bit.