notcurses v1.4.1 ist erschienen – eine Bibliothek für moderne Textschnittstellen


notcurses v1.4.1 ist erschienen – eine Bibliothek für moderne Textschnittstellen

Eine neue Version der Notcurses v1.4.x-Bibliothek wurde veröffentlicht: „Die Saga geht weiter!“ Wu Tang! Wu Tang!"

Notcurses ist eine TUI-Bibliothek für moderne Terminalemulatoren. Wörtlich übersetzt – keine Flüche. Es ist in C geschrieben und verwendet C++-sichere Header. Wrapper verfügbar für Rust, C + + и Python.

Was ist das: eine Bibliothek, die komplexe TUIs auf modernen Terminalemulatoren vereinfacht und dabei leuchtende Farben und Unicode maximal unterstützt. Viele an Curses delegierte Aufgaben können mit Notcurses ausgeführt werden (und umgekehrt).

Was es nicht ist: Eine kompatible Implementierung von X/Open Curses oder ein Ersatz für Ncurses auf bestehenden Systemen.

Notcurses veraltet die X/Open Curses API, die als Teil der Single UNIX Specification bereitgestellt wird. Diese Spezifikation ist längst veraltet und unterstützt beispielsweise keine Terminalfunktionalität wie nicht indizierte 24-Bit-Farben. Daher ist notcurses kein Ersatz für curses. Es ist weniger portabel und definitiv auf weniger Hardware getestet.
Wann immer möglich, nutzt notcurses die mit ncurses gelieferte Terminfo-Bibliothek und profitiert stark von deren Portabilität.
Notcurses eröffnet erweiterte Funktionen für die Interaktion mit Benutzern auf Workstations, Telefonen, Laptops und Tablets.

Warum diese nicht standardmäßige Bibliothek verwenden?

  • Thread-Sicherheit und effiziente Verwendung in Multithread-Programmen waren von Anfang an ein Designaspekt.

  • Besser formatierte API im Vergleich zu X/Open:

    • Exportierte Bezeichner werden mit einem Präfix versehen, um Namensraumkollisionen zu vermeiden.

    • Die Bibliotheksobjektdatei exportiert einen minimalen Zeichensatz. Wo praktisch, wird statischer Code nur für Zeilenköpfe verwendet. Dies erleichtert die Optimierung des Compilers und verkürzt die Ladezeiten.

  • Alle APIs unterstützen nativ den universellen Zeichensatz (Unicode). Die Zell-API basiert auf dem Konzept Der erweiterte Graphemcluster von Unicode.

  • Visuelle Funktionen wie Bilder, Schriftarten, Videos, kontrastreicher Text, Sprites und transparente Bereiche. Alle APIs unterstützen nativ 24-Bit-Farben, die je nach Bedarf des Terminals quantisiert werden.

  • Im Gegensatz dazu gibt es eine Apache2-Lizenz Dramen in mehreren Akten, bei denen es sich um die ncurses-Lizenz handelt (letztere wird als „Neuformulierung von MIT-X11“ zusammengefasst).

Seit der letzten wichtigen Version 1.1.0 wurden zahlreiche Funktionen hinzugefügt. Wichtigste Änderungen:

  • Lese-Widget zur Eingabe von Freiform-Strings, die mit Lese-Strings verknüpft sind

  • Ein Unterprozess-Widget zum Erzeugen eines Unterprozesses, seiner Verwaltung und dem Zurückstreamen seiner Ergebnisse.

  • Linux 5.3+ verwendet den neuen clone3+pidfd-Mechanismus, um Prozesse ohne Race Condition zu verwalten.

  • Fdplane-Widget zum Streamen eines beliebigen Dateideskriptors auf die Ebene (auf der der Unterprozess erstellt wird). Beide ermöglichen Rückrufe zum Formatieren oder anderweitigen Bearbeiten von Text.

  • Rotation von Ebenen und visuelle Effekte. Laden von Visualisierungen aus dem Speicher. Zufälliges RGBA/BGRx-Blitting.

  • Das Menü kann entweder auf der oberen oder unteren Ebene (oder auf beiden) platziert werden.

  • Große Verbesserungen im Direktmodus.

  • Polyfüllungen, Farbverläufe und kontrastreicher Text.

  • Tetris als Beispiel hinzugefügt.

  • C++-Wrapper von Marek Habersack haben jetzt die Möglichkeit, Ausnahmen auszulösen (falls erforderlich).

  • Python und Rust FFI aktualisiert und getestet.

Videodemo mit Kommentaren des Autors
Das Buch „Hacking The Planet! mit Notcourses“ vom Autor

Source: linux.org.ru

Kommentar hinzufügen