Вийшла 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. Доступні обгортки для Іржа, 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

Додати коментар або відгук