Den 13. marts, efter fire måneders udvikling, blev version 2.7.0 af det højtydende bibliotek lexbor, designet til at behandle HTML 5 og CSS formater.
Hovedtræk ved projektet:
- fuld understøttelse af WHATWG, W3C og Unicode specifikationer: HTML5, CSS Syntax 3, Encoding, URL, Unicode Standard Annex #15, Unicode Technical Standard #46, Punycode, Unicode Standard Annex #15, Unicode Technical Standard #46;
- manipulation af DOM-elementer og attributter: tilføjelse, ændring, sletning og mere;
- understøttelse af parsnings af HTML-fragmenter;
- bestået alle DOM-træ opbygnings tests;
- testet på mere end 200 millioner HTML-sider ved hjælp af ASAN;
- understøttelse af kodningsdetektering baseret på byte-strømme;
- analyse af CSS-stilarter i tagattributter og i <style> tag;
- søge efter HTML-elementer ved hjælp af CSS-vælgere;
- understøttelse af 40 kodninger ved kodning og dekodning;
- understøttelse af både buffered og non-buffered kodning og dekodning;
- skrevet i C (C99 standard) uden tredjeparts afhængigheder og distribueret under Apache 2.0 licens;
- biblioteket er opdelt i moduler (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils), som kan kompilere og bruges som separate biblioteker (med CMake option LEXBOR_BUILD_SEPARATELY=ON);
- tredjeparts bindinger og wrappers til sprog Crystal, D, Elixir, Julia, PHP, Python og Ruby.
Vigtige ændringer:
- Tilføjet understøttelse af amalgamation (sammenfletning af kildefiler til én fil). Dette forenkler integrationen af biblioteket i projekter – det er tilstrækkeligt bare at inkludere én fil i stedet for at bruge hele build-systemet. Læs mere i dokumentationen.
- Der er foretaget en omfattende omskrivning af koden ansvarlig for CSS-parsing, for at forberede implementeringen af layout.
- Tilføjet kontrol af den indkommende strøm i HTML-parseren (dette er nødvendigt for at give parsing-fejl i overensstemmelse med specifikationen). Deaktiveret som standard, læs mere html/#tokenizer-options.
- Forberedelse af koden til udgivelse af layoutmotoren.
- Generelle forbedringer og fejlrettelser.
Kilde: linux.org.ru
