Вышла notcurses v1.4.1 — библиотека для современных текстовых интерфейсов


Вышла notcurses v1.4.1 — библиотека для современных текстовых интерфейсов

Вышла новая версия библиотеки notcurses v1.4.x «the saga continues! wu-tang! wu-tang!»

Notcurses это библиотека TUI для современных терминальных эмуляторов. Буквально переводя – не проклятия (not curses). Она написана на С, с использованием C++-safe headers. Доступны обёртки для Rust, C++ и Python.

Что это такое: библиотека, упрощающая сложные TUI на современных терминальных эмуляторах, максимально поддерживающая яркие цвета и Unicode. Многие задачи, делегированные curses, могут быть выполнены с помощью notcurses (и наоборот).

Чем это не является: совместимой реализацией X/Open curses или заменой ncurses на существующих системах.

Notcurses отказывается от API X/Open Curses, поставляемого как часть Single UNIX Specification. Эта спецификация давно устарела и, например, не поддерживает такую функциональность терминала, как неиндексированный 24-битный цвет. Как таковая, notcurses не является заменой curses. Она менее портативна, и определенно протестирована на меньшем количестве оборудования.
Когда это возможно, notcurses использует библиотеку terminfo, поставляемую вместе с ncurses, извлекая большую пользу из ее переносимости.
Notcurses открывает расширенные функциональные возможности для взаимодействия с пользователями на рабочих станциях, телефонах, ноутбуках и планшетах.

Зачем использовать эту нестандартную библиотеку?

  • Потокобезопасность и эффективное использование в многопоточных программах с самого начала было проектным соображением.

  • Более правильно оформленное API по сравнению с X/Open:

    • Экспортируемые идентификаторы имеют префикс, чтобы избежать коллизий в пространствах имен.

    • Объектный файл библиотеки экспортирует минимальный набор символов. Там, где это целесообразно, используется статический код только для строчных заголовков. Это облегчает оптимизацию компилятора и сокращает время загрузки.

  • Все API изначально поддерживают универсальный набор символов (Unicode). API для ячеек основан на концепции Unicode’s Extended Grapheme Cluster.

  • Визуальные возможности, включая изображения, шрифты, видео, высококонтрастный текст, спрайты и прозрачные области. Все API нативно поддерживают 24-битный цвет, квантованный по мере необходимости для терминала.

  • Лицензия Apache2, в отличие от драмы в нескольких актах, которая является лицензией ncurses (последняя резюмируется как «переформулирование MIT-X11»).

С момента предыдущего значимого релиза 1.1.0 было добавлено огромное количество функций. Основные изменения:

  • Виджет для чтения для ввода строк произвольной формы с привязкой к строкам для чтения

  • Виджет subprocess для порождения подпроцесса, управления им и потоковой передачи его результатов обратно.

  • В Linux 5.3+ используется новый механизм clone3+pidfd для управления процессами без race condition.

  • Виджет Fdplane для потоковой передачи произвольного файлового дескриптора на плоскость (на которой построен подпроцесс). Оба позволяют обратным вызовам стилизовать или иным образом обрабатывать текст.

  • Вращение плоскостей и визуальных эффектов. Загрузка визуализаций из памяти. Произвольное блитирование RGBA/BGRx.

  • Меню можно размещать на любой (или на обеих) из верхних и нижних плоскостей.

  • Большие улучшения в режиме Direct.

  • Polyfills, градиенты и высококонтрастный текст.

  • Добавлен тетрис в качестве примера.

  • Обертки C++ от Marek Habersack получили возможность бросать исключения (если нужно).

  • Python и Rust FFI обновлены и протестированы.

Видео демо с комментариями автора
Книга «Hacking The Planet! with Notcurses» от автора

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

Добавить комментарий