Релиз Firefox 18 c переходом на новый JIT-компилятор IonMonkey

Релиз Firefox 18 c переходом на новый JIT-компилятор IonMonkey

Компания Mozilla официально выпустила релиз браузера Firefox 18, который примечателен переходом на новый JIT-компилятор IonMonkey.

В самое ближайшее время ветка Firefox 19 перейдёт на стадию бета-тестирования и будет отделена aurora-ветка версии Firefox 20.

Согласно шестинедельному циклу разработки, релиз 19-й версии Firefox произойдет 19 февраля, а Firefox 20 - 2 апреля.

Релизы Seamonkey 2.15 и Thunderbird 18 ожидаются в ближайшие часы.

Вместе с Firefox 18 появились корректирующие релизы веток, отличающихся длительными сроками поддержки - Firefox 17.0.2 и Firefox 10.0.12, в которых замечено лишь исправление серьёзных ошибок и уязвимостей.

Обновления, предназначенные для ESR-ветки Firefox 10 будут выпускаться до появления обновления Firefox 17.0.3, которое должно состояться 19 февраля и предложит пользователям ветки Firefox 10 мигрировать. Выполнение миграции будет автоматическим.

Что касается улучшений, представленных в Firefox 18, необходимо отметить следующие:

1. Прежде всего, это переход на новый JIT-компилятор IonMonkey, позволяющий в значительной степени повысить производительность javascript-приложений путем использования передовых техник оптимизации и нового метода JIT-компиляции. Тестовый комплект Kraken Firefox 18 с IonMonkey продемонстрировал 26-процентный рост производительности по сравнению с Firefox 17. А в тесте V8 benchmark версия Firefox 18 на 7% опередила Firefox 17.

В числе особенностей IonMonkey надо отметить систему вероятностной оценки типов, предлагающую гибридный метод динамического и статического анализа, предоставляющего возможность с большой точностью сопоставить типы для каждого свойства и каждой переменной javascript-программы, что позволяет не выполнять большое количество дополнительных проверок во время выполнения javascript.

Помимо этого, в IonMonkey реализованы адаптивные методы выбора техники оптимизации для выполняемого javascript-кода. JIT-компиляторы двух предыдущих поколений (JägerMonkey и TraceMonkey) поддерживали лишь прямую однонаправленную трансляцию javascript в машинные инструкции, а новый IonMonkey дополнительно оснащен средствами обратной связи, которые позволяют оценивать эффективность результата исполнения сгенерированных инструкций и если возникнет необходимость - вносить оптимизации и корректировки, которые учитывают особенности выполняемого javascript-кода.

В числе других улучшений в IonMonkey:

- новый анализатор границ, который позволяет не делать лишние проверки выхода за границы буфера;

- поддержка Dead Code Elimination (DCE) с целью удаления неиспользуемого кода;

- линейная схема распределения регистров Linear Scan Register Allocation (LSRA), которая также применяется в таких проектах, как LLVM и HotSpot JVM;

- поддержка метода Global Value Numbering (GVN) с целью ликвидации избыточного кода;

- задействование техники Loop-Invariant Code Motion (LICM) с целью выноса инструкций за пределы циклов;

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

Эта функция по умолчанию будет отключена, а с целью ее активации необходимо сменить настройки при помощи about:config.

Любопытно, что предложение реализовать эту возможность поступило еще 12 лет тому назад.

3. Поддержка спецификации W3C Touch Events, которая дополняет ранее внедренную экспериментальную технологию MozTouch Events с реализацией способов обработки событий от сенсорных дисплеев, в т.ч. и с поддержкой мультитач.

4. Появилась начальная поддержка протокола WebRTC, который позволяет реализовать web-приложения, обладающие средствами для видео и аудио коммуникаций в режиме реального времени, работающих в браузере через специальный javascript API. К примеру, в виде web-приложения можно оформить программный VoIP-телефон. Чтобы включить поддержку WebRTC, необходимо указать в настройках about:config такую строчку: media.peerconnection.enabled=true.

5. Увеличена производительность кода, который отвечает за переключение между вкладками.

6. Переход на улучшенный алгоритм масштабирования HTML позволил повысить качество отображения изображений.

7. Поддержка CSS3-свойства Flexbox с целью упрощенной блочной компоновки элементов на Интернет-странице. Поддержка Flexbox по умолчанию отключена, а чтобы ее активировать, нужно в настройках about:config указать layout.css.flexbox.enable=true.

8. Появилась поддержка DOM-свойства window.devicePixelRatio, которое определяет относительный размер пикселей. Это позволяет обеспечить в приложениях выбор корректного размера элементов управления и кнопок с учётом параметров дисплея;

9. Поддержка псевдокласса "@supports", который позволяет протестировать поддержку специфичных значений и свойств CSS. Если же отсутствует поддержка запрошенного свойства, разработчики получают возможность задействовать запасной вариант в программе в прозрачном режиме.

10. Ускорение процесса запуска веб-обозревателя с помощью оптимизации обработки сертификатов для дополнений, заверенных цифровой подписью.

11. Поддержка Retina-дисплеев высокой четкости (HiDPI), которые устанавливаются в MacBook Pro.

А теперь рассмотрим улучшения в версии Firefox 18 для Android.

1. По умолчанию включены средства защиты от вредоносного ПО и фишинга (режим Safe Browsing). Теперь браузер выводит специальное уведомление еще до начала открытия веб-ресурса для сайтов, находящихся в чёрном списке, уличенных в фишинге или тех, на которых присутствует вредоносный код.

2. Интегрирован поисковый виджет сервиса Google Now, который ориентирован на предоставление нужной информации, востребованной с учётом текущего местоположения.

3. Появилась опциональная поддержка вывода поисковых рекомендаций, появляющихся по мере ввода запроса в адресную строку Awesome Bar.

4. Поддержка новых шрифтов, которые поставляются с Firefox.

5. Переработан код обновления браузера.

6. Для устройств, функционирующих на базе Android 4.2, появилась функция голосового уведомления о статусе скачивания контента через касание к дисплею.

Помимо новшеств и исправлений ошибок в Firefox 18.0 была устранена целая серия уязвимостей, некоторая часть которых помечена как критические, то есть такие, которые могут во время открытия специально оформленных веб-страниц привести к выполнению кода злоумышленников.

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

Кроме того, стоит упомянуть о демонстрации прототипа смартфона с мобильной платформой Firefox OS на выставке потребительской электроники, проходящей в эти дни.

Как сообщают разработчики, осуществляющие демонстрацию, платформа полностью функциональна, а ее окончательное доведение до готовности можно ожидать уже через две недели.