13 мая, после более года разработки, состоялся выпуск 7.0.0 кроссплатформенной библиотеки எஃப்டிஎக்ஸ்யுஐ, உரை இடைமுகத்துடன் C++ பயன்பாடுகளை உருவாக்குவதற்காக வடிவமைக்கப்பட்டு MIT உரிமத்தின் கீழ் விநியோகிக்கப்படுகிறது.
நூலக அம்சங்கள்:
- செயல்பாட்டு பாணி, React JS ஐப் போன்றது;
- எளிய மற்றும் நேர்த்தியான பாணி (நூலகத்தின் ஆசிரியரின் கூற்றுப்படி);
- விசைப்பலகை மற்றும் சுட்டி நிகழ்வுகளைக் கையாளுதல்;
- UTF8 மற்றும் யூனிகோட் ஆதரவு;
- உண்மையான வண்ண ஆதரவு;
- கர்சர் பாணியை மாற்றுவதற்கான ஆதரவு;
- அனிமேஷன் ஆதரவு;
- வரைதல் ஆதரவு;
- மூன்றாம் தரப்பு சார்புகள் இல்லை;
- பல இயங்குதளங்களில் (Linux/MacOS, WebAssembly, Windows).
மாற்றங்கள்
ஆவணங்கள்
- Исправлена генерация документации с Doxygen.
- Добавлена собственная тема для Doxygen.
- Разделение документации на несколько страниц.
தொகுப்பு
- Добавлен скрипт tools$ amalgamate.py для генерации «амальгамированного» исходного кода: ftxui.cpp (534 Kб), 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& там, где это возможно. Это обеспечивает лучшую совместимость со строковыми литералами и позволяет избежать ненужных копирований.
கூறுகள்
- Улучшена и модернизирована система перехвата сигналов с использованием POSIX sigaction для надежного маскирования сигналов. Обеспечена защита от двойного восстановления терминала при выходе из программы с помощью атомарного отслеживания исходного состояния. Добавлена поддержка дополнительных сигналов POSIX (SIGBUS, SIGSYS, как сигналов сбоя, и SIGQUIT, SIGHUP, как сигналов отложенного завершения) и исправлены проблемы безопасности асинхронных сигналов.
- Исправлена проблема с отображением курсора при использовании настраиваемого Renderer во вложенных контейнерах.
- Исправлено позиционирование курсора в полях ввода и стабильность прокрутки.
- Исправлена поддержка не ASCII символов в режиме ввода пароля.
- Устранено мерцание курсора при перерисовке в App.
- Обработка ввода с использованием POSIX pipes
- Позволяет приложениям FTXUI считывать данные из stdin (при использовании pipe) и при этом по-прежнему принимать ввод с клавиатуры в терминале.
- Используется по умолчанию.
- Может быть отключено использованием App::HandlePipedInput(false).
- இல் மட்டுமே கிடைக்கும் Linux и macOS.
- Исправлены многие ошибки.
டிஓம்
- Поддержка перевода строки (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[<n>A) вместо вывода одного x1B[1A на каждую строку. Это уменьшило количество экранирующих символов на кадр во время перерисовки (например, ~197 -> 6 байтов для экрана с 50 строками, ~33-кратное уменьшение).
- Оптимизированы Screen::ToString(), Color::Print() и string_width(), что ускорило:
- Базовый рендеринг на ~27%.
- Рендеринг текста на ~27%.
- Рендеринг стилей на ~38%.
ஆதாரம்: linux.org.ru




