Die neue Version der Bibliothek notcurses v1.4.x "die Saga geht weiter! wu-tang! wu-tang!" ist erschienen.
Notcurses ist eine TUI-Bibliothek für moderne Terminalemulatoren. Wörtlich übersetzt – keine Flüche (not curses). Sie ist in C geschrieben und verwendet C++-sichere Header. Wrapper für Rust, C++ und Python.
Was es ist: eine Bibliothek, die komplexe TUIs auf modernen Terminalemulatoren vereinfacht, maximal helle Farben und Unicode unterstützt. Viele Aufgaben, die an curses delegiert werden, können auch mit notcurses erledigt werden (und umgekehrt).
Was es nicht ist: eine kompatible Implementierung von X/Open curses oder ein Ersatz für ncurses auf bestehenden Systemen.
Notcurses verzichtet auf die API von X/Open Curses, die Teil der Single UNIX Specification ist. Diese Spezifikation ist schon lange veraltet und unterstützt beispielsweise keine Terminalfunktionen wie unindexierte 24-Bit-Farben. Daher ist notcurses kein Ersatz für curses. Es ist weniger portabel und wurde definitiv auf weniger Hardware getestet.
Wann immer es möglich ist, nutzt notcurses die mit ncurses gelieferte terminfo-Bibliothek, um großen Nutzen aus ihrer Portabilität zu ziehen.
Notcurses eröffnet erweiterte Funktionalitäten für die Interaktion mit Nutzern an Arbeitsplätzen, Telefonen, Laptops und Tablets.
Warum diese nicht-standardisierte Bibliothek verwenden?
Thread-Sicherheit und effiziente Nutzung in Multithread-Programmen waren von Anfang an ein Designüberlegung.
Ein besser gestaltetes API im Vergleich zu X/Open:
Die exportierten Identifikatoren haben ein Präfix, um Kollisionen in Namensräumen zu vermeiden.
Die Objektdatei der Bibliothek exportiert einen minimalen Satz von Symbolen. Wo es sinnvoll ist, wird statischer Code nur für Kleinbuchstaben-Header verwendet. Dies erleichtert die Compiler-Optimierung und verkürzt die Ladezeiten.
-
Alle APIs unterstützen von Anfang an einen universellen Zeichensatz (Unicode). Die API für Zellen basiert auf dem Konzept Extended Grapheme Cluster von Unicode.
Visuelle Funktionen, einschließlich Bilder, Schriftarten, Videos, hochkontrastierenden Text, Sprites und transparente Bereiche. Alle APIs unterstützen nativ 24-Bit-Farbe, die je nach Bedarf für das Terminal quantisiert wird.
-
Apache2-Lizenz, im Gegensatz zu Drama in mehreren Akten, das die Lizenz von ncurses ist (letztere wird zusammengefasst als „Neuformulierung von MIT-X11“).
Seit dem letzten bedeutenden Release 1.1.0 wurden eine riesige Menge an Funktionen hinzugefügt. Die wichtigsten Änderungen:
Widget zum Lesen für die Eingabe von beliebigen Zeichenfolgen mit Bindung an Lesestrings
Subprozess-Widget zur Erzeugung eines Unterprozesses, dessen Steuerung und zum Streaming der Ergebnisse zurück.
In Linux 5.3+ wird ein neuer Mechanismus clone3+pidfd zur Prozesssteuerung ohne Race Conditions verwendet.
Fdplane-Widget für das Streaming eines beliebigen Dateideskriptors zur Ebene (auf der der Unterprozess läuft). Beide ermöglichen es Rückrufen, Text zu stylen oder anderweitig zu verarbeiten.
Drehen von Ebenen und visuellen Effekten. Laden von Visualisierungen aus dem Speicher. Beliebiges Blitting von RGBA/BGRx.
Menüs können auf einer der oberen und unteren Ebenen oder auf beiden platziert werden.
Große Verbesserungen im Direct-Modus.
Polyfills, Gradienten und hochkontrastierender Text.
Tetris als Beispiel hinzugefügt.
Die C++-Wrapper von Marek Habersack können jetzt Ausnahmen auslösen (wenn nötig).
Python- und Rust-FFI wurden aktualisiert und getestet.
Video-Demo mit Kommentaren des Autors
Das Buch „Hacking The Planet! with Notcurses“ vom Autor
Quelle: linux.org.ru

