A ieșit o nouă versiune a bibliotecii notcurses v1.4.x „saga continuă! wu-tang! wu-tang!”
Notcurses este o bibliotecă TUI pentru emulatoare terminale moderne. Traducând literal – nu blesteme (not curses). A fost scrisă în C, folosind antete sigure pentru C++. Sunt disponibile wrappers pentru Rust, C++ și Python.
Ce este: o bibliotecă care simplifică TUI-urile complexe pe emulatoarele terminale moderne, maximizând suportul pentru culori vii și Unicode. Multe sarcini delegate de curses pot fi realizate utilizând notcurses (și invers).
Ce nu este: o implementare compatibilă cu X/Open curses sau o înlocuire a ncurses pe sistemele existente.
Notcurses renunță la API-ul X/Open Curses, care face parte din Specificația Single UNIX. Această specificație este demodată de mult timp și, de exemplu, nu suportă funcționalități precum culorile 24-bit fără indexare. Așadar, notcurses nu este o înlocuire pentru curses. Este mai puțin portabilă și a fost definitiv testată pe un număr mai mic de echipamente.
Atunci când este posibil, notcurses utilizează biblioteca terminfo, livrată împreună cu ncurses, extrăgând un beneficiu mare din portabilitatea acesteia.
Notcurses deschide funcționalități extinse pentru interacțiunea cu utilizatorii pe stații de lucru, telefoane, laptopuri și tablete.
De ce să folosești această bibliotecă non-standard?
Siguranța cursurilor și utilizarea eficientă în programele multi-threaded au fost aspecte de proiectare încă de la început.
Un API mai bine structurat în comparație cu X/Open:
Identificatorii exportați au un prefix pentru a evita coliziunile în spațiile de nume.
Fișierul obiect al bibliotecii exportă un set minim de simboluri. Acolo unde este posibil, se folosește cod static doar pentru antetele de tip minor. Acest lucru ajută la optimizarea compilatorului și reduce timpul de încărcare.
-
Toate API-urile suportă inițial un set de simboluri universale (Unicode). API-ul pentru celule se bazează pe conceptul de Cluster extins de grapheme Unicode.
Capabilități vizuale, inclusiv imagini, fonturi, videoclipuri, text cu contrast ridicat, sprite-uri și zone transparente. Toate API-urile suportă nativ culoarea 24-bit, cuantificată după cum este necesar pentru terminal.
-
Licența Apache2, spre deosebire de drama în mai multe acte, care este licența ncurses (ultimul fiind rezumat ca „o reformulare MIT-X11”).
De la ultima versiune semnificativă 1.1.0, au fost adăugate o mulțime de funcții. Principalele modificări:
Widget pentru citire pentru introducerea unor linii de formă liberă legate de linii de citire
Widget subprocess pentru generarea unui subprocess, gestionarea acestuia și transmiterea rezultatelor înapoi.
În Linux 5.3+ este utilizat un nou mecanism clone3+pidfd pentru gestionarea proceselor fără condiții de competiție.
Widget Fdplane pentru transmiterea fluxului unui descriptor de fișier arbitrar pe un plan (pe care este construit subprocessul). Ambele permit apelurilor de returnare să stilizeze sau să proceseze textul în alt mod.
Rotirea planurilor și efecte vizuale. Încărcarea vizualizărilor din memorie. Blit arbitrary RGBA/BGRx.
Meniul poate fi plasat pe oricare (sau pe ambele) dintre planurile superioare și inferioare.
Îmbunătățiri semnificative în modul Direct.
Polyfills, gradeți și text cu contrast ridicat.
Tetris a fost adăugat ca exemplu.
Împachetările C++ de la Marek Habersack au câștigat capacitatea de a arunca excepții (dacă este necesar).
FFI Python și Rust au fost actualizate și testate.
Demo video cu comentariile autorului
Cartea „Hacking The Planet! with Notcurses” de la autor
Sursa: linux.org.ru

