The WebGL renderer addon got quite a bit of work done on it this release and is quickly approaching parity with the other renderers. It has also been integrated into VS Code as an experimental option.
From our benchmarks the WebGL renderer renders frames up to 900% faster than the canvas renderer and even more in extreme cases where there are hardware issues with the canvas renderer.
Here's a comparison of example frames rendered using the canvas and webgl renderers (Windows 10, Intel Xeon E5-1620 @ 3.5GHz, AMD FirePro W2100):
Faster rendering also means more frames overall and faster commands. The below is a run of ls -lR
on the same machine inside the VS Code codebase:
Read more about why it's so good in microsoft/vscode#84440 🔥
🚀 Features
-
The new option
minimumContrastRatio
has been added that dynamically changes the foreground color to improve contrast (#2563, #2602) via @Tyriar
📦 API
- The new
onBinary
event enabled support for some mouse report events that cannot be expressed in JS strings (UTF8) (#2566) via @jerch
🐞 Bug fixes
- Only re-render rows that have changed (#2536, #2582) via @Tyriar
- Re-render rows when options have changed (#2550) via @Tyriar
- Force foreground color to be opaque when using a transparent background (#2560) via @ivanwonder
- Include the backtick as a default word separator (#2583) via @Tyriar
📝 Documentation and internal improvements
- Addon dependencies are installed on
yarn
in repo root (#2516) via @jerch - Support disposing of EventEmitters (#2517) via @revanthmahesh
- Support toggling addons in the demo (#2518) via @Tyriar
- Fix several typos in the API .d.ts files (#2521) via @alberto
- Support test coverage reporting (#2525, #2527, #2559) via @Tyriar
- Update to TypeScript 3.7 (#2540) via @Tyriar
- Polish and optimize pipeline (#2541, #2546, #2580) via @Tyriar
- Move remaining renderer parts into the browser layer (#2547) via @Tyriar
- Speed up API tests significantly (#2551, #2553) via @Tyriar
- Prefer non-relative imports in VS Code (#2561) via @Tyriar
- Move windows mode into the common layer (#2569) via @Tyriar
- Direct questions on GitHub to Stack Overflow (#2574) via @Tyriar
- Use
beta.X
format instead ofbetaX
to better follow semver (#2577, #2579) via @Tyriar - Remove unused imports and functions (#2585) via @Tyriar
🎉 New real-world use cases
- Next Tech (#2562) via @AndrewSverdrup
📥 Addons
xterm-addon-search
xterm-addon-webgl
- Implement the dispose method (#2548) via @Tyriar
- Support true color and move off legacy cell structure (#2552, #2557, #2558) via @Tyriar
- Force foreground color to be opaque when using a transparent background (#2560) via @ivanwonder, @Tyriar
- Prevent exceptions when initializing the atlas when the element is not attached (#2575, #2578) via @Tyriar
🤝 Compatible addon versions
- xterm-addon-attach@0.4.0
- xterm-addon-fit@0.3.0
- xterm-addon-search@0.4.0
- xterm-addon-ligatures@0.2.1
- xterm-addon-web-links@0.2.1
- xterm-addon-webgl@0.4.1
🌐 Website
- New article on dealing with encodings (xtermjs/xtermjs.org#95, xtermjs/xtermjs.org#106) via @jerch
- New article on setting up flow control (xtermjs/xtermjs.org#103) via @jerch
- New article on security guidance (xtermjs/xtermjs.org#105) via @jerch
- Make
<h4>
more prominent (xtermjs/xtermjs.org#107) via @Tyriar - Improve API table formatting (xtermjs/xtermjs.org#108, xtermjs/xtermjs.org#109, xtermjs/xtermjs.org#110) via @sdegutis