ukazała się notcurses v1.4.1 - biblioteka dla nowoczesnych interfejsów tekstowych


ukazała się notcurses v1.4.1 - biblioteka dla nowoczesnych interfejsów tekstowych

Została wydana nowa wersja biblioteki notcurses v1.4.x. „Saga trwa! wu-tang! wu-tang!”

Notcurses to biblioteka TUI dla nowoczesnych emulatorów terminali. W dosłownym tłumaczeniu – nie przekleństwa. Jest napisany w C, przy użyciu nagłówków bezpiecznych dla C++. Dostępne owijarki do Rdza, C + + и Python.

Co to jest: biblioteka upraszczająca złożone TUI na nowoczesnych emulatorach terminali, maksymalnie obsługująca jasne kolory i Unicode. Wiele zadań delegowanych do klątw można wykonać za pomocą notcurses (i odwrotnie).

Czym to nie jest: kompatybilna implementacja klątw X/Open lub zamiennik ncurses w istniejących systemach.

Notcurses wycofuje interfejs API X/Open Curses dostarczony jako część pojedynczej specyfikacji UNIX. Ta specyfikacja jest od dawna przestarzała i na przykład nie obsługuje funkcjonalności terminala, takich jak nieindeksowany 24-bitowy kolor. W związku z tym notcurses nie zastępuje klątw. Jest mniej przenośny i zdecydowanie testowany na mniejszej liczbie sprzętu.
Jeśli to możliwe, notcurses używa biblioteki terminfo dostarczonej z ncurses, czerpiąc ogromne korzyści z jej przenośności.
Notcurses udostępnia zaawansowaną funkcjonalność umożliwiającą interakcję z użytkownikami na stacjach roboczych, telefonach, laptopach i tabletach.

Po co korzystać z tej niestandardowej biblioteki?

  • Bezpieczeństwo wątków i efektywne wykorzystanie w programach wielowątkowych było rozważane od samego początku.

  • Bardziej dobrze sformatowany interfejs API w porównaniu do X/Open:

    • Eksportowane identyfikatory są poprzedzane, aby uniknąć kolizji przestrzeni nazw.

    • Plik obiektu biblioteki eksportuje minimalny zestaw znaków. Tam, gdzie jest to praktyczne, kod statyczny jest używany tylko w nagłówkach linii. Ułatwia to optymalizację kompilatora i skraca czas ładowania.

  • Wszystkie interfejsy API natywnie obsługują uniwersalny zestaw znaków (Unicode). Interfejs API komórek opiera się na koncepcji Rozszerzony klaster grafów Unicode.

  • Funkcje wizualne, w tym obrazy, czcionki, filmy, tekst o wysokim kontraście, ikonki i obszary przezroczyste. Wszystkie interfejsy API natywnie obsługują 24-bitowy kolor, kwantyzowany zgodnie z potrzebami terminala.

  • W przeciwieństwie do licencji Apache2 dramat w kilku aktach, czyli licencję ncurses (ta ostatnia jest podsumowana jako „przeformułowanie MIT-X11”).

Od poprzedniej znaczącej wersji 1.1.0 dodano ogromną liczbę funkcji. Główne zmiany:

  • Widget odczytujący do wprowadzania dowolnych ciągów znaków połączonych z czytaniem ciągów

  • Widżet podprocesu umożliwiający tworzenie podprocesu, zarządzanie nim i przesyłanie strumieniowe jego wyników.

  • Linux 5.3+ wykorzystuje nowy mechanizm clone3+pidfd do zarządzania procesami bez sytuacji wyścigu.

  • Widżet Fdplane do przesyłania strumieniowego dowolnego deskryptora pliku na płaszczyznę (na której zbudowany jest podproces). Obydwa umożliwiają wywołania zwrotne stylizowania tekstu lub manipulowania nim w inny sposób.

  • Obrót płaszczyzn i efekty wizualne. Ładowanie wizualizacji z pamięci. Losowe blittingowanie RGBA/BGRx.

  • Menu można umieścić na jednej (lub obu) płaszczyznach górnej i dolnej.

  • Duże ulepszenia w trybie bezpośrednim.

  • Wypełnienia, gradienty i tekst o wysokim kontraście.

  • Dodano Tetris jako przykład.

  • Opakowania C++ autorstwa Marka Habersacka mają teraz możliwość zgłaszania wyjątków (w razie potrzeby).

  • Zaktualizowano i przetestowano Python i Rust FFI.

Demo wideo z komentarzem autora
Książka „Hakowanie planety! z Notcourses” autora

Źródło: linux.org.ru

Dodaj komentarz