FTXUI 7.0.0









13 maja, po ponad roku prac, wydano 7.0.0 wieloplatformowej biblioteki. FTXUI, przeznaczonej do tworzenia aplikacji z interfejsem tekstowym w C++ i rozpowszechnianej na licencji MIT.

Możliwości biblioteki:

  • styl funkcyjny, podobny do React JS;
  • prosty i elegancki styl (zgodnie z opinią autora biblioteki);
  • obsługa zdarzeń z klawiatury i „myszy”;
  • wsparcie dla UTF8 i Unicode;
  • wsparcie dla True Color;
  • wsparcie dla zmiany stylu kursora;
  • wsparcie dla animacji;
  • wsparcie dla rysowania;
  • brak zewnętrznych zależności;
  • wieloplatformowość (Linux/MacOS, WebAssembly, Windows).
Zmiany

Dokumentacja

  • Naprawiono generację dokumentacji z Doxygen.
  • Dodano własny motyw dla Doxygen.
  • Podzielono dokumentację na kilka stron.

Kompilacja

  • Dodano skrypt tools$ amalgamate.py do generowania 'amalgamowanego' kodu źródłowego: ftxui.cpp (534 KB), ftxui.hpp (110 KB) i ftxui_all.hpp (643 KB).
  • Dodano wsparcie dla modułów C++20.
  • Dodano wsparcie dla Meson.
  • Usunięto zależność od pthread.
  • Naprawiono wsparcie dla Bazel.
  • Inne ulepszenia.

Zmiany w zgodności z wcześniejszymi wersjami.

  • Zmiany nazw:
    • Pixel na `Cell`
    • Image na Surface
    • ScreenInteractive na App
    • metoda PixelAt na CellAt
      Aby zapewnić zgodność, wprowadzono aliasy i nagłówki, aby nie zakłócić działania istniejącego kodu.
  • Zastosowano std::string_view zamiast const std::string& tam, gdzie to możliwe. To zapewnia lepszą zgodność z literałami tekstowymi i pozwala uniknąć niepotrzebnych kopiowań.

Składniki

  • Ulepszono i zmodernizowano system przechwytywania sygnałów przy użyciu POSIX sigaction dla niezawodnego maskowania sygnałów. Zapewnia ochronę przed podwójnym przywróceniem terminala podczas wychodzenia z programu za pomocą atomowego śledzenia pierwotnego stanu. Dodano wsparcie dla dodatkowych sygnałów POSIX (SIGBUS, SIGSYS jako sygnałów błędu, oraz SIGQUIT, SIGHUP jako sygnałów opóźnionego zakończenia) i naprawiono problemy z bezpieczeństwem sygnałów asynchronicznych.
  • Naprawiono problem z wyświetlaniem kursora przy użyciu dostosowanego Renderer w zagnieżdżonych kontenerach.
  • Naprawiono pozycjonowanie kursora w polach wprowadzania oraz stabilność przewijania.
  • Naprawiono wsparcie dla nie-ASCII symboli w trybie wprowadzania hasła.
  • Usunięto migotanie kursora podczas ponownego rysowania w App.
  • Obsługa wejścia z użyciem rur POSIX.
    • Pozwala aplikacjom FTXUI na odczyt danych z stdin (przy użyciu rury) i równocześnie odbieranie wejścia z klawiatury w terminalu.
    • Jest używane domyślnie.
    • Może być wyłączone przy użyciu App::HandlePipedInput(false).
    • Dostępne tylko w systemach Linux i macOS.
  • Naprawiono wiele błędów.

DOM

  • Wsparcie dla nowej linii (n) w text() i vtext().
  • Teraz dbox przekazuje fokus z górnych warstw na dolne, co odpowiada wizualnemu wyświetleniu.
  • Dodano wsparcie dla dekoratorów granic tabel. Pozwala to na przykład zmieniać kolor granic tabeli.
  • Naprawiono błąd przepełnienia liczb całkowitych w ComputeShrinkHard.
  • Dodano specjalizację w vbox/hbox/dbox, aby umożliwić użycie kontenera Element jako danych wejściowych.
  • W gridbox naprawiono dodawanie elementów podrzędnych.
  • Naprawiono wyświetlanie gauge.
  • Dodano parametryzowane warianty dekoratorów flex z parametrem _factor. Umożliwiają one podanie użytkownikowi współczynników rozciągania lub kompresji:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), a także warianty dla osi x i y.

Optymalizacje renderowania

  • Optymalizacja poruszania kursorem po wierszach w metodzie Screen::ResetPosition (bez czyszczenia ekranu) do jednego parametryzowanego zestawu komend CSI do poruszania kursorem w górę (x1B[<n>A) zamiast wyprowadzania jednego x1B[1A dla każdej linii. To zmniejszyło liczbę znaków ucieczki na klatkę podczas ponownego rysowania (na przykład ~197 -> 6 bajtów dla ekranu z 50 wierszami, ~33-krotne zmniejszenie).
  • Optymalizowano Screen::ToString(), Color::Print() i string_width(), co przyspieszyło:
    • Podstawowe renderowanie o ~27%.
    • Renderowanie tekstu o ~27%.
    • Renderowanie stylów o ~38%.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster