github xtermjs/xterm.js 2.3.0

latest releases: 5.5.0, 5.4.0, 5.3.0...
7 years ago

Xterm.js 2.3.0 is a big release with a lot of goodies, and some huge strides in performance. This gif demonstrates v2.2.0 vs 2.3.0:

xterm-js-2 3 0-v2

Performance improvements

  • A circular list is now used to manage the buffer, so any new rows that come in once the buffer is full will override rows. This reduces the time spent allocating space for arrays and garbage collecting (#422).
  • Significantly reduce the amount of times the viewport is redrawn and use an animation frame to prevent skipping frames (#438).
  • Introduced a new experimental option useFlowControl which will send the newly implemented XOFF and XON to the pty process to make sure it doesn't get too far ahead of xterm.js (#447). This makes sending signals to the running process far more responsive and prevents lock ups. Note that this option is disabled by default because the popular oh-my-zsh overrides ^S and ^Q by default (see #513).
  • Refactor the parser for performance (#462).
  • Remove comments from the build artifacts (#485).

Features

  • Make alt+←/→ on Mac skip words (#417).
  • Add a disableStdin option that will completely disable all input handling (#453).
  • Add a tabStopWidth option to customize the size of tabs (#497)
  • Support flow control (^S for XOFF, ^Q for XOFF) (#447).
  • Support setting cursor style CSI control sequence (eg. \e[3 q for blinking underline) (#492).
  • Support British, Dutch, Finnish, French, French Canadian, German, Italian, Norwegian/Danish, Spanish, Swedish and Swiss VT100 character sets (#499).

Bug fixes

  • Immediately synchronize the scroll bar when the alt buffer is switched in (#431).
  • Size wide characters to exactly 2 character widths (#440).
  • Apply scrollback and cursorBlink options immediately after the setOption call (#477, #479)
  • Don't drop the selection when only a modifier key is pressed (#482).
  • Fixed the scroll bar state breaking when resizing an invisible terminal (#495).
  • Fixed tab stops not being refreshed correctly after a resize, this made the output of ls wrap incorrectly sometimes (#498).
  • Align several control sequence behavior to act like xterm, see the issue for more details (#500).
  • Fix exception when setting scroll region and calling eraseLeft/eraseRight (#514, #520).
  • Fix issue when resizing hidden terminals with the fit addon (#525)

Internal improvements

  • The migration to TypeScript is coming along nicely with the renderer, parser and majority of the input handling code being converted. tslint is also now run in continuous integration (#411).
  • npm script and package.json improvements (#419, #402)
  • Improved the docker image (#403).
  • Use gulp as the build system (#435).
  • Make the demo support Windows (#442).
  • Fix many of the xterm tests (#500).
  • Bundle top level js and json files in npm so xterm.js can be built after installing from npm (#502).

Don't miss a new xterm.js release

NewReleases is sending notifications on new releases.