Недавно Mozilla прекратила проект Electrolysis
[1], который должен был предоставить Firefox процессы для каждой вкладки. Следовательно, я испытал облегчение, когда Дэвид Бруант
указал мне, что Mozilla не отказалась от параллельного браузера. Они работают над проектом под названием
Servo, который реализуется на
языке программирования Rust .
Серво — следующий Firefox
Firefox вырос до очень большой базы кода, написанной на C ++. Сильной стороной C ++ является скорость. Написание веб-браузера в нем создает две проблемы:
- Безопасность: одна из ключевых проблем веб-браузера — защитить пользователей от атак. C ++ является небезопасным языком (особенно когда речь идет об управлении памятью).
- Параллелизм: одноядерные скорости улучшаются с уменьшающейся скоростью, поэтому многоядерный параллелизм — лучшая стратегия для ускорения работы в сети. C ++ не идеально подходит для параллельного программирования.
В C ++ безопасность и параллелизм являются антагонистическими целями. Цитируя Брендана Эйха
[2] :
Добавление большего количества потоков для использования нескольких ядер в борьбе с ошибками безопасности — это как жонглирование командой по музыке, где проигрыватель проигрывается быстрее!
Проект Servo
[2] предназначен для создания параллельного браузера:
- Используйте Rust вместо C ++, который безопаснее и лучше приспособлен для параллелизма.
- Постарайтесь распараллелить как можно больше этапов процесса рендеринга (текущие исследования).
- Реализуйте DOM в основном на JavaScript (что делает его быстрее, потому что переключений контекста меньше).
Обратите внимание, что Servo является исследовательским проектом, он может или не может стать фактическим продуктом. Кроме того, Firefox будет развиваться параллельно; Первые голоса на Firefox 10 звучат позитивно. Например,
следующий твит от Mikeal Rogers:
Похоже, что Firefox 10 отвлечет меня от Chrome Сумасшедший быстро и новый инспектор потрясающий.
Язык программирования Rust
20 января 2012 года о выпуске Rust 0.1 было
объявлено в списке рассылки rust-dev. Объявление описывает Rust как «строго типизированный язык системного программирования с упором на безопасность и параллелизм памяти». Версия 0.1 может использоваться, но многие функции все еще находятся в процессе:
Это начальный выпуск компилятора после многолетнего цикла разработки, сосредоточенный на самостоятельном размещении, реализации основных функций и укреплении синтаксиса.
Версия 0.1 должна рассматриваться как альфа-версия, подходящая для начинающих пользователей и любителей языка. Это изящно, но оно все равно съест ваше белье.
Руст интересный язык. Для меня это выглядит как смесь C (синтаксис), Common Lisp (полиморфизм через универсальные функции), Erlang ( параллелизм в стиле Actor ), ML (неизменяемые данные, модули) и некоторые другие идеи. Следующий код из языкового руководства дает вам первое впечатление:
fn fac(n: int) -> int { let result = 1, i = 1; while i <= n { result *= i; i += 1; } ret result; }
Как системный язык, Rust разделяет несколько целей с Google Go, но его начало предшествует этому языку. Mozilla планирует использовать его для настольных приложений и на стороне сервера.
Рекомендации
- Проект Firefox Electrolysis приостановлен
- Будущее время (слайды из выступления Брендана Эйха во время раздачи Mozilla в апреле 2011 года)
Источник: http://www.2ality.com/2012/02/servo.html