Июл 13, 2016 - 0 Comments - Интересно -

Первый релиз многопоточного HTML-парсера MyHTML

13.07.2016 15:28 Первый релиз многопоточного HTML-парсера MyHTML

После нескольких месяцев разработки увидел свет первый релиз быстрого 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.

  1. Главная ссылка к новости (https://github.com/lexborisov/…)
Автор новости: Alexander
Тип: Программы
Ключевые слова: myhtml, html
При перепечатке указание ссылки на opennet.ru обязательно

 
+2 +/
Написано всё очень оптимистично и красиво! Это в итоге использовать можно будет для построения браузерного движка или какие у этого парсера предназначения?
 
 
 
 
+/
layout, reflow and other

Будет, всё будет. Если почитать статьи к парсеру то там я указывал, что рендер уже есть, но всё написано в черновом варианте. Сейчас же идет разработка чистовика. JS будет сторонний, пока сторонний.

На хабре (https://habrahabr.ru/post/277031) я описывал что за проект и к чему стремлюсь. Возможно скоро я буду делать его не один.

 
 
 
 
+/
В те 10% задачи, которые займут 90% времени.

> Или отрисовка шрифтов — это ключевое что есть?

Это с какой стороны смотреть. Но если относить в other — вас ждёт открытий чудных, и больших надежд на релиз такого браузера я бы не питал.

 
+/
Уважаемый, если вы не измените своим принципам и до конца будете идти по пути качественного кода, с упором на скорость и минимальные потребляемые ресурсы, и в итоге если ещё появится браузер, которым можно будет пользоваться на системе с 256 мегами памяти, то мой вам поклон и запись в постоянные донейторы вашего проекта.
 
 
+/
Вообще-то один из простых способов получить скорость и компактность — не давать страницам делать лишнего. Ну там — дефолтное полное отключение JS в неактивных вкладках (с белым списком, конечно), а тои полная выгрузка уже распарсенного и загруженного контента в каких-то разумных (вероятно, слегка сжатых чем-то быстрым вроде imagezero и подобных) форматах на диск, возможность прервать исполнение уже загруженного и запущенного JS и тому подобное. И этого всего в существующих браузерах здорово не хватает.
 
 
 
+10 +/
Это какая ошибка, ведь Rust самый лучший язык, у servo самые лучшие разработчики на самом лучшем языке, Mozilla Foundation самая прогрессивная опен-сорс компания, а поезд Си давно ушел!
 
–2 +/
Мсье точно смотрел графики? В каком месте на порядок? Или кто-то не знает, что порядок это в 10 раз, а не на 10%?
 
+1 +/
>Сравнение с парсером на Rust — http://lexborisov.github.io/benchmark-html-persers/

Упс.

P.S. Да, некрасиво получается. С другой стороны, кто-то, вообще, на ASM’е пишет.

P.P.S. Больно всяким бидонистам? Обидно? Ну так что делать-то? У низкоуровневых (при наличии мозгов у прогера) — оверхеда-то —  нет.

P.P.S.S.
Слава-слава бидонистам! (нужную фигню — вставить)
Прирожденным оптимистам, (на предмет проца и памяти)
Кто способен в поле чистом
Всю систему положить! (без комментариев. Наблюдал)

 
 
+/
Полезнее было бы вместо очередного коммента про проявление отсутствия интереса выложить свои тесты. Пусть даже если эти тесты были сделаны на твоей любимой десяточке.
 
+/
Ну, вообще-то реальный веб это не HTML5.

Парсер для настоящего (а не сферического в вакууме) браузера, к сожалению, должен поддерживать различные ухищрения чтобы парсить кривой HTML и XHTML различных версий.

 
+/
Хм, лично меня (в разумных пределах) скорость не очень волнует. Но вот если разработчику будет, в отличие от хромозилл, не плевать на мнение пользователей — это будет основной фичей. Начиная, скажем, от изначальной разработки с учётом возможности эффективно резать/править контент (адблокеры и прочее) и заканчивая удобным контролем из внешнего софта. Или, допустим, возможность подгрузки сишных плагинов, имеющих те же возможности, что и родные компоненты.
 
 
 
+/
Да. именно это и значит. Примеры я перечислял. А ещё есть многолетние баги, зато какой-нибудь покет запихнуть — это пожалуйста.

Вот на разработчиков им не плевать, это да. А как защищать пользователя от кривых рук и эгоистичности этих разработчиков — так в кусты.

 

 Добавить комментарий

Навигация

This entry passed through the Full-Text RSS service — if this is your content and you’re reading it on someone else’s site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.
Recommended article from FiveFilters.org: Most Labour MPs in the UK Are Revolting.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Человек ? *