Выйшла 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 + + и Пітон.

Што гэта такое: бібліятэка, якая спрашчае складаныя 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

Дадаць каментар