Foi lançada uma nova versão da biblioteca notcurses v1.4.x «a saga continua! wu-tang! wu-tang!»
Notcurses é uma biblioteca TUI para emuladores de terminal modernos. Literalmente, traduzido – não xingamentos (not curses). É escrita em C, utilizando cabeçalhos seguros em C++. Estão disponíveis wrappers para Rust, C++ e Python.
O que é: uma biblioteca que simplifica TUI complexos em emuladores de terminal modernos, maximizando o suporte a cores brilhantes e Unicode. Muitas tarefas delegadas a curses podem ser executadas com notcurses (e vice-versa).
O que isso não é: uma implementação compatível de X/Open curses ou uma substituição do ncurses em sistemas existentes.
Notcurses renuncia à API X/Open Curses, fornecida como parte da Especificação Single UNIX. Esta especificação está há muito desatualizada e, por exemplo, não suporta funcionalidades de terminal como cor de 24 bits não indexada. Assim sendo, notcurses não é uma substituição de curses. É menos portátil e definitivamente testada em menos equipamentos.
Sempre que possível, notcurses usa a biblioteca terminfo fornecida com ncurses, extraindo o máximo de sua portabilidade.
Notcurses abre funcionalidades avançadas para interação com usuários em estações de trabalho, telefones, laptops e tablets.
Por que usar esta biblioteca não padrão?
A segurança de thread e o uso eficiente em programas multithread desde o início foi uma consideração de design.
Uma API mais bem estruturada em comparação com X/Open:
Os identificadores exportados têm um prefixo para evitar colisões de espaço de nomes.
O arquivo objeto da biblioteca exporta um conjunto mínimo de símbolos. Onde apropriado, código estático é usado apenas para cabeçalhos em minúsculas. Isso facilita a otimização do compilador e reduz o tempo de carregamento.
-
Todas as APIs originalmente suportam um conjunto universal de símbolos (Unicode). A API para células é baseada no conceito de Cluster de Grapema Estendido do Unicode.
Recursos visuais, incluindo imagens, fontes, vídeos, texto de alto contraste, sprites e áreas transparentes. Todas as APIs suportam nativamente cor de 24 bits, quantificada conforme necessário para o terminal.
-
Licença Apache2, ao contrário de drama em vários atos, que é a licença do ncurses (a última resumida como «reformulação MIT-X11»).
Desde o último lançamento significativo 1.1.0, um vasto número de funcionalidades foi adicionado. Principais mudanças:
Widget de leitura para entrada de strings de forma arbitrária vinculadas às strings para leitura
Widget subprocesso para gerar um subprocesso, gerenciá-lo e transmitir seus resultados de volta.
No Linux 5.3+ é utilizado um novo mecanismo clone3+pidfd para gerenciar processos sem condição de corrida.
Widget Fdplane para transmissão de um descritor de arquivo arbitrário para um plano (onde o subprocesso é construído). Ambos permitem que callbacks estilize ou manipule o texto de outras formas.
Rotação de planos e efeitos visuais. Carregamento de visualizações da memória. Blitting arbitrário RGBA/BGRx.
O menu pode ser colocado em qualquer uma (ou em ambas) das superfícies superiores e inferiores.
Grandes melhorias no modo Direct.
Polyfills, gradientes e texto de alto contraste.
Tetris adicionado como exemplo.
As wrappers C++ de Marek Habersack agora podem lançar exceções (se necessário).
Python e Rust FFI atualizados e testados.
Vídeo demo com comentários do autor
Livro "Hacking The Planet! with Notcurses" do autor
Fonte: linux.org.ru

