È stata rilasciata notcurses v1.4.1 - una libreria per interfacce testuali moderne


È stata rilasciata notcurses v1.4.1 - una libreria per interfacce testuali moderne

È uscita una nuova versione della libreria notcurses v1.4.x «la saga continua! wu-tang! wu-tang!»

Notcurses è una libreria TUI per emulatori di terminale moderni. Tradotto letteralmente, significa 'non maledizioni' (not curses). È stata scritta in C, utilizzando intestazioni sicure per C++. Sono disponibili wrapper per Rust, C++ e Python.

Che cos'è: una libreria che semplifica complesse TUI su moderni emulatori di terminale, sostenendo al massimo colori vivaci e Unicode. Molti compiti delegati a curses possono essere eseguiti con notcurses (e viceversa).

Cosa non è: un'implementazione compatibile con X/Open curses o una sostituzione 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à terminali come il colore a 24 bit non indicizzato. Pertanto, notcurses non è una sostituzione di curses. È meno portabile e sicuramente testata su un numero inferiore di hardware.
Quando possibile, notcurses utilizza la libreria terminfo fornita con ncurses, estraendo il massimo dalla sua portabilità.
Notcurses offre funzionalità avanzate per l'interazione con gli utenti su workstation, telefoni, laptop e tablet.

Perché usare questa libreria non standard?

  • La sicurezza del thread e l'uso efficiente in programmi multithreading sono state considerazioni progettuali fin dall'inizio.

  • API meglio strutturato rispetto a X/Open:

    • Gli identificatori esportati hanno un prefisso per evitare collisioni nello spazio dei nomi.

    • Il file oggetto della libreria esporta un insieme minimo di simboli. Dove possibile, viene usato codice statico solo per le intestazioni in minuscolo. Questo facilita l'ottimizzazione del compilatore e riduce i tempi di caricamento.

  • Tutte le API supportano originariamente un set di caratteri universale (Unicode). L'API per le celle si basa sul concetto di Cluster di Grapheme Esteso di Unicode.

  • Caratteristiche visive, inclusi immagini, caratteri, video, testo ad alto contrasto, sprite e aree trasparenti. Tutte le API supportano nativamente il colore a 24 bit, quantizzato secondo necessità per il terminale.

  • Licenza Apache2, a differenza di drammatiche in più atti, che è una licenza ncurses (l'ultima riassunta come 'riformulazione MIT-X11').

Dall'ultima versione significativa 1.1.0 è stata aggiunta una quantità enorme di funzionalità. Le principali modifiche:

  • Widget per la lettura per l'immissione di stringhe di forma arbitraria collegate a righe per la lettura

  • Widget subprocess per generare un subprocesso, controllarlo e restituire i suoi risultati.

  • In Linux 5.3+ viene utilizzato un nuovo meccanismo clone3+pidfd per gestire i processi senza condizioni di gara.

  • Widget Fdplane per il trasferimento di un file descriptor arbitrario su un piano (su cui è costruito il subprocesso). Entrambi consentono ai callback di stilizzare o elaborare il testo in altro modo.

  • Rotazione dei piani ed effetti visivi. Caricamento delle visualizzazioni dalla memoria. Blitting arbitrario RGBA/BGRx.

  • Il menu può essere posizionato su uno (o entrambi) dei piani superiori e inferiori.

  • Miglioramenti significativi nella modalità Direct.

  • Polyfills, gradienti e testo ad alto contrasto.

  • Aggiunto tetris come esempio.

  • Le wrapper C++ di Marek Habersack hanno ottenuto la possibilità di sollevare eccezioni (se necessario).

  • Python e Rust FFI sono stati aggiornati e testati.

Video dimostrativo con commenti dell'autore
Il libro «Hacking The Planet! con Notcurses» dell'autore

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster