LINUX.ORG.RU

lexbor 2.5.0

 , , , ,


1

2

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().
  • Разрешено использование тега <hr> внутри тега <select>.
  • Изменена сериализации атрибутов, символы < и > теперь экранируются.
  • Значительное сокращение размера таблиц Unicode.
  • Уменьшен размер многобайтовых кодировок и увеличена производительность их декодирования.
  • Рефакторинг кода модуля CSS.
  • Переписан поиск узлов по селекторам.

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

★★★★★

Проверено: Dimez ()

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

и что например может Tag ? Зачем он нужен. как раздельная библиотека не тянущая весь зоопарк.

ни-че-го..на гит-хаб посмотрел, ну реально ничего. Что может скомпилироваться само по себе (почти точно что нет), возможно и неплохо. Но нахуа ??

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 2)

Crystal, D, Elixir, Julia, Python, PHP и Ruby.

Хосспади, половина полумёртвые, половина - экзотика…

seiken ★★★★★
()
Ответ на: комментарий от seiken

питон и живой, и не экзотика

Отмена рабства также является позитивным изменением для африканского континента.

Lucky ★★
()
Ответ на: комментарий от Lucky

Похоже, эта пятница удалась особенно.

LamerOk ★★★★★
()

Не хватает более развернутого описания библиотеки.

u-235
()

В то время, когда уже чисто html сайтов почти не осталось, нужны полные эмуляторы браузеров для разбора, чтобы DOM парсить, а не теги.

Имхо, для серьезных вещей нужен полный браузер, запускать, загружать страницу, производить какие то манипуляции с дом/js и на выходе получать json с результатом. Браузер должен быть запущен и сидеть в памяти, а апи команд - демон, сидящий на http

gobot ★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.