El 13 de marzo, después de cuatro meses de desarrollo, se lanzó la versión 2.7.0 de la biblioteca de alto rendimiento lexbor, diseñada para procesar formatos HTML 5 y CSS.
Características principales del proyecto:
- completo soporte para las especificaciones de WHATWG, W3C y Unicode: HTML5, CSS Syntax 3, Encoding, URL, Anexo #15 del estándar Unicode, Estándar técnico Unicode #46, Punycode, Anexo #15 del estándar Unicode, Estándar técnico Unicode #46;
- manipulación de elementos y atributos del DOM: agregar, modificar, eliminar y más;
- soporte para el análisis de fragmentos HTML;
- superación de todas las pruebas de construcción de árboles DOM;
- probado en más de 200 millones de páginas HTML utilizando ASAN;
- soporte para la detección de codificación a partir del flujo de bytes;
- análisis de estilos CSS en atributos de etiquetas y en la etiqueta ;
- búsqueda de elementos HTML utilizando selectores CSS;
- soporte para 40 codificaciones en codificación y decodificación;
- soporte para codificación y decodificación tanto con búfer como sin búfer;
- escrito en C (estándar C99) sin dependencias externas y distribuidor bajo la licencia Apache 2.0;
- la biblioteca está dividida en módulos (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils), que se pueden compilar y usar como bibliotecas separadas (con la opción CMake LEXBOR_BUILD_SEPARATELY=ON);
- vínculos y envolturas de terceros para lenguajes Crystal, D, Elixir, Julia, PHP, Python y Ruby.
Principales cambios:
- Se agregó soporte para la amalgamación (combinación de archivos de origen en un solo archivo). Esto simplifica la integración de la biblioteca en proyectos: basta con conectar un archivo en lugar de usar todo el sistema de construcción. Más detalles se encuentran en la documentación.
- Se llevó a cabo una reestructuración masiva del código responsable del análisis de CSS, en preparación para implementar el motor de diseño.
- Se agregó verificación del flujo entrante en el analizador HTML (esto es necesario únicamente para generar errores de análisis de acuerdo con la especificación). Desactivado por defecto, más detalles en html/#tokenizer-options.
- Preparación del código para el lanzamiento del motor de diseño.
- Mejoras y correcciones generales.
Fuente: linux.org.ru
