13 marzo, dopo quattro mesi di sviluppo, è stata rilasciata la versione 2.7.0 di una libreria ad alte prestazioni lexbor, progettata per elaborare i formati HTML 5 e CSS.
Caratteristiche principali del progetto:
- supporto completo per le specifiche WHATWG, W3C e Unicode: HTML5, CSS Syntax 3, Encoding, URL, Unicode Standard Annex #15, Unicode Technical Standard #46, Punycode, Unicode Standard Annex #15, Unicode Technical Standard #46;
- manipolazione di elementi e attributi DOM: aggiunta, modifica, rimozione e altro;
- supporto per l'analisi dei frammenti HTML;
- superamento di tutti i test di costruzione degli alberi DOM;
- testato su oltre 200 milioni di pagine HTML utilizzando ASAN;
- supporto per la determinazione della codifica tramite flusso di byte;
- analisi degli stili CSS negli attributi dei tag e nel tag ;
- ricerca di elementi HTML tramite selettori CSS;
- supporto per 40 codifiche durante la codifica e decodifica;
- supporto per la codifica e decodifica non bufferizzata e bufferizzata;
- scritto in C (standard C99) senza dipendenze esterne e distribuito con licenza Apache 2.0;
- la libreria è suddivisa in moduli (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils), che possono essere compilati e utilizzati come librerie separate (con l'opzione CMake LEXBOR_BUILD_SEPARATELY=ON);
- binding esterni e wrapper per i linguaggi Crystal, D, Elixir, Julia, PHP, Python e Ruby.
Principali modifiche:
- Aggiunto supporto per l'amalgamazione (unione dei file sorgente in un unico file). Questo semplifica l'integrazione della libreria nei progetti – è sufficiente collegare un file invece di usare l'intero sistema di build. Maggiori dettagli in documentazione.
- Eseguita una revisione completa del codice responsabile dell'analisi CSS, preparandolo per l'implementazione del layout.
- Aggiunto un controllo del flusso in ingresso nell'analizzatore HTML (necessario esclusivamente per la segnalazione di errori di analisi secondo le specifiche). Disabilitato per impostazione predefinita, maggiori dettagli in html/#tokenizer-options.
- Preparazione del codice per il rilascio del motore di layout.
- Miglioramenti generali e correzioni di bug.
Fonte: linux.org.ru
