На 13 май, след повече от година разработка, беше пусната версия 7.0.0 на кроссплатформената библиотека. FTXUI, предназначена за създаване на приложения с текстов интерфейс на C++ и разпространявана под MIT лиценз.

Възможности на библиотеката:

  • функционален стил, подобен на React JS;
  • прост и елегантен стил (според автора на библиотеката);
  • обработка на събития от клавиатурата и мишката;
  • поддръжка на UTF8 и Unicode;
  • поддръжка на True Color;
  • поддръжка за промяна на стила на курсора;
  • поддръжка за анимации;
  • поддръжка за рисуване;
  • липса на външни зависимости;
  • кросплатформеност (Linux/MacOS, WebAssembly, Windows).
Промени

Документация

  • Коригиран е генерирането на документация с Doxygen.
  • Добавена е собствена тема за Doxygen.
  • Документацията е разделена на няколко страници.

Компилация

  • Добавен е скрипт tools$ amalgamate.py за генериране на 'амалгамиран' изходен код: ftxui.cpp (534 КБ), ftxui.hpp (110 КБ) и ftxui_all.hpp (643 КБ).
  • Добавена е поддръжка на модули C++20.
  • Добавена е поддръжка на Meson.
  • Премахната е зависимостта от pthread.
  • Коригирана е поддръжката на Bazel.
  • Други подобрения.

Промени в съвместимостта с предишни версии.

  • Преименувания:
    • Pixel на `Cell
    • Image на Surface
    • ScreenInteractive на App
    • метод PixelAt на CellAt
      За осигуряване на съвместимост са предвидени псевдоними и заглавки, за да не нарушат работата на съществуващия код.
  • Използване на std::string_view вместо const std::string& там, където е възможно. Това осигурява по-добра съвместимост с низовите литерали и предотвратява ненужни копия.

FAudio

  • Подобрена и обновена система за прихващане на сигнали с използване на POSIX sigaction за надеждно маскиране на сигналите. Осигурена е защита от двойно възстановяване на терминала при изход от програмата с помощта на атомарно проследяване на изходното състояние. Добавена е поддръжка на допълнителни POSIX сигнали (SIGBUS, SIGSYS, като сигнали за срив, и SIGQUIT, SIGHUP, като сигнали за отложено завършване) и са коригирани проблемите със сигурността на асинхронните сигнали.
  • Коригирана е проблема с показването на курсора при използване на конфигурируем Renderer в вложени контейнери.
  • Коригирано е позиционирането на курсора в полета за въвеждане и стабилността на скролиране.
  • Коригирана е поддръжката на не ASCII символи в режима за въвеждане на парола.
  • Премахнато е мигането на курсора при прерисуване в App.
  • Обработка на входа с използване на POSIX pipes.
    • Позволява на приложенията FTXUI да четат данни от stdin (при използване на pipe) и все пак да приемат вход от клавиатурата в терминала.
    • Използва се по подразбиране.
    • Може да бъде деактивирано с App::HandlePipedInput(false).
    • Налична само в Linux и macOS.
  • Коригирани са много грешки.

DOM

  • Поддръжка на нов ред (n) вътре в text() и vtext().
  • Сега dbox предава фокуса от горните слоеве на долните, което отговаря на визуалното представяне.
  • Добавена е поддръжка на декоратори за граници на таблици. Това позволява, например, да се променя цветът на границите на таблицата.
  • Коригирана е грешка с целочислено преливане при ComputeShrinkHard.
  • Добавено е специализиране в vbox/hbox/dbox за възможност за използване на контейнера Element като входни данни.
  • В gridbox е коригирано добавянето на дъщерни елементи.
  • Коригирано е визуализирането на gauge.
  • Добавени са параметризирани варианти на декораторите flex с параметър _factor. Те позволяват задаване на потребителски коефициенти за разширяване или свиване:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), както и варианти за осите x и y.

Оптимизации на визуализацията

  • Оптимизация на движението на курсора по редове в метода Screen::ResetPosition (без почистване на екрана) в един параметризиран набор от команди CSI за движение на курсора нагоре (x1B[A) вместо извеждане на x1B[1A за всеки ред. Това намали броя на екраниращите символи на кадър по време на прерисуване (например, ~197 -> 6 байта за екран с 50 реда, ~33-кратно намаление).
  • Оптимизирани са Screen::ToString(), Color::Print() и string_width(), което ускори:
    • Основната визуализация с около 27%.
    • Визуализацията на текста с около 27%.
    • Визуализацията на стиловете с около 38%.

Източник: linux.org.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster