FTXUI 7.0.0









Il 13 maggio, dopo oltre un anno di sviluppo, è stata rilasciata la versione 7.0.0 della libreria cross-platform FTXUI, progettata per creare applicazioni con interfaccia testuale in C++ e distribuita con licenza MIT.

Caratteristiche della libreria:

  • stile funzionale, simile a React JS;
  • stile semplice ed elegante (secondo l'autore della libreria);
  • gestione degli eventi da tastiera e mouse;
  • supporto per UTF8 e Unicode;
  • supporto per True Color;
  • supporto per la modifica dello stile del cursore;
  • supporto per animazioni;
  • supporto per il disegno;
  • assenza di dipendenze esterne;
  • cross-platform (Linux/MacOS, WebAssembly, Windows).
Modifiche

Documentazione

  • Corretto il processo di generazione della documentazione con Doxygen.
  • Aggiunta una tema personalizzato per Doxygen.
  • Divisione della documentazione su più pagine.

Compilazione

  • Aggiunto lo script tools$ amalgamate.py per generare il codice sorgente "amalgamato": ftxui.cpp (534 KB), ftxui.hpp (110 KB) e ftxui_all.hpp (643 KB).
  • Aggiunto supporto per moduli C++20.
  • Aggiunto supporto per Meson.
  • Rimossa la dipendenza da pthread.
  • Corretto il supporto per Bazel.
  • Altri miglioramenti.

Modifiche di compatibilità con versioni precedenti

  • Rinominazioni:
    • Pixel in `Cell
    • Image in Surface
    • ScreenInteractive in App
    • metodo PixelAt in CellAt
      Per garantire la compatibilità, sono previsti alias e intestazioni in modo da non interrompere il funzionamento del codice esistente.
  • Utilizzare std::string_view invece di const std::string& dove possibile. Questo offre una migliore compatibilità con i letterali di stringa e permette di evitare copie non necessarie.

Componenti

  • Il sistema di intercettazione dei segnali è stato migliorato e modernizzato utilizzando POSIX sigaction per una mascheratura affidabile dei segnali. È stata garantita la protezione da un doppio ripristino del terminale in uscita dall'applicazione tramite il monitoraggio atomico dello stato originale. È stata aggiunta la supporto per segnali POSIX aggiuntivi (SIGBUS, SIGSYS come segnali di errore, e SIGQUIT, SIGHUP come segnali di termine ritardato) e sono stati risolti problemi di sicurezza relativi ai segnali asincroni.
  • Risolto il problema di visualizzazione del cursore quando si utilizza un Renderer personalizzato all'interno di contenitori annidati.
  • Corretto il posizionamento del cursore nei campi di input e la stabilità dello scorrimento.
  • Corretto il supporto per caratteri non ASCII nella modalità di input della password.
  • Eliminato il lampeggiamento del cursore durante il rendering nell'App.
  • Gestione dell'input utilizzando pipe POSIX.
    • Consente alle applicazioni FTXUI di leggere dati da stdin (utilizzando pipe) e continuare a ricevere input dalla tastiera nel terminale.
    • Utilizzato di default.
    • Può essere disabilitato utilizzando App::HandlePipedInput(false).
    • Disponibile solo su Linux e macOS.
  • Corrette molteplici bug.

DOM

  • Supporto per il carattere di nuova linea (n) all'interno di text() e vtext().
  • Ora dbox trasferisce il focus dagli strati superiori a quelli inferiori, corrispondendo alla visualizzazione.
  • Aggiunto supporto per decoratori dei bordi delle tabelle. Questo consente, ad esempio, di cambiare il colore dei bordi della tabella.
  • Corretta un'errore di overflow intero in ComputeShrinkHard.
  • Aggiunta una specializzazione in vbox/hbox/dbox per consentire l'uso del contenitore Element come input.
  • Corretto l'aggiunta di elementi figli in gridbox.
  • Corretta la visualizzazione del gauge.
  • Aggiunte varianti parametrizzate dei decoratori flex con il parametro _factor. Consentono di specificare fattori di espansione o compressione personalizzati:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), oltre a varianti per gli assi x e y.

Ottimizzazioni del rendering

  • Ottimizzazione del movimento del cursore sulle righe nel metodo Screen::ResetPosition (senza cancellazione dello schermo) in un insieme parametrizzato di comandi CSI per spostare il cursore verso l'alto (x1B[<n>A) invece di emettere un singolo x1B[1A per ogni riga. Questo ha ridotto il numero di caratteri di escape per frame durante il ridisegno (ad esempio, ~197 -> 6 byte per uno schermo con 50 righe, riduzione di circa 33 volte).
  • Ottimizzati Screen::ToString(), Color::Print() e string_width(), che ha accelerato:
    • Rendering di base di circa il 27%.
    • Rendering di testo di circa il 27%.
    • Rendering di stili di circa il 38%.

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