13 de março, após quatro meses de desenvolvimento, foi lançado a versão 2.7.0 de uma biblioteca de alto desempenho lexbor, destinada ao processamento de formatos HTML 5 e CSS.
Principais características do projeto:
- suporte completo às especificações WHATWG, W3C e Unicode: HTML5, CSS Syntax 3, Codificação, URL, Anexo Padrão Unicode nº 15, Padrão Técnico Unicode nº 46, Punycode, Anexo Padrão Unicode nº 15, Padrão Técnico Unicode nº 46;
- manipulação de elementos e atributos DOM: adição, modificação, exclusão e mais;
- suporte à análise de fragmentos HTML;
- passagem em todos os testes de construção de árvores DOM;
- testado em mais de 200 milhões de páginas HTML usando ASAN;
- suporte à determinação de codificação a partir do fluxo de bytes;
- análise de estilos CSS em atributos de tags e na tag ;
- busca de elementos HTML usando seletores CSS;
- suporte a 40 codificações durante codificação e decodificação;
- suporte a codificação e decodificação em modo não bufferizado e bufferizado;
- escrita na linguagem C (padrão C99) sem dependências externas e distribuída sob a licença Apache 2.0;
- a biblioteca é dividida em módulos (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils), que podem ser compilados e usados como bibliotecas separadas (com a opção CMake LEXBOR_BUILD_SEPARATELY=ON);
- bindings e wrappers de terceiros para as linguagens Crystal, D, Elixir, Julia, PHP, Python e Ruby.
Principais mudanças:
- Adicionada a suporte à amalgamação (união de arquivos fonte em um único arquivo). Isso simplifica a integração da biblioteca em projetos - é suficiente incluir um arquivo em vez de usar todo o sistema de build. Para mais detalhes, veja documentação.
- Uma grande reestruturação do código responsável pela análise CSS foi realizada, preparando-o para a implementação do layout.
- Adicionada a verificação do fluxo de entrada no analisador HTML (isso é necessário exclusivamente para mostrar erros de análise conforme a especificação). Desativado por padrão, mais detalhes em html/#tokenizer-options.
- Preparação do código para o lançamento do motor de layout.
- Melhorias gerais e correções de bugs.
Fonte: linux.org.ru
