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


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

È 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

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