lexbor 2.5.0

good-penguin.png

13 августа, после девяти месяцев разработки, состоялся выпуск 2.5.0 высокопроизводительной библиотеки lexbor, предназначенной для парсинга HTML 5 и CSS, с полной поддержкой современных спецификаций.

Проект написан на языке C (стандарт C99) без сторонних зависимостей и распространяется по лицензии Apache 2.0.

Библиотека разделена на модули (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils), которые могут быть скомпилированы и использованы как раздельные библиотеки (с опцией CMake LEXBOR_BUILD_SEPARATELY=ON).

Для библиотеки есть сторонние биндинги и врапперы для языков Crystal, D, Elixir, Julia, Python, PHP и Ruby.

Список изменений:

  • Добавлен модуль Engine.
  • Добавлены бенчмарки.
  • Добавлена опция CMake LEXBOR_BUILD_WITH_MSAN для компиляции с MSAN.
  • В парсер CSS добавлена поддержка токена UNICODE-RANGE.
  • Добавлена ссылка на сторонние биндинги для языка Julia.
  • Исправлено неопределённое поведение в функции lexbor_str_append().
  • Исправлено неопределённое поведение в функции lexbor_in_node_make().
  • Исправлено медленное перераспределение памяти для длинных строк.
  • В парсере HTML исправлено сообщение об ошибке в ссылке на пробельные символы.
  • В парсере HTML исправлено сообщение об ошибке при разборе самозакрывающихся тегов.
  • В парсере HTML исправлено клонирование атрибутов при некорректном HTML.
  • В парсере HTML исправлено дублирование атрибутов в пространстве имен svg.
  • В парсере CSS исправлен разбор числового токена.
  • Исправлена ошибка двойного освобождения памяти стилей элемента при его удалении.
  • При передаче хоста с портом (например, «example.com:8080») в функцию lxb_url_api_hostname_set(), теперь возвращается ошибка, как указано в спецификации URL.
  • Исправлен разбор селектора :has().
  • Разрешено использование тега внутри тега .
  • Изменена сериализации атрибутов, символы < и > теперь экранируются.
  • Значительное сокращение размера таблиц Unicode.
  • Уменьшен размер многобайтовых кодировок и увеличена производительность их декодирования.
  • Рефакторинг кода модуля CSS.
  • Переписан поиск узлов по селекторам.

>>> Подробности на GitHub

©  Linux.org.ru