LINUX.ORG.RU

lexbor 2.4.0

 , , , ,


1

3

13 ноября, после более года разработки, состоялся выпуск 2.4.0 высокопроизводительной библиотеки парсинга HTML5 и CSS lexbor, написанной на языке C без сторонних зависимостей, и распространяемой по лицензии Apache 2.0.

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

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

  • Core: увеличена производительность с помощью SWAR (packed SIMD);
  • URL: добавлен API для изменения объекта URL;
  • URL: добавлена возможность клонирования url;
  • URL: удаление новых строк и табуляции перед парсингом;
  • Encoding: обновлён индекс GB18030-2022;
  • Encoding: уменьшен размер статических данных;
  • URL: увеличение производительности;
  • исправления ошибок и улучшения тестов.

>>> Сайт проекта

>>> Документация

>>> Исходный код

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

★★★★★

Проверено: CrX ()
Последнее исправление: dataman (всего исправлений: 4)

@lexbor, к сожалению, тег импортозамещение не поместился. :)

dataman ★★★★★
() автор топика

Мне не нужно, но за сишку и SWAR лайк. Можно ссылку не на википедию, а на примеры SWAR в данном проекте?

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

https://github.com/lexbor/lexbor/pull/223
https://github.com/lexbor/lexbor/blob/master/source/lexbor/core/swar.h
Оказалось, что без использования SSE, AVX и т. д., в отличие от StringZilla 3.8.1.

dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от dataman

Так себе SWAR, один маленький приём в одном макросе, еще и скопированный с известного сайта. Который используется в strlen как минимум с девяностых. Я считаю это слишком мелким для упоминания в новостях как SWAR.

Ситуация прям под мем «а разговоров то было».

А вот это, извините, что?

if (LEXBOR_SWAR_IS_LITTLE_ENDIAN) {

Почему для big endian нет никакого кода в функции? Этот метод работает и для BE, нужно лишь учитывать что байты в обратном порядке при получении индекса. Это какое-то дилетантство, лайк забираю.

jpegqs
()
Последнее исправление: jpegqs (всего исправлений: 1)
Ответ на: комментарий от jpegqs

слишком мелким для упоминания в новостях как SWAR

Есть в оригинале.

лайк забираю

Но на сишке же! :)

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

Оказалось, что без использования SSE, AVX и т. д., в отличие от StringZilla 3.8.1.

Вы считаете не использование векторов плюсом? Делаешь платформо-независимый код с этим трюком, добавляешь для популярных платформ использование векторных инструкций. Будет быстро и портабельно.

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

Вы считаете не использование векторов плюсом?

Нет, конечно. Как написал @lexbor в PR:

In the end, I came to the conclusion that there is no super performance gain here.
One thing is certain, the patch does not slow down the code, it speeds it up a bit.
I’m thinking of accepting the patch, and improving SWAR usage a bit in the future.
There are many places in the lexbor project where this approach can be used, for example in CSS.

добавляешь для популярных платформ использование векторных инструкций

Думаю, автор будет не против такого PR. ;)

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

Хотелось бы еще заметить, что писал этот недо-SWAR не автор проекта, а какой-то левый человек.

Который решил для этого недо-SWAR создать аж отдельный хидер swar.h.

Код его, что делает «чуть лучше» не читает данные выровнено, а использует memcpy чтобы не решать эту проблему:

            size_t bytes;
            memcpy(&bytes, data, sizeof(size_t));

Если компилятор не соптимизирует вызов memcpy, то будет только хуже.

P.S.: Когда автор называет проект в честь себя и чем это плохо - советую посмотреть соседнюю тему про ReiserFS.

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

Когда автор называет проект в честь себя и чем это плохо

Надеюсь, что он читает ЛОР:

Последнее посещение: 06.02.24
Число комментариев: 1

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