Hyper 3 is finally out! The primary focus for thisrelease is performance.
Hyper will show a notification when your modules are installed to.hyperplugins. (248,28,229,0.3)' The background color/opacity of the text selection in terminal.
The latest version includes several enhancements that make Hyperreally fast. For those of us who spend a significant amountof time on the command line, this release is a total game changer.
Download Hyper 3 to try it out, and read on to learn more aboutwhat's new.
The Hyper Scape team provides a look into where they are taking the game in the months ahead. September 22 2020 HYPER SCAPE PATCH NOTES V1.2. Hyper Scape Title Update v1.2 features sound optimization, an Xbox One crash fix, and additional debug logs. September 17 2020. Hypertech is a SEMA member company dedicated to supporting the aftermarket distribution system, with innovative products that exceed consumer expectations in performance and quality. Creating consumer demand with emissions legal products for street and off-road that can be sold worldwide, Hypertech products will impact profitability throughout the distribution chain. 29.1k Followers, 305 Following, 765 Posts - See Instagram photos and videos from HYPER-3 (@hyperthree).
Getting There
Looking back on this release, a pleasant surprise has been how littletime it took from 'let's make this thing faster' to'Holy shell! That's fast!'
Below, we visit some of the important changes that were shipped aspart of this release:
WebGL Renderer
The renderer is the piece of code that draws actual pixels on thescreen based on the state of the terminal. The original Hyper rendererwas based on the DOM. While that was a flexible approach thanks toCSS, it was also very slow.
Hyper 2 improved upon this by switching from hterm
toxterm.js
and using its canvas-based renderer. While thatmade Hyper 2 faster, for Hyper 3 we knew it was possible to delivereven faster performance by completely rewriting the renderer with WebGL. By fortunate coincidence, as we were still figuring things out, Daniel Imms (fromxterm.js
and VSCode
fame),just returned from a 'vacation'where he happened to be write a shiny new WebGL renderer.
Isn't the open source community just amazing? We immediately mergedDaniel's branch onto a test fork, and well, it ran circles aroundHyper 2. Thanks Daniel!
We are aware of a few minor limitations with using this renderer (e.gselection is always black-and-white, and you can't have more than 16terminals visible simultaneously) but the performance benefitsoutweigh them. The new renderer is still work-in-progress, so you canexpect further improvements in the near future.
IPC Batching
We also discovered that commands that were very verbose would causeHyper to temporarily choke for a few seconds. For example, runningfind ~
would cause Hyper to:
- Run painfully slow for ~5 seconds (at ~1 frame-per-second)
- Suddenly get faster (at ~15 frames-per-second) and finish printingeverything in ~10 seconds.
Digging within the CPU profile, we noticed that the 'renderer' processwas spending most of its time handling an overwhelming amount ofmessages coming in from the main process.
It is easy to see the difference between Hyper v2 and v3.The pink segments represent the time spent in processing IPC, instead of parsing or rendering.
Electron uses a multi-process architecture where each window runs onits own separate 'renderer' process. Additionally, there's oneNode.js-based 'main' process that communicates directly with theunderlying OS. In order for terminal data to be rendered by Hyper, itmust be passed from the main process to the renderer process using IPC(Inter-Process Communication).
Node's IPC, unfortunately, comes with a non-trivial amount ofoverhead.Messages are sent back and forth as JSON strings,which must be encoded on one side and decoded on the other. Also,receiving data through IPC is an async operation, and thus queued inV8's event loop. Yielding back to the event loop each time afterprocessing small messages makes matters further worse. This repeatedIPC caused thrashing when processing bursts of text (like runningcat
on a large file).
To mitigate this problem, we came up with a simple solution:batch data into larger chunks before sending them to the rendererprocess. IPC batching reduces the number of messages for verbose commandssignificantly and allows the renderer to focus on, well, rendering.
One important consideration was tobatch as much data as possible to reduce the IPC overhead, but notso much that we introduce perceivable latency. With this approach, the renderer process now spends most of its timedoing terminal emulation and rendering instead of processing IPCmessages. The outcome is a much smoother, and faster terminal. Imazing 2 9 3 (10556) download free.
On a similar vein, we are also testing a new approach todecide how much data is parsedbefore yielding to the renderer. The idea is to prevent skipped framesfor a more responsive terminal.
Electron V3
Hyper 3 bumps the underlying Electron from V1 to V3. We also testedV4, but a regression in the Canvas APIforced us to stay on V3. The upgrade brings in newer versions of V8and Node.js, and their corresponding bug fixes.
Faster Startup Time
Hyper 3-d Pinball
Hyper 3 improves startup time by creating the firstpseudoterminal (pty) as soon as possible. Cornerstone 401k login. A pty is a facilityprovided by operating systems to allow programs such as Hyper toemulate terminals.
In previous versions, Hyper would wait for the Chromium window toopen, send an 'I'm ready' message, and only then create thepty. Those two activities take a substantial amount of time, but couldbe done in parallel.
Hyper 3 starts initializing both at the same time. By the time thewindow says 'I'm ready', the pty is already warmed-up and ready to beconsumed. This gives Hyper 3 a decent boost in launch time (about150ms on Linux, potentially better on other platforms).
Emoji Support
If you're on MacOS, you can now pressCommand + Control + Space
to get an emoji popup and jazz up those commit messages.
More Themes on Hyper Store
https://sqqcsu.over-blog.com/2021/01/quarkxpress-14-3-2.html. Since Hyper 2, we have added many new themes into the Hyper Store. This meansit's now even easier to customise your Hyper experience to yourpersonality.
We have a detailed contribution page that explains how you can goabout enlisting your extension. We encourage all contribution and look forward to adding more themesand plugins from the community!
The Road Ahead
Terminals have existed since the 60s, and have been a powerful tool inour workflows. Their flexibility guarantees that they will remainrelevant for years to come. We're in for the long haul.
Hyper 350
Hyper is a new kind of terminal, built on top of web technology, witha focus on extensibility. This opens new possibilities that can makethe CLI experience more productive (and fun)!
We're excited to keep improving Hyper, both in terms of performanceand capabilities — there's a lot to do. Hyper is completely opensource, and we welcome your involvement and contribution.
Acknowledgments
Hyper 30 Turbo Engine
We're genuinely thankful to the open source community. We're notsaying this only because we are building on top of an incredible setof open source libraries, but also because we find the helpful ethosof the community very touching.
Hyper 3am
As soon as the xterm.js
team heard we were working on performance, they jumped right in andhelped us with feedback and several initiatives they had on theirside. We would like to extend huge thanks to Daniel Imms, @Jerch and Benjamin Staneck for theircontribution and feedback.