Une nouvelle version de la bibliothèque notcurses v1.4.x « la saga continue ! wu-tang ! wu-tang ! »
Notcurses est une bibliothèque TUI pour les émulateurs de terminal modernes. Littéralement, cela signifie – pas de malédictions (not curses). Elle est écrite en C, en utilisant des en-têtes sûrs en C++. Des wrappers sont disponibles pour Rust, C++ et Python.
Qu'est-ce que c'est : une bibliothèque qui facilite la création de TUI complexes sur des émulateurs de terminal modernes, soutenant au maximum des couleurs vives et Unicode. De nombreuses tâches déléguées à curses peuvent être réalisées avec notcurses (et vice versa).
Ce que ce n'est pas : une implémentation compatible de X/Open curses ou un remplacement de ncurses sur les systèmes existants.
Notcurses abandonne l'API X/Open Curses, fournie comme partie de la Single UNIX Specification. Cette spécification est désuète depuis longtemps et, par exemple, ne prend pas en charge des fonctionnalités de terminal telles que les couleurs 24 bits non indexées. En tant que telle, notcurses n'est pas un remplacement de curses. Elle est moins portable et a certainement été testée sur un nombre limité de matériels.
Lorsque cela est possible, notcurses utilise la bibliothèque terminfo fournie avec ncurses, tirant ainsi parti de sa portabilité.
Notcurses ouvre des capacités étendues pour interagir avec les utilisateurs sur les stations de travail, les téléphones, les ordinateurs portables et les tablettes.
Pourquoi utiliser cette bibliothèque non standard ?
La sécurité des threads et l'utilisation efficace dans des programmes multithread dès le départ ont été un souci de conception.
Une API mieux conçue par rapport à X/Open :
Les identifiants exportés ont un préfixe pour éviter les collisions dans les espaces de noms.
Le fichier objet de la bibliothèque exporte un ensemble minimal de symboles. Là où cela est approprié, le code statique n'est utilisé que pour les en-têtes de ligne. Cela facilite l'optimisation du compilateur et réduit le temps de chargement.
-
Toutes les API prennent en charge dès le départ un ensemble universel de caractères (Unicode). L'API pour les cellules est basée sur le concept du Cluster Graphème Élargi de Unicode.
Des capacités visuelles, y compris des images, des polices, des vidéos, du texte à fort contraste, des sprites et des zones transparentes. Toutes les API prennent nativement en charge la couleur 24 bits, quantifiée si nécessaire pour le terminal.
-
Licence Apache2, contrairement à drame en plusieurs actes, qui est la licence ncurses (la dernière étant résumée comme « reformulation MIT-X11 »).
Depuis le précédent lancement majeur 1.1.0, un grand nombre de fonctionnalités ont été ajoutées. Changements principaux :
Widget de lecture pour l'entrée de chaînes de forme arbitraire associé aux chaînes de lecture
Widget subprocess pour générer un sous-processus, le gérer et transmettre ses résultats en continu.
Sous Linux 5.3+, un nouveau mécanisme clone3+pidfd est utilisé pour gérer les processus sans condition de concurrence.
Widget Fdplane pour le transfert de flux d'un descripteur de fichier arbitraire vers un plan (sur lequel le sous-processus est construit). Les deux permettent aux rappels de styliser ou de traiter autrement le texte.
Rotation de plans et effets visuels. Chargement de visualisations depuis la mémoire. Blit arbitraire RGBA/BGRx.
Le menu peut être placé sur l'une (ou les deux) des plans supérieurs et inférieurs.
Améliorations majeures dans le mode Direct.
Polyfills, dégradés et texte à contraste élevé.
Tetris ajouté en tant qu'exemple.
Les wrappers C++ de Marek Habersack peuvent maintenant lancer des exceptions (si besoin).
Python et Rust FFI mis à jour et testés.
Démonstration vidéo avec les commentaires de l'auteur
Livre « Hacking The Planet! with Notcurses » de l'auteur
Source : linux.org.ru

