This is probably the biggest single change to the Terminal since release. Being able to tear-out tabs required a pretty substantial rewrite of the codebase - one that's been underway for years.
We'd been actually going in a totally different direction with tab-tear out until just late last year. A colleague pointed out that one of the assumptions we had in our design (that you couldn't have multiple XAML islands in the same process on different threads) was actually _wrong_. We could just create all the Terminal HWNDs in the same process. Fortunately, we were able to pivot a lot of the earlier refactoring and quickly whip up a new solution that used a single Terminal process for all hwnds.
This had all sorts of beneficial side effects - like being able to leave the Terminal running in the background, without any windows, so that global hotkeys would work without an open terminal window. Startup perf is a little better for warm windows (when the Terminal is already running), and there's quite a lot less IPC going on. It's just a lot cleaner.
There's a bunch of other big work that went in this release - a huge rewrite of environment variable handling which whould enable hot-reloading of env vars for new tabs. Setting env vars in the settings per-profile. A massive renderer rewrite to make it even faster, enable overhangs, and better scale complex glyphs. A huge amount of startup perf optimizations. A context menu on right-click (as opposed to just pasting).
We'd been actually going in a totally different direction with tab-tear out until just late last year. A colleague pointed out that one of the assumptions we had in our design (that you couldn't have multiple XAML islands in the same process on different threads) was actually _wrong_. We could just create all the Terminal HWNDs in the same process. Fortunately, we were able to pivot a lot of the earlier refactoring and quickly whip up a new solution that used a single Terminal process for all hwnds.
This had all sorts of beneficial side effects - like being able to leave the Terminal running in the background, without any windows, so that global hotkeys would work without an open terminal window. Startup perf is a little better for warm windows (when the Terminal is already running), and there's quite a lot less IPC going on. It's just a lot cleaner.
There's a bunch of other big work that went in this release - a huge rewrite of environment variable handling which whould enable hot-reloading of env vars for new tabs. Setting env vars in the settings per-profile. A massive renderer rewrite to make it even faster, enable overhangs, and better scale complex glyphs. A huge amount of startup perf optimizations. A context menu on right-click (as opposed to just pasting).
It's probably my favorite release we've ever had.