Notcurses v1.4.1 ist erschienen – eine Bibliothek für moderne textbasierte Interfaces.


Notcurses v1.4.1 ist erschienen – eine Bibliothek für moderne textbasierte Interfaces.

Die neue Version der Bibliothek notcurses v1.4.x ist erschienen: "die Saga geht weiter! Wu-Tang! Wu-Tang!"

Notcurses ist eine TUI-Bibliothek für moderne Terminalemulatoren. Wörtlich übersetzt bedeutet es – keine Flüche (not curses). Sie ist in C geschrieben und verwendet C++-sichere Header. Wrapper für sind verfügbar. Rust, C++ und Python.

Was ist das: eine Bibliothek, die komplexe TUIs auf modernen Terminalemulatoren vereinfacht und dabei hellere Farben und Unicode maximal unterstützt. Viele Aufgaben, die traditionell von curses übernommen werden, können mit notcurses (und umgekehrt) durchgeführt werden.

Was es nicht ist: eine kompatible Implementierung von X/Open curses oder ein Ersatz für ncurses auf bestehenden Systemen.

Notcurses lehnt die API von X/Open Curses ab, die als Teil der Single UNIX Specification bereitgestellt wird. Diese Spezifikation ist veraltet und unterstützt beispielsweise keine Terminalfunktionalitäten wie unindexierte 24-Bit-Farbe. Daher ist notcurses kein Ersatz für curses. Es ist weniger portabel und definitiv auf weniger Hardware getestet.
Wann immer möglich, verwendet notcurses die mit ncurses bereitgestellte terminfo-Bibliothek und profitiert in hohem Maße von deren Portabilität.
Notcurses eröffnet erweiterte Funktionen für die Interaktion mit Benutzern auf Workstations, Telefonen, Laptops und Tablets.

Warum diese nicht standardisierte Bibliothek verwenden?

  • Thread-Sicherheit und effiziente Nutzung in Multi-Thread-Anwendungen waren von Anfang an ein Entwurfsüberlegung.

  • Ein besser strukturiertes API im Vergleich zu X/Open:

    • Exportierte Identifikatoren haben ein Präfix, um Namenskonflikte zu vermeiden.

    • Die Objektdatei der Bibliothek exportiert eine minimale Anzahl von Symbolen. Wo es sinnvoll ist, wird statischer Code nur für Kleinbuchstabenüberschriften verwendet. Dies erleichtert die Optimierung des Compilers und verkürzt die Ladezeit.

  • Alle APIs unterstützen von Anfang an einen universellen Zeichensatz (Unicode). Die API für Zellen basiert auf dem Konzept von Unicode’s Extended Grapheme Cluster.

  • Visuelle Funktionen, einschließlich Bilder, Schriftarten, Videos, hochkontrastierender Text, Sprites und transparente Bereiche. Alle APIs unterstützen nativ 24-Bit-Farbe, quantisiert nach Bedarf für das Terminal.

  • Lizenz Apache2, im Gegensatz zu Drama In mehreren Akten, die als ncurses-Lizenz bezeichnet werden (letztlich zusammengefasst als „Umformulierung von MIT-X11“).

Seit dem letzten bedeutenden Release 1.1.0 wurden eine enorme Anzahl von Funktionen hinzugefügt. Die wichtigsten Änderungen:

  • Widget zum Lesen für die Eingabe von beliebigen Zeichenfolgen, das an die Lesefunktionen gebunden ist.

  • Subprozess-Widget zur Erzeugung eines Unterprozesses, zur Verwaltung und zum Streamen der Ergebnisse zurück.

  • In Linux 5.3+ wird ein neuer Mechanismus clone3+pidfd zur Prozessverwaltung ohne Rennbedingungen verwendet.

  • Fdplane-Widget zum Streamen eines beliebigen Dateideskriptors auf die Ebene (auf der der Unterprozess basiert). Beide ermöglichen Rückrufe zur Stilierung oder anderweitigen Verarbeitung von Text.

  • Rotation von Ebenen und visuellen Effekten. Laden von Visualisierungen aus dem Speicher. Beliebiges Blitting von RGBA/BGRx.

  • Menüs können auf einer (oder beiden) der oberen und unteren Ebenen platziert werden.

  • Große Verbesserungen im Direct-Modus.

  • Polyfills, Verlauf und hochkontrastierender Text.

  • Tetris wurde als Beispiel hinzugefügt.

  • C++-Wrapper von Marek Habersack erhalten die Möglichkeit, Ausnahmen zu werfen (falls erforderlich).

  • Die Python- und Rust-FFIs wurden aktualisiert und getestet.

Video-Demo mit Kommentaren des Autors
Das Buch „Hacking The Planet! mit Notcurses“ vom Autor

Quelle: linux.org.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster