Вийшла нова версія бібліотеки notcurses v1.4.x the saga continues! wu-tang! wu-tang!»
Notcurses це бібліотека TUI для сучасних термінальних емуляторів. Буквально перекладаючи – не прокляття (not curses). Вона написана С, з використанням C++-safe headers. Доступні обгортки для Іржа, C + + и Python.
Що це таке: бібліотека, що спрощує складні TUI на сучасних термінальних емуляторах, максимально підтримує яскраві кольори та Unicode. Багато завдань, делегованих curses, можуть бути виконані за допомогою неcurses (і навпаки).
Чим це не є: сумісною реалізацією X/Open curses або заміною ncurses на існуючих системах.
Notcurses відмовляється від API X/Open Curses, що поставляється як частина Single UNIX Specification. Ця специфікація давно застаріла і, наприклад, не підтримує таку функціональність терміналу як неіндексований 24-бітовий колір. Як така, неcurses не є заміною curses. Вона менш портативна, і безперечно протестована на меншій кількості обладнання.
Коли це можливо, nocurses використовує бібліотеку 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