Servo – движок, написанный с нуля на языке программирования Rust. Он отличается лучшей безопасностью, модульностью, а также исключительно высокой производительностью за счёт алгоритма параллельной компоновки страниц и новых парсеров CSS3 и HTML5 на Rust. Два важных компонента используют существующие модули на C++ от Mozilla: это движок SpiderMonkey для обработки JavaScript и библиотека 2D-графики Azure для OpenGL и Direct3D.
Сравнение производительности Servo с другими браузерами, 3 марта 2016 г.
Chrome Canary – 15 FPS
Mozilla Firefox Developer – 9 FPS
Apple WebKit Nightly – 5 FPS
Mozilla Servo – 60 FPS
В данный момент Servo работает под 64-битным Linux, 64-битной OS X, Android и Gonk (Firefox OS). Правда, есть ряд багов с рендерингом. Servo идеально отображает browser.html, но на реальных сайтах возникают проблемы. К июню разработчики хотят исправить баги с рендерингом наиболее актуальных сайтов — Github, Duckduckgo, Hackernews и Reddit. Открыты соответствующие тикеты.
— github.com/servo/servo/issues/9914 [meta] баги github.com
— github.com/servo/servo/issues/9915 [meta] баги duckduckgo
— github.com/servo/servo/issues/9916 [meta] баги hackernews
— github.com/servo/servo/issues/9917 [meta] баги reddit
Высокий уровень параллелизма — ключевое достоинство Servo. Оно позволяет использовать многоядерную архитектуру современных процессоров. Разработчики объясняют причины, которые сподвигли их на создание нового движка. Во-первых, современные движки огромны, это миллионы строк кода. Такой объём кода невозможно оптимизировать, он слишком велик и не поддаётся рефакторингу. Легче переписать с нуля.
Нынешние браузеры, в том числе Firefox, разработаны много лет назад для одноядерных процессоров и совсем простеньких веб-страниц. Всё это наследие сохраняется в нынешнем коде, от которого лучше избавиться.
Вторая причина, по словам разработчиков, это небезопасность C++. Большинство уязвимостей в современных браузерах связаны с эксплуатацией модели памяти C++. В отличие от него, Rust – быстрый и безопасный язык программирования, с автоматическим управлением памятью, без состояний гонки, со встроенным параллелизмом и т.д.
Презентация "Servo: Building a Parallel Browser"
Комментарии (48)
meider
16.03.2016 12:39Ну ведь еще оптимизации под процессор — intel, amd их то будут учитывать? Или опять поддерживать древний хлам вроде атлонов и пней
MayRiv
16.03.2016 12:45+4Вспомниается амбициозный парень, собиравший на хабре деньги на разработку браузера в одиночку, который утверждал, что знает как ускорить браузер в разы по сравнению с текущими вариантами. Люди тогда смеялись и не верили ему.
kafeman
16.03.2016 13:54Не знаю, почему вас минусуют, но я тоже его вспомнил, когда впервые услышал про Servo.
Rivethead
16.03.2016 14:58+6всего-то надо было сперва сделать Rust, а потом с имеющимся опытом за плечами запилить новый движок. делов то!
koceg
16.03.2016 14:10К июню разработчики хотят исправить баги с рендерингом наиболее актуальных сайтов — Github, Duckduckgo, Hackernews и Reddit.
Я понимаю, «актуальность» — понятие индивидуальное. Но серьёзно, DuckDuckGo? Что там рендерить-то? Почему тогда не google.com?xerxes
16.03.2016 15:13+3Под «наиболее актуальных» следует читать «наиболее простых, состоящих из одной html страницы»
Stronix
16.03.2016 14:11+1Хм, а если начать с упрощения подсчёта строк ;) Например
$ grep -R "" --include="*.c" --include="*.cpp" --include="*.h" --include="*.tbl" | wc -l
deniskx
16.03.2016 14:14Всегда было интересно, его будут поддерживать сайтописатели? А то получится как Opera с Presto, движок может и крутой, а особенности реализации никто не учитывает. Мозилла, конечно, популярнее Оперы, но до Гугла далеко и популярность продолжает снижаться. Вот если бы гугл такое выкатил, тогда другое дело.
koceg
16.03.2016 14:40Как это никто не учитывает? До того, как от presto отказались большинство сайтов его поддерживали и "учитывали особенности реализации".
Сайтописатели будут поддерживать то, чем пользуются их посетители.
ganzmavag
16.03.2016 16:04+4По-моему хорошая новость, это в любом случае прогресс и какие-то новые решения.
albik
16.03.2016 19:46FPS, параллельная компоновка, многопроцессорность — но вот сходу не удалось нагуглить тесты по загрузке CPU и потреблению памяти. Обещается аналогичное потребление памяти, но вот как-то берут сомнения — то же самое говорили и при прикручивании SpiderMonkey, мол, все будет огонь и совсем занидорога по ресурсам, что из этого получилось — все и так видят, страница чуть посложнее «Hello, world» при рендере тянет мегабайт на 100.
lksdfj89
16.03.2016 22:19Т.е. теперь при открытие нескольких тяжёлых вкладок браузер будет «забивать» не одно ядро, а весь процессор?
Arhitecter
16.03.2016 23:30Судя по тому, как сейчас работают Opera Presto и Edge — главная беда в прожорливости яваскрипта, а поскольку по этой части Мозилла ничего не меняет, то и возлагать особых надежд не стоит :(
Olegi4
17.03.2016 09:21Что Вы имеете ввиду про Opera и Edge — они хорошо работают с JS?
Arhitecter
18.03.2016 01:55Ну, скажем так, Opera Presto в обработке яваскрипта осталась такой, как была, и любая прожорливая страница (тот же ютуб) начинает биться в конвульсиях. Но она совершенно спокойно работает на пк с 1Gb? оперативной памяти, позволяя открывать приличное количество вкладок. Причём, во всём остальном скорость 12-ой оперы шикарна. Edge, с другой стороны, наибольшие усилия приложил именно к оптимизации движка, который обрабатывает JS, и во многом преуспел. На данный момент — самый комфортный современный браузер для слабого железа. Как прожорством к оперативке, так и использованию процессора. Если я активно использую тот же Хром на своём старом ноутбуке, то после четвертой вкладки он неистово тормозит, и если открываются какие-то особенно тяжелые сайты, то тот нагревается до такого состояния, что может уйти в автоматическое отключение. Лиса лучше, но оперативку ест тоже весьма активно и если что-то не так, просто с натугой вылетает.
Olegi4
18.03.2016 07:59+1Спасибо за развернутый ответ. Буду иметь ввиду. Для себя пока выбрал решение: FF + NoScript, ибо с включенным JS тяжко — CPU загружен, вентиляторы шумят… А так сразу — тишина и покой :)
EndUser
16.03.2016 23:46Эх, если бы найти способ хронометрировать загрузку в разбивке по аддонам/расширениям…
Скорость работы чистого Fx/Chromium меня устраивает, меня не устраивает чистый Fx/Chromium.
(Но из-за мощности расширений симпатичнее Fx)
Кто подскажет, как замерить какой аддон сколько времени сжирает? Без мучительного «по одному, по половине отключать подключать».
Что касается «переписать с нуля», это сразу и прямо навевает воспоминания о классическом программистском юморе.
Но надежда на шустрый браузер таки теплится… :-)
Ajex
17.03.2016 01:29А может кто подскажет, есть ли в природе какой-то стабильный браузер, хотя бы мало-мальски поддерживающий основные стандарты, чтобы можно было его использовать на старых ноутах. Просто сейчас у меня хром умудряется тормозить на SSDшке, i7 и с 32 гб памяти, я уже и не знаю, что ему нужно для полного счастья.
Про старые и говорить уже нечего, хотя раньше на них можно было вполне комфортно работать.Ezhyg
17.03.2016 01:46Опера? :) (старая конечно же)
Palemoon на основе Огнелисы.
Пытался вспомнить один мелкий и лёгкий браузер на хромиуме, лежит на живой флешке, а она не под рукой, не смог… но там на иконке привидение (вроде бы).
Alexey9846
17.03.2016 09:36SeaMonkey работает вполне сносно на дохлом целероне и гигабайте памяти, рекомендую.
mozilla-russia.org/products/seamonkey
deniskx
17.03.2016 12:24-1Хромобраузеры нормально работают на старых процессорах, хотя бы P4 с HT. Но им надо много памяти, особенно если много вкладок открывать. Если RAM 1 Гб и 2-4 вкладки используется обычно, то пойдут. Иначе лисобраузеры, из-за своей монолитности и одноядерности тормозят на тяжелых сайтах заметно сильнее, иногда даже подвешивая интерфейс, но едят мало памяти, на 1 Гб RAM с подкачкой можно открывать очень много вкладок. Если ставить блокировщик рекламы, то ublock. В крайнем случае можно поставить еще более оптимизированную для старых ПК Opera Presto, но у нее уже очень много проблем с сайтами и тогда ни в коем случае не ставить расширение Adblock, а пользоваться родным блокировщиком. Главное имхо движок, различия в производительности у клонов минимальны. И я бы избегал слишком старых версий, они могут быть даже медленнее с современным web-ом, потому что новые версии все время оптимизируют. Та же Presto в целом шустрее, но сложные тяжелые сайты, типа FB ее уже вешают. То есть смотря еще какие сайты.
deniskx
17.03.2016 12:30А еще в Presto на слабых CPU (да и не только) сильно тормозит CSS анимация, в то время как в FF и Chrome вполне нормально.
vlivyur
17.03.2016 12:39Единственный сайт, который вешает presto — ulmart.ru. Но это проблемы сайта. С fb особых проблем не было.
deniskx
17.03.2016 14:29Вот еще что заметил и что меня на старой машине сильно напрягло. Обычно на старых системах еще используют XP и там, если свернуть Оперу и уйти чай попить пару минут, вернувшись и развернув она сильно тормозит, потому что все сбросила в своп. Я заметил, что лиса до последнего все держит в памяти и пользоваться ей комфортно при малом ОЗУ. Может это какой-то хак, обычно программы при сворачивании данные сбрасывают, но реально полезный, особенно заметно на тяжелых приложениях типа браузера.
Можно файл подкачки отключить, тогда Опера будет летать. Но при недостатке памяти программы будут вылетать, а это не вариант.
Ezhyg
19.03.2016 08:57Для старых ноутов (смотря насколько старых) можно ещё попробовать RemixOS (или другой «андроид x86») или CloudReady. Использую их на нетбуке Samsung NC110.
XanderBass
17.03.2016 11:35-1То есть Огнелис таки на время перестанет тормозить и откушивать половину ОЗУ?
ImMetatron
17.03.2016 23:49Большие надежды, лишь бы никто их не выкупил и не прикрыл всё это до поры до времени. Либо наоборот.
Propp
18.03.2016 09:32+1Оно же вроде OpenSource — даже если их прикупят, совсем закрыть не получится.
edikl
18.03.2016 15:01Интересно, а почему ещё jquery не включили в базовую поставку браузеров? Чтобы она (библиотека jquery) сама обновлялась вместе с браузером. А разработчикам сайтов достаточно было бы указать в head какой нибудь код, для включения встроенной jquery на сайте.
Akuma
Скорость — это конечно здорово, а что у него с поддержкой стандартов? Еще один недобраузер нам точно не нужен.
exfizik
Еще альфа не вышла, а уже началось… "недобраузер".
Akuma
Просто я веб-разработчик )) По понятным причинам интересуюсь заранее :)
exfizik
Интересно, какой ответ вы ожидаете заранее? Неужто вам скажут "не, на фиг стандарты, будем писать просто сферический браузер в вакууме"? :) Наверняка планируется поддержка на уровне того, что сейчас Фаерфокс поддерживает — иначе какой смысл?
Akuma
О, такое ощущение, что разработчики ИЕ6 примерно так и думали при разработке :)
SilverTH
Ну в начале ИЕ6 ничего был. Проблема была в том, что после его выхода думать перестали.
chaloner
2001 год.
15 лет прокло, Карл, 15 лет.
Может хватит пинать дохлого осла?
mkv
А при чем здесь ИЕ6? ИЕ6 стал таким из-за отсутствия конкуренции, у firefox ее более чем хватает.