| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-03-12 | 3.0 kB | |
| v2.7.0 source code.tar.gz | 2026-03-12 | 5.7 MB | |
| v2.7.0 source code.zip | 2026-03-12 | 6.1 MB | |
| Totals: 3 Items | 11.8 MB | 0 | |
Hello,
I'm glad to announce a new release of Lexbor library.
Major improvements/changes in version 2.7.0:
- Amalgamation - added support for amalgamation (combining source files into a single file). Simplifies embedding the library into projects — just connect one file instead of the entire build system. See the documentation for details: https://lexbor.com/amalgamation/
- Major refactoring of CSS Parsing code to prepare for layout.
- Added validation of incoming stream in HTML parser (this is only needed to output parse errors according to the specification). Disabled by default. See: https://lexbor.com/modules/html/#tokenizer-options
- General code preparation for the release of the layout engine.
- General improvements and bug fixes.
Added
- Added amalgamation support.
- Encoding: added prescan validation and BOM sniffing functions.
- HTML: added lxb_html_encoding_prescan() function.
- HTML: added scope categories to
<select>element per specification. - HTML: added descriptions for Tree Builder and Tokenizer errors.
- DOM: added lxb_dom_node_type() function.
- Build: added -DLEXBOR_TEST_AMALGAMATION.
- Test::HTML: added chunks tests for html5lib tests.
- Test::HTML: added more html5lib tests.
- Benchmarks::HTML: added a benchmark for HTML parsing.
- CMake: install target for use in other projects.
- Test: added support surrogate pairs for KV parser.
Fixed
- HTML: fixed parsing
<noscript>element with scripting disabled. - HTML: fixed script end tag parsing for custom tag names.
- HTML: fixed dash on EOF in comment start dash state.
- HTML: fixed potential null pointer dereference.
- HTML: serialize NULL attribute values as empty string.
- HTML: sets DOCTYPE token force-quirks flag on parse errors.
- HTML/Tag/NS: fixed interface constructors for non-HTML namespaces.
- Encoding: fixed buffer_used underflow in ISO-2022-JP encoder.
- CSS::Syntax: fixed integer overflow when parsing number exponent.
- CSS::Syntax: fixed undef token instead of URL token.
- Style: fixed use-after-free when destroying multiple stylesheets.
- Selectors: fixed returning state if not found in nth-child().
- URL: fixed "heap-buffer-overflow" for scheme is "file".
- URL: fixed "use-after-poison" for an empty path entry.
- URL: the cloning function does not copy the type for IPv4 and IPv6.
- Punycode: fixed heap-buffer-overflow in encoding data.
Changed
- HTML: improve tokenizer spec compliance for parse error reporting.
- HTML: simplification of token emit in the tokenizer.
- CSS: bring syntax parsing into compliance with the specification.
- All resources moved to extern declarations.
Thank you to all contributors who contributed to this version! Your efforts help make Lexbor better for all users.
Special thanks: Tim Düsterhus (@TimWolla), Nora Dossche (@ndossche), Oliver (@NoNoNo), Matheus Gabriel Werny (@Spixmaster), Jon Surrell (@sirreal), @nickchomey, Nikita Sveshnikov (Positive Technologies), Harrison Green (@hgarrereyn).