Er is een nieuwe versie van de notcurses-bibliotheek v1.4.x "the saga continues! wu-tang! wu-tang!" uitgebracht.
Notcurses is een TUI-bibliotheek voor moderne terminalemulators. Letterlijk vertaald betekent het: geen vervloekingen (not curses). Het is geschreven in C, met gebruik van C++-veilige headers. Wrappers zijn beschikbaar voor Rust, C++ en Python.
Wat het is: een bibliotheek die complexe TUI's op moderne terminalemulators vereenvoudigt, met maximale ondersteuning voor heldere kleuren en Unicode. Veel taken die aan curses werden gedelegeerd, kunnen ook met notcurses worden uitgevoerd (en vice versa).
Wat het niet is: een compatibele implementatie van X/Open curses of een vervanging van ncurses op bestaande systemen.
Notcurses laat de X/Open Curses API achterwege, die wordt geleverd als onderdeel van de Single UNIX Specification. Deze specificatie is verouderd en ondersteunt bijvoorbeeld geen terminalfunctionaliteit zoals niet-geïndexeerde 24-bits kleur. Daarom is notcurses geen vervanging voor curses. Het is minder draagbaar en is beslist getest op een kleiner aantal hardware.
Wanneer mogelijk, maakt notcurses gebruik van de terminfo-bibliotheek die samen met ncurses wordt geleverd, en haalt daar veel voordeel uit qua draagbaarheid.
Notcurses biedt uitgebreide functionaliteit voor gebruikersinteractie op werkstations, telefoons, laptops en tablets.
Waarom deze niet-standaard bibliotheek gebruiken?
Thread safety en efficiënt gebruik in multi-threaded programma's waren vanaf het begin ontwerpoverwegingen.
Een beter ontworpen API in vergelijking met X/Open:
Geëxporteerde identificatoren hebben een voorvoegsel om naamruimteconflicten te voorkomen.
Het objectbestand van de bibliotheek exporteert een minimale set symbolen. Waar mogelijk wordt statische code alleen voor headerbestanden gebruikt. Dit vergemakkelijkt de compileroptimalisatie en vermindert de laadtijd.
-
Alle API's ondersteunen vanaf het begin een universele set symbolen (Unicode). De API voor cellen is gebaseerd op het concept Unicode’s Extended Grapheme Cluster.
Visuele mogelijkheden, inclusief afbeeldingen, lettertypen, video, hoogcontrast tekst, sprites en transparante gebieden. Alle API's ondersteunen native 24-bits kleur, gekwantiseerd waar nodig voor de terminal.
-
Apache2-vergunning, in tegenstelling tot dramatiek in meerdere bedrijven, wat de licentie van ncurses is (deze laatste wordt samengevat als "herformulering van MIT-X11").
Sinds de vorige belangrijke release 1.1.0 is er een enorme hoeveelheid functies toegevoegd. Belangrijke wijzigingen:
Widget voor het lezen van invoer van willekeurige vormen met betrekking tot leesregels.
Subprocess-widget voor het genereren van een subprocess, het beheren ervan en het streamen van zijn resultaten terug.
In Linux 5.3+ wordt een nieuw mechanisme clone3+pidfd gebruikt voor procesbeheer zonder race conditions.
Fdplane-widget voor het streamen van willekeurige bestandsdescriptoren naar het vlak (waar het subprocess op is gebouwd). Beiden stellen terugroepacties in staat om tekst te stylen of op een andere manier te verwerken.
Rotatie van vlakken en visuele effecten. Laden van visualisaties uit geheugen. Willekeurige blitting van RGBA/BGRx.
Menu's kunnen op een van de (of op beide) bovenste en onderste vlakken worden geplaatst.
Grote verbeteringen in de Direct-modus.
Polyfills, gradients en hoogcontrast tekst.
Tetris is toegevoegd als voorbeeld.
C++ wrappers van Marek Habersack hebben nu de mogelijkheid om uitzonderingen te werpen (indien nodig).
Python en Rust FFI zijn bijgewerkt en getest.
Video demo met commentaar van de auteur.
Boek 'Hacking The Planet! with Notcurses' van de auteur.
Bron: linux.org.ru

