FTXUI 7.0.0









Pe 13 mai, după mai bine de un an de dezvoltare, a fost lansată versiunea 7.0.0 a bibliotecii multiplatforme FTXUI, destinată creării de aplicații în C++ cu interfață text și distribuită sub licența MIT.

Capabilitățile bibliotecii:

  • stil funcțional, asemănător cu React JS;
  • stil simplu și elegant (conform autorului bibliotecii);
  • tratamentul evenimentelor de tastatură și „mouse”;
  • suport pentru UTF8 și Unicode;
  • suport pentru True Color;
  • suport pentru schimbarea stilului cursorului;
  • suport pentru animații;
  • suport pentru desenare;
  • fără dependențe externe;
  • multiplatformă (Linux/MacOS, WebAssembly, Windows).
Modificări

Documentație

  • Generarea documentației cu Doxygen a fost corectată.
  • A fost adăpată o temă personalizată pentru Doxygen.
  • Documentația este acum separată în mai multe pagini.

Compilare

  • A fost adăugat scriptul tools$ amalgamate.py pentru generarea codului sursă "amalgamat": ftxui.cpp (534 KB), ftxui.hpp (110 KB) și ftxui_all.hpp (643 KB).
  • S-a adăugat suport pentru modulele C++20.
  • A fost adăugat suport pentru Meson.
  • S-a eliminat dependența de pthread.
  • Suportul pentru Bazel a fost corectat.
  • Alte îmbunătățiri.

Modificări de compatibilitate cu versiunile anterioare

  • Redenumiri:
    • Pixel în `Cell
    • Image în Surface
    • ScreenInteractive în App
    • metoda PixelAt în CellAt
      Pentru a asigura compatibilitatea, au fost prevăzute aliasuri și antete, astfel încât să nu fie afectată funcționarea codului existent.
  • Utilizarea std::string_view în loc de const std::string& acolo unde este posibil. Aceasta oferă o mai bună compatibilitate cu literalile de string și permite evitarea copiilor inutile.

Componente

  • Sistemul de interceptare a semnalelor a fost îmbunătățit și modernizat folosind POSIX sigaction pentru o mască de semnale fiabilă. S-a asigurat protecția împotriva restaurării duble a terminalului la ieșirea din program prin urmărirea atomică a stării sursă. A fost adăugat suport pentru semnale POSIX suplimentare (SIGBUS, SIGSYS, ca semnale de eroare, și SIGQUIT, SIGHUP, ca semnale de închidere întârziată) și s-au corectat problemele de securitate ale semnalelor asincrone.
  • Problema cu afișarea cursorului la utilizarea Renderer-ului personalizat în containerele încrucișate a fost corectată.
  • A fost corectat poziționarea cursorului în câmpurile de introducere și stabilitatea derulării.
  • Sprijinul pentru caracterele non-ASCII în modul de introducere a parolelor a fost corectat.
  • Flickering-ul cursorului în App la redrawing a fost eliminat.
  • Prelucrarea input-ului folosind pipe-uri POSIX
    • Permite aplicațiilor FTXUI să citească date din stdin (când se utilizează pipe) și, în același timp, să primească input de la tastatură în terminal.
    • Este activat în mod implicit.
    • Poate fi dezactivat prin folosirea App::HandlePipedInput(false).
    • Disponibil doar pe Linux și macOS.
  • Au fost corectate multe erori.

DOM

  • Suport pentru newline (n) în text() și vtext().
  • Acum dbox transferă focusul de la straturile superioare la cele inferioare, conform afișării vizuale.
  • A fost adăugat suport pentru décoratori de margini a tabelelor. Aceasta permite, de exemplu, modificarea culorii marginilor tabelului.
  • A fost corectată eroarea de depășire a valorii întregi în ComputeShrinkHard.
  • S-a adăugat specializarea în vbox/hbox/dbox pentru a permite utilizarea containerului Element ca date de intrare.
  • În gridbox a fost corectată adăugarea elementelor fiice.
  • A fost corectată afișarea gauge.
  • Au fost adăugate variantele parametrizate ale decoratorilor flex cu parametrul _factor. Acestea permit specificarea coeficientelor personalizate de întindere sau comprimare:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), precum și variante pentru axele x și y.

Optimizări de redare

  • Optimizarea mutării cursorului pe rânduri în metoda Screen::ResetPosition (fără a curăța ecranul) într-un set de comenzi CSI parametrizat pentru mutarea cursorului în sus (x1B[A) în loc de a transmite un x1B[1A pentru fiecare rând. Aceasta a redus numărul de caractere de escapare pe cadru în timpul redării (de exemplu, ~197 -> 6 octeți pentru un ecran cu 50 de rânduri, o reducere de ~33 de ori).
  • Au fost optimizate Screen::ToString(), Color::Print() și string_width(), ceea ce a accelerat:
    • Redarea de bază cu ~27%.
    • Redarea textului cu ~27%.
    • Redarea stilurilor cu ~38%.

Sursa: linux.org.ru

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster