Skip to content

v2.4.2—as if she were the last one she thought i'd betray

Compare
Choose a tag to compare
@dankamongmen dankamongmen released this 20 Sep 12:03
· 1514 commits to master since this release
v2.4.2
5269e4b

ok look, this one has an absolute shitton of churn in it. i'd not have released it yet, except a few bugfixes needed to go out. here's the deal: i completely rewrote the input subsystem, which was already complex as hell. it now spawns its own thread so that i can reliably get terminal messages even if you're not looking for input--i have to have my own execution context involved. it is a great improvement overall, but has deep, subtle, platform-specific effects.

Microsoft Windows definitely regresses a bit with this release; I recommend you stick to 2.4.1 on that platform. otherwise, brave souls are encouraged to beat on this, and report any bugs you find.

  • The Rust bindings are no longer included in the main Notcurses repository. They can instead be found here: dankamongmen/libnotcurses-sys
  • Notcurses now supports Unicode 14 (if the underlying system supports it).
  • The input subsystem has been completely rewritten, making it much more robust.
    • NCOPTION_DRAIN_INPUT and NCDIRECT_OPTION_DRAIN_INPUT have been added. Your program ought use them if it doesn't intend to handle input. Failure to do so will result in unnecessary work, and possibly even dropped messages from the console.
    • A distinct input thread is now spawned, ensuring responsive handling of terminal control sequences even when the user isn't actively looking for input.
    • Notcurses can now distinguish between a key press, a repeat, and a key release for some events. NCKEY_RELEASE has been removed. When a mouse button is released, you'll now get the actual button (plus NCTYPE_RELEASE).
    • When input is redirected from a file, notcurses-input will now exit once the entire file is processed. Not coincidentally, NCKEY_EOF now indicates the end of input.
    • notcurses_getvec() allows batched reads from input.
    • Sequences beginning with an Escape character that aren't recognized control sequences are now returned as input.
    • GPM mouse events now account for margins.
    • Mouse clicks in the margins are no longer returned.
  • SIGWINCH and SIGCONT are now masked in the thread that calls notcurses_init(). This is because the addition of a distinct input thread exacerbated the problem of SIGWINCH being delivered to an unexpected thread. While this change will suffice for otherwise single-threaded programs, it remains your responsibility to ensure all threads have masked SIGWINCH and SIGCONT. See the FAQs!
  • A bug was fixed when moving graphics using the Kitty protocol in the presence of margins.
  • A bug was fixed when using multiframe bitmap graphics using the Kitty protocol, and a graphic was drawn over, then restored.
  • A resize callback can now be set for the standard plane.
  • A bug was fixed when characters were erased in a resize callback, thanks @kevinconley19.
  • Notcurses now supports libavformat 59+.
  • Cell blitting in direct mode is now faster and more robust.
  • ncneofetch no longer attempts to run xrandr on Microsoft Windows.
  • ncneofetch properly centers its logo now, a problem most noticeable on macOS.