13. mars, etter fire måneders utvikling, ble versjon 2.7.0 av det høytytende biblioteket lansert lexbor, designet for å håndtere HTML 5 og CSS-formater.
Hovedtrekkene ved prosjektet:
- full støtte for WHATWG-, W3C- og Unicode-spesifikasjoner: HTML5, CSS-syntaks 3, Koding, URL, Unicode Standard Annex #15, Unicode Technical Standard #46, Punycode, Unicode Standard Annex #15, Unicode Technical Standard #46;
- manipulering av elementer og attributter i DOM: legge til, endre, slette og mer;
- støtte for analyse av HTML-fragmenter;
- bestått alle tester for oppretting av DOM-trær;
- testet på mer enn 200 millioner HTML-sider med ASAN;
- støtte for å bestemme kodingen basert på byte-strøm;
- analyse av CSS-stiler i taggens attributter og i <style>-taggen;
- søk etter HTML-elementer med CSS-selektorer;
- støtte for 40 kodinger ved koding og dekoding;
- støtte for både buffret og ikke-buffret koding og dekoding;
- skrevet i C (C99-standard) uten avhengigheter fra tredjeparter og distribueres under Apache 2.0-lisensen;
- biblioteket er delt opp i moduler (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils) som kan kompilert og brukt som separate biblioteker (med CMake-alternativet LEXBOR_BUILD_SEPARATELY=ON);
- tredjeparts bindinger og wrappers for språk Crystal, D, Elixir, Julia, PHP, Python og Ruby.
Hovedendringer:
- Støtte for amalgamering (sammenslåing av kildefiler til én fil) er lagt til. Dette forenkler integreringen av biblioteket i prosjekter - det er tilstrekkelig å koble til én fil i stedet for å bruke hele byggesystemet. Se mer i dokumentasjonen.
- Omfattende omskrivning av koden som håndterer CSS-parsing er utført for forberedelse til implementering av layout.
- Inngangsstromsjekking i HTML-parseren er lagt til (dette er utelukkende nødvendig for å gi parser-feilmeldinger i henhold til spesifikasjonen). Deaktivert som standard, se mer html/#tokenizer-options.
- Forberedelse av koden for lansering av layoutmotoren.
- Generelle forbedringer og feilrettinger.
Kilde: linux.org.ru
