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

