13 maart, na vier maanden ontwikkeling, is versie 2.7.0 van de hoogpresterende bibliotheek uitgekomen lexbor, bedoeld voor het verwerken van HTML 5- en CSS-formaten.
Belangrijkste kenmerken van het project:
- volledige ondersteuning van de WHATWG-, W3C- en Unicode-specificaties: HTML5, CSS Syntax 3, Encoding, URL, Unicode Standard Annex #15, Unicode Technical Standard #46, Punycode, Unicode Standard Annex #15, Unicode Technical Standard #46;
- manipulatie van DOM-elementen en -attribuuten: toevoegen, wijzigen, verwijderen en meer;
- ondersteuning voor het parseren van HTML-fragmenten;
- doorlopen van alle DOM-boomstructuurtests;
- getest op meer dan 200 miljoen HTML-pagina's met behulp van ASAN;
- ondersteuning voor het bepalen van de encoding op basis van byte-stromen;
- analyse van CSS-stijlen in tag-attributen en in de -tag;
- zoeken naar HTML-elementen met CSS-selectors;
- ondersteuning voor 40 coderingen bij coderen en decoderen;
- ondersteuning voor ongebufferde en gebufferde codering en decodering;
- geschreven in C (C99-standaard) zonder externe afhankelijkheden en verspreid onder de Apache 2.0-licentie;
- de bibliotheek is verdeeld in modules (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils) die afzonderlijk kunnen worden gecompileerd en gebruikt als losse bibliotheken (met de CMake-optie LEXBOR_BUILD_SEPARATELY=ON);
- externe bindings en wrappers voor talen Crystal, D, Elixir, Julia, PHP, Python en Ruby.
Belangrijkste wijzigingen:
- Ondersteuning voor amalgamatie (samenvoegen van bronbestanden in één bestand) is toegevoegd. Dit vereenvoudigt de integratie van de bibliotheek in projecten – het is voldoende om één bestand toe te voegen in plaats van het hele buildsysteem te gebruiken. Zie voor meer details de documentatie.
- Er is een grootschalige herstructurering van de code die verantwoordelijk is voor de CSS-parsing uitgevoerd ter voorbereiding van de implementatie van de opmaak.
- Een controle van de binnenkomende stroom in de HTML-parser is toegevoegd (dit is uitsluitend nodig voor het weergeven van parser-fouten volgens de specificatie). Standaard uitgeschakeld, meer details zie html/#tokenizer-options.
- Voorbereiding van de code voor de release van de opmaakengine.
- Algemene verbeteringen en bugfixes.
Bron: linux.org.ru
