После нескольких месяцев разработки увидел свет первый релиз быстрого HTML парсера MyHTML. Код написан на языке Си и распространяется под лицензией LGPL v2.1.
Особенности MyHTML:
- Высокая производительность;
- Асинхронная обработка токенов и построение дерева
- Полная поддержка спецификаций HTML 5, по состоянию на 19.06.2016;
- Возможность манипулировать элементами и их атрибутами: добавлять, удалять, изменять
- Поддерживает 39 кодировок на входе. На выходе только UTF-8, вся работа внутри только в UTF-8
- Автоматическое определение кодировки текста. Сейчас доступны unicode: UTF-8, UTF-16LE, UTF-16BE (+ определение по BOM) и русские: windows-1251, koi8-r, iso-8859-5, x-mac-cyrillic, ibm866
- Может работать в Single Mode — без тредов. Так же может быть собран без потоков.
- Возможность парсить фрагменты HTML или парсить кусками (chunks);
- Не имеет внешних зависимостей;
- Поддерживает C99;
- Не испытывает проблем если на вход подать бинарный файл или не валидный HTML;
Проект также предоставляет большую подборку примеров по использованию и описание API. На основе данного проекта будет разрабатывается рендер HTML на «голом» Си без зависимостей. Скоро будет завершён CSS-парсер MyCSS.