Nowa wersja biblioteki notcurses v1.4.x "saga trwa! wu-tang! wu-tang!"
Notcurses to biblioteka TUI dla nowoczesnych emulatorów terminali. Dosłownie tłumacząc – nie przekleństwa (not curses). Została napisana w C, korzystając z nagłówków bezpiecznych dla C++. Dostępne są opakowania dla Rust, C++ i Python.
Czym to jest: biblioteka, która upraszcza złożone TUI w nowoczesnych emulatorach terminali, maksymalnie wspierająca jasne kolory i Unicode. Wiele zadań, które wcześniej realizowane były przez curses, może być wykonanych za pomocą notcurses (i odwrotnie).
Czym to nie jest: zgodną implementacją X/Open curses ani zamiennikiem ncurses w istniejących systemach.
Notcurses rezygnuje z API X/Open Curses, które dostarczane jest jako część Specyfikacji Single UNIX. Specyfikacja ta jest już przestarzała i na przykład nie obsługuje takiej funkcjonalności terminala jak nieindeksowany 24-bitowy kolor. W związku z tym notcurses nie jest zamiennikiem curses. Jest mniej przenośna i na pewno testowana na mniejszej liczbie sprzętu.
Gdy to możliwe, notcurses korzysta z biblioteki terminfo dostarczanej razem z ncurses, czerpiąc dużą korzyść z jej przenośności.
Notcurses otwiera rozwinięte możliwości interakcji z użytkownikami na stacjach roboczych, telefonach, laptopach i tabletach.
Dlaczego warto używać tej niestandardowej biblioteki?
Bezpieczeństwo wątków i efektywne wykorzystanie w programach wielowątkowych były od samego początku kwestią projektową.
Bardziej starannie opracowane API w porównaniu do X/Open:
Eksportowane identyfikatory mają prefiks, aby uniknąć kolizji w przestrzeniach nazw.
Obiektowy plik biblioteki eksportuje minimalny zestaw symboli. Tam, gdzie to możliwe, używane jest statyczne kodowanie tylko dla małych nagłówków. Ułatwia to optymalizację kompilatora i skraca czas ładowania.
-
Wszystkie API początkowo obsługują uniwersalny zestaw symboli (Unicode). API do komórek opiera się na koncepcji Rozszerzone grupy grapheme Unicode’a.
Możliwości wizualne, w tym obrazy, czcionki, wideo, tekst o wysokim kontraście, sprite'y i przezroczyste obszary. Wszystkie API natywnie wspierają 24-bitowy kolor, kwantowany w razie potrzeby dla terminala.
-
Licencja Apache2, w przeciwieństwie do dramatu w kilku aktach, które są licencją ncurses (ostatnia podsumowuje się jako "przekształcenie MIT-X11").
Od poprzedniego znaczącego wydania 1.1.0 dodano ogromną liczbę funkcji. Główne zmiany:
Widżet do wprowadzania ciągów dowolnej formy powiązany z ciągami do odczytu.
Widżet subprocess do generowania podprocesu, zarządzania nim i przesyłania jego wyników z powrotem.
W Linuxie 5.3+ zastosowano nowy mechanizm clone3+pidfd do zarządzania procesami bez warunków wyścigu.
Widżet Fdplane do przesyłania dowolnego deskryptora plików na płaszczyznę (na której zbudowano podproces). Oba pozwalają na stylizowanie lub w inny sposób przetwarzanie tekstu przez wywołania zwrotne.
Rotacja płaszczyzn i efektów wizualnych. Ładowanie wizualizacji z pamięci. Dowolne blitowanie RGBA/BGRx.
Menu można umieszczać na dowolnej (lub na obu) z górnych i dolnych płaszczyzn.
Ogromne ulepszenia w trybie Direct.
Polyfille, gradienty i tekst o wysokim kontraście.
Dodany tetris jako przykład.
Opakowania C++ od Marka Habersacka uzyskały możliwość zgłaszania wyjątków (jeśli to konieczne).
Python i Rust FFI zostały zaktualizowane i przetestowane.
Wideo demo z komentarzami autora.
Książka "Hacking The Planet! with Notcurses" autorstwa
Źródło: linux.org.ru

