github dankamongmen/notcurses v2.1.0
v2.1.0—rubberband man

latest releases: v3.0.9, v3.0.8, v3.0.7...
3 years ago

2020-11-28-173220_3440x1420_scrot
Notcurses 2.1.0 sexblitter via notcurses-view in a 343x70 xterm4-terminal, Liberation Mono 11—let's play Global Thermonuclear War.

88 issues were closed since 2.0, including:

  • A notcurses context now supports one or more piles. A pile is a set of ncplanes, ordered on a distinct z-axis. Distinct piles can be freely modified or rendered concurrently. Rendering and rasterization have been broken up; see ncpile_render() and ncpile_rasterize(). Of course, notcurses_render() continues to function, rendering+rasterizing the standard pile (that pile with which the standard plane is associated).
    • Added ncpile_top() and ncpile_bottom()
    • Unless you're using parallelism to achieve the highest level of performance, you probably needn't concern yourself with piles. There is no API/conceptual breakage, only extensions.
  • The powerful new 3x2 "sexblitter" (and plotter) has been added, using Unicode 13's sextant glyphs.
    • Support for these glyphs is not yet robust in all terminal emulators, but we're working on it!
    • It's not yet been set as the default for NCSCALE_STRETCH, but will be soon
  • Added the ncls tool, and a manual page for it.
  • @igo95862 's experimental new Python wrappers are available, though the original ones are still around
    • You are encouraged to migrate to these wrappers! They're much better.
  • cell has been renamed nccell. The former name is retained as an alias.
    • cell is kept for backwards-compatibility only. It will be removed in 3.0.
  • Fixed a longstanding bug in input when pasting long supra-ASCII sequences
  • Fixed a longstanding bug with EGCs containing multiple printing glyphs
  • ncvisual_decode_loop() has been added to support looping through the frames of a video, and back to the beginning.
  • The keller demo was added, providing a slideshow of media blitted using each blitter in sequence.
    • This is the last planned demo. There are now 25 demos in notcurses-demo.
  • notcurses-demo can now run notcurses_debug() in a subwindow on demand.
  • notcurses-demo now graphs frames plots at 2Hz, using Braille
  • Fixed the colors of the birds in the eagle demo
  • notcurses-view now accepts -q to inhibit writing info while rendering.
  • Blitter switching in media res has been fixed in notcurses-view.
  • Quadblitter's rasterization emits fewer bytes of control sequences
  • Quadblitter's rasterization has been substantially optimized time-wise.
  • ncmenu items can be disabled/enabled on the fly.
  • ncmenus now stretch/shrink along with their binding plane
  • ncmenu_offer_input() now handles section shortcuts.
  • ncmenu handles menu items without long descriptions properly now.
  • Added the ncinput_equal() predicate.
  • Small bugfixes were made to tablet-positioning in ncreel.
  • A plane's resize callback function can be set/acquired with ncplane_set_resizecb() and ncplane_resizecb().
  • Resize callbacks are now propagated across ncplane_dup()
  • ncplane_create() is now preferred to ncplane_new(). The ncplane_options struct has eliminated its horiz union, replacing it with int x (previously a member of said union). We weren't buying any actual type safety with the union, and this means less to type in initializers. Sorry for the API breakage :(.
  • A bug that could send the ffmpeg decoder into a livelock has been resolved.
  • Fixed a bug in plots when the range of values was very small
  • ncdirect_image_render() now properly resets colors and styles upon completion.
  • ncreader now supports most major readline keyboard shortcuts.
  • Manual pages no longer have -- folded down into an en dash.
  • Notcurses now supports NCSTYLE_STRUCK for struckthrough text.
    • As this isn't defined in terminfo, you use it at your own risk, though I suppose that's true for everything.
  • Bug fixed affecting NCSTYLE_ITALIC following other SGR controls in both fullscreen and direct mode.
  • A longstanding bug in the subproc unit tests leading to deadlock has been resolved.
  • ncplane_reparent_family() has been added, allowing an ncplane to be reparented without losing its children.
  • Added notcurses_stddim_yx_const(), a const analogue of notcurses_stddim_yx().
  • Added new cell_load_egc32() to support loading from a uint32_t (as opposed to const char*)
  • New macros NOTCURSES_VERSION_COMPARABLE and NOTCURSES_VERNUM_ORDERED

As you'll note, API change has dropped drastically since the freewheeling 1.x days, but I'm still of a mind to suffer a one-time breakage rather than carry crap eternally forward, especially if the fixups are trivial (as they were in the case of ncplane_options). If you can't deal with that, there are about four-thousand other TUI libraries...

...but none of them are so 🔥🌿💯 as Notcurses =]. Word is bond.

Hack on! —dank and the gang

2020-12-06-131245_3440x1440_scrot

Don't miss a new notcurses release

NewReleases is sending notifications on new releases.