FTXUI 7.0.0









No dia 13 de maio, após mais de um ano de desenvolvimento, foi lançado o versão 7.0.0 da biblioteca multiplataforma FTXUI, projetada para criar aplicações em C++ com interface de texto e distribuída sob a licença MIT.

Recursos da biblioteca:

  • estilo funcional, semelhante ao React JS;
  • estilo simples e elegante (na opinião do autor da biblioteca);
  • manipulação de eventos de teclado e mouse;
  • suporte a UTF8 e Unicode;
  • suporte a True Color;
  • suporte à alteração do estilo do cursor;
  • suporte a animações;
  • suporte a desenho;
  • sem dependências externas;
  • multiplataforma (Linux/MacOS, WebAssembly, Windows).
Mudanças

Documentação

  • Corrigida a geração de documentação com Doxygen.
  • Adicionada um tema personalizado para Doxygen.
  • Divisão da documentação em várias páginas.

Compilação

  • Adicionado script tools$ amalgamate.py para gerar o código-fonte "amalgamado": ftxui.cpp (534 KB), ftxui.hpp (110 KB) e ftxui_all.hpp (643 KB).
  • Adicionado suporte a módulos C++20.
  • Adicionado suporte a Meson.
  • Removida a dependência do pthread.
  • Corrigido o suporte ao Bazel.
  • Outras melhorias.

Mudanças de compatibilidade com versões anteriores

  • Renomeações:
    • Pixel para `Cell
    • Image para Surface
    • ScreenInteractive para App
    • método PixelAt para CellAt
      Para garantir a compatibilidade, foram fornecidos pseudônimos e cabeçalhos, a fim de não interromper o funcionamento do código existente.
  • Uso de std::string_view em vez de const std::string& onde for possível. Isso proporciona melhor compatibilidade com literais de string e evita cópias desnecessárias.

Componentes

  • O sistema de interceptação de sinais foi melhorado e modernizado utilizando POSIX sigaction para mascaramento confiável de sinais. Proteção contra recuperação dupla do terminal ao sair do programa foi garantida através do acompanhamento atômico do estado original. Suporte a sinais POSIX adicionais (SIGBUS, SIGSYS, como falhas, e SIGQUIT, SIGHUP, como sinais de encerramento diferido) foi adicionado, além de correções de segurança para sinais assíncronos.
  • Corrigido o problema de exibição do cursor ao usar um Renderer personalizado em contêineres aninhados.
  • Corrigido o posicionamento do cursor em campos de entrada e a estabilidade de rolagem.
  • Corrigido o suporte a caracteres não ASCII no modo de entrada de senha.
  • Eliminado o piscar do cursor durante a rerenderização em App.
  • Manipulação de entrada utilizando pipes POSIX
    • Permite que os aplicativos FTXUI leiam dados do stdin (usando pipe) enquanto ainda aceitam entrada do teclado no terminal.
    • Usado por padrão.
    • Pode ser desativado usando App::HandlePipedInput(false).
    • Disponível apenas em Linux e macOS.
  • Muitos bugs corrigidos.

DOM

  • Suporte para a quebra de linha (n) dentro de text() e vtext().
  • Agora o dbox transfere o foco das camadas superiores para as inferiores, conforme a exibição visual.
  • Adicionado suporte para decoradores de borda de tabela. Isso permite, por exemplo, alterar a cor das bordas da tabela.
  • Corrigido um erro de estouro inteiro em ComputeShrinkHard.
  • Especialização adicionada em vbox/hbox/dbox para permitir o uso do contêiner Element como entrada.
  • Corrigido a adição de elementos filhos no gridbox.
  • Corrigido o display de gauge.
  • Adicionados variantes parametrizadas de decoradores flex com o parâmetro _factor. Eles permitem especificar coeficientes de estiramento ou compressão personalizados:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), além de variantes para os eixos x e y.

Otimizações de renderização

  • Otimização do movimento do cursor entre linhas no método Screen::ResetPosition (sem limpar a tela) em um conjunto parametrizado de comandos CSI para mover o cursor para cima (x1B[<n>A) em vez de emitir um x1B[1A para cada linha. Isso reduziu a quantidade de caracteres de escape por quadro durante a re-renderização (por exemplo, ~197 -> 6 bytes para uma tela com 50 linhas, redução de ~33 vezes).
  • Otimizações em Screen::ToString(), Color::Print() e string_width(), o que acelerou:
    • A renderização básica em ~27%.
    • A renderização de texto em ~27%.
    • A renderização de estilos em ~38%.

Fonte: linux.org.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster