Download Latest Version v3.0.0 source code.tar.gz (5.8 MB)
Email in envelope

Get an email when there's a new version of Lexbor

Home / v2.7.0
Name Modified Size InfoDownloads / 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).

Source: README.md, updated 2026-03-12