È stata rilasciata una nuova versione della libreria notcurses v1.4.x «the saga continues! wu-tang! wu-tang!»
Notcurses è una libreria TUI per emulatore di terminale moderni. Tradotto letteralmente – non maledizioni (not curses). È scritta in C, utilizzando intestazioni sicure per C++. Sono disponibili wrapper per Rust, C++ e Python.
Cos'è: una libreria che semplifica i complessi TUI sugli attuali emulatori di terminale, supportando al massimo colori vivaci e Unicode. Molti compiti delegati a curses possono essere eseguiti con notcurses (e viceversa).
Cosa non è: un'implementazione compatibile di X/Open curses o un sostituto di ncurses sui sistemi esistenti.
Notcurses rifiuta l'API X/Open Curses fornita come parte della Single UNIX Specification. Questa specifica è obsoleta e, ad esempio, non supporta funzionalità del terminale come il colore a 24 bit non indicizzato. Pertanto, notcurses non è un sostituto di curses. È meno portatile e sicuramente testata su un numero inferiore di hardware.
Quando possibile, notcurses utilizza la libreria terminfo fornita insieme a ncurses, estraendo grande beneficio dalla sua portabilità.
Notcurses offre funzionalità avanzate per l'interazione con gli utenti su workstation, telefoni, laptop e tablet.
Perché utilizzare questa libreria non standard?
La sicurezza nei thread e l'efficiente utilizzo in programmi multithread sono state considerazioni progettuali sin dall'inizio.
Un'API più correttamente strutturata rispetto a X/Open:
Gli identificatori esportati hanno un prefisso per evitare collisioni nei nomi.
Il file oggetto della libreria esporta un set minimo di simboli. Dove possibile, viene utilizzato codice statico solo per intestazioni leggere. Questo facilita l'ottimizzazione del compilatore e riduce i tempi di caricamento.
-
Tutte le API supportano inizialmente un set di caratteri universale (Unicode). L'API per le celle si basa sul concetto di Unicode’s Extended Grapheme Cluster.
Capacità visive, comprese immagini, font, video, testo ad alto contrasto, sprite e aree trasparenti. Tutte le API supportano nativamente il colore a 24 bit, quantizzando quando necessario per il terminale.
-
Licenza Apache2, a differenza della drammaticità in diversi atti, che è una licenza ncurses (l'ultima è riassunta come «riformulazione MIT-X11»).
Dall'ultimo significativo rilascio 1.1.0 è stata aggiunta un'enorme quantità di funzionalità. Le principali modifiche:
Widget di lettura per l'immissione di stringhe di forma arbitraria con collegamento a stringhe per la lettura
Widget subprocess per generare un sottoprocesso, gestirlo e trasmettere i suoi risultati di nuovo.
In Linux 5.3+ viene utilizzato un nuovo meccanismo clone3+pidfd per gestire i processi senza condizioni di corsa.
Widget Fdplane per trasmettere un file descriptor arbitrario su un piano (su cui è costruito il sottoprocesso). Entrambi consentono ai callback di stilizzare o altrimenti elaborare il testo.
Rotazione dei piani e effetti visivi. Caricamento delle visualizzazioni dalla memoria. Blitting arbitrario RGBA/BGRx.
I menu possono essere posizionati su uno (o su entrambi) dei piani superiori e inferiori.
Grandi miglioramenti nella modalità Diretta.
Polyfills, gradienti e testo ad alto contrasto.
Aggiunto il tetris come esempio.
Le wrapper C++ di Marek Habersack hanno ottenuto la possibilità di lanciare eccezioni (se necessario).
Python e Rust FFI aggiornati e testati.
Video demo con commenti dell'autore
Il libro «Hacking The Planet! with Notcurses» dell'autore
Fonte: linux.org.ru

