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 C++ con interfacce testuali 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 della tastiera e del 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

  • Corretta la generazione della documentazione con Doxygen.
  • Aggiunta una propria tema per Doxygen.
  • Separazione della documentazione in 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.
  • Corretta la supporto per Bazel.
  • Altri miglioramenti.

Modifiche di compatibilità con le versioni precedenti

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

Componenti

  • Sistema di intercettazione dei segnali migliorato e aggiornato, utilizzando POSIX sigaction per il masking affidabile dei segnali. Implementata protezione da doppio ripristino del terminale all'uscita del programma con il tracciamento atomico dello stato iniziale. Aggiunto supporto per segnali POSIX aggiuntivi (SIGBUS, SIGSYS come segnali di errore, e SIGQUIT, SIGHUP come segnali di terminazione posticipata) e risolti problemi di sicurezza dei segnali asincroni.
  • Corretta la visualizzazione del cursore quando si utilizza il Renderer personalizzato nei contenitori annidati.
  • Corretta la posizione del cursore nei campi di input e la stabilità dello scrolling.
  • Corretta la compatibilità con i caratteri non ASCII in modalità di input della password.
  • Eliminato il lampeggiamento del cursore durante il ridisegno in App.
  • Gestione dell'input utilizzando pipe POSIX
    • Permette alle applicazioni FTXUI di leggere dati da stdin (utilizzando pipe) e allo stesso tempo accettare input da tastiera nel terminale.
    • Utilizzato come predefinito.
    • Può essere disabilitato utilizzando App::HandlePipedInput(false).
    • Disponibile solo su Linux e macOS.
  • Corrette molteplici bug.

DOM

  • Supporto per il ritorno a capo (n) all'interno di text() e vtext().
  • Ora dbox trasferisce il focus dai livelli superiori a quelli inferiori, in conformità con la visualizzazione.
  • Aggiunto supporto per i decoratori dei bordi delle tabelle. Questo consente, ad esempio, di modificare il colore dei bordi delle tabelle.
  • Corretto un errore di overflow intero in ComputeShrinkHard.
  • Aggiunta una specializzazione in vbox/hbox/dbox per utilizzare il contenitore Element come input.
  • In gridbox corretto l'aggiunta di elementi figlio.
  • Corretto il rendering del gauge.
  • Aggiunte opzioni parametrizzate per decoratori flex con il parametro _factor. Queste permettono di specificare fattori di espansione o contrazione personalizzati:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), e varianti per gli assi x e y.

Ottimizzazioni del rendering

  • Ottimizzazione del movimento del cursore tra le righe nel metodo Screen::ResetPosition (senza pulire lo schermo) in un unico set parametrizzato di comandi CSI per spostare il cursore verso l'alto (x1B[<n>A) invece di emettere un x1B[1A per ogni riga. Questo ha ridotto il numero di caratteri di escape per fotogramma durante il ripristino (ad esempio, ~197 -> 6 byte per uno schermo con 50 righe, riduzione di circa 33 volte).
  • Ottimizzati Screen::ToString(), Color::Print() e string_width(), aumentando la velocità di:
    • 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