Firefox 40 перешёл на стадию бета-тестирования, что ознаменовало прекращение формирования базовой функциональности и сосредоточение всего внимания на выявлении ошибок и контроле качества. Одновременно сформирован выпуск Firefox Developer Edition 41, который заменил собой aurora-ветку, в рамках которой проводится оценка готовности тех или иных новшеств для последующего бета-выпуска. Загрузить бета-выпуск можно на данной странице, а Firefox Developer Edition здесь. Релиз Firefox 40 намечен на 11 августа, а Firefox 41 на 22 сентября.
В отличие от выпусков aurora, Developer Edition адаптирован для обособленного использования, запускается с использованием отдельного профиля и отличается изменением оформления - задействована отдельная тёмная тема оформления, в панель вынесены кнопки для быстрого доступа к инструментам для web-разработчиков, изменены некоторые настройки по умолчанию, в состав включены дополнения ADB Helper и Valence (бывший Firefox Tools Adapter).
Улучшения, представленные в бета-версии Firefox 40:
- Доступен для тестирования многопроцессный режим, при котором обработка содержимого каждой вкладки выполняется в отдельном процессе, отдельно от обработки интерфейса. Подобный подход позволяет увеличить безопасность, повысить надёжность, оптимизировать высвобождение системе неиспользуемой памяти и заметно ускорить работу браузера на многоядерных системах за счёт организации параллельного выполнения неблокирующих друг друга операций. Статус совместимости с браузерными дополнениями можно оценить на данной странице. Многопроцессный режим доступен в форме opt-in, т.е. для использования требует явной активации.
- Защита от загрузки потенциально навязываемого программного обеспечения;
- На платформе Linux увеличена производительность прокрутки, вывода графики и воспроизведения видео, за счёт выноса выполнения данных операций в отдельный поток из основной нити.
- Увеличена плавность и надёжность CSS-анимации за счёт реализации асинхронного вывода анимации, обработка которой осуществляется вне основной нити;
- На стартовой странице (Suggested Tiles) реализована новая система контекстной рекламы . Вместо фиксированных рекламных ссылок, при открытии новой вкладки отображаются рекламные элементы, выбранные на основе близости по тематике к часто используемым пользователем сайтам. Выбор осуществляется через загрузку списка рекламных сайтов, который сопоставляется по маске со списком из 100 наиболее часто открываемых страниц. Рекламные ссылки выделены так, что их нельзя спутать с обычными ссылками на стартовой странице.
- Возможность указания в сообщениях коммуникационного клиента Hello ссылок для дополнительного контекста;
- Реализована техника асинхронной инициализации плагинов NPAPI, которая позволила сократить время появления на страницах контента, связанного с плагинами;
- Новое оформление менеджера установки дополнений, унифицированное с появившимся в Firefox 38 новым интерфейсом настройки;
- Внедрение процесса проверки дополнений по цифровой подписи. Для дополнений без подписи в Firefox 40 будет выводиться предупреждение. Далее, на протяжении двух последующих релизов Firefox, разработчикам неподписанных дополнений дадут возможность пройти стадию рецензирования, после чего работа неподписанных дополнений в релизах и бета-выпусках будет заблокирована. В ночных сборках и Developer Edition будет оставлена возможность установки любых дополнений. Целью введения проверки по цифровой подписи является повышение уровня защиты от распространения вредоносных и шпионящих за пользователями дополнений.
- В расширениях прекращена поддержка бинарных XPCOM-компонентов. XPCOM представляет собой похожую на CORBA систему, предоставляющую слой для включения библиотек, разработанных на различных языках программирования. XPCOM устарел и испытывает проблемы со стабильностью, так как интеграции в дополнения бинарных библиотек, загружаемых в единое адресное пространство основного процесса, может использоваться для манипуляции внутренними структурами Firefox. Вместо XPCOM для обращения к бинарным библиотекам из дополнений предложено использовать предоставляемый в SDK API system/child_process, основанный на запуске отдельного дочернего процесса для внешнего кода.
- Снижено потребление памяти при масштабировании JPEG-изображений и увеличена скорость их отрисовки;
- В IndexedDB по умолчанию применены кратковременные транзакции (non-durable, только изоляция, без сохранения состояния на диске);
- Реализован параметр AudioBufferSourceNode.detune, позволяющий модулировать скорость воспроизведения звука;
- Добавлен новый инструментарий для анализа производительности и профилирования web-приложений. Инструментарий позволяет изучить работу web-приложения или сайта с точки зрения производительности, выявить узкие места и оценить эффективность оптимизации. Динамика изменения производительности наглядно отображается на шкале времени, на каждом участке которой можно посмотреть детализацию о выполняемом в указанный момент коде.
- Внесены улучшения в реализацию интерфейса мониторинга сетевой активности: обеспечен сбор статистики даже при неактивной вкладке мониторинга, добавлен режим быстрого просмотра параметров при загрузке страницы из кэша, в контекстное меню добавлены пункты для копирования в буфер обмена данных POST-запроса, параметров URL и заголовков.
- В инструменты для web-разработчиков добавлен наглядный всплывающий блок подсказок для настройки значений фильтра CSS для выбранного блока;
- Новый инструмент, позволяющий выводить горизонтальные и вертикальные линейки на странице;
- Вызовы Console API из SharedWorker и ServiceWorker теперь отображаются в web-косноли;
- В системе инспектирования добавлена возможность поиска во всех фреймах, имеющихся на странице.
- На платформе Windows обеспечена более плавная прокрутка и анимация за счёт задействования аппаратного vsync;
- Поддержка платформы Windows 10, в том числе режима для планшетных ПК.
- В версии для платформы Android реализован вывод истории открытия страниц при длительном удержании касания на кнопках "вперёд" и "назад", добавлена поддержка Android Presentation API для организации передачи содержимого экрана на другие устройства.
Улучшения, ожидаемые в Firefox 41:
- Внесены изменения, обеспечивающие совместное использование таблиц стилей между страницами, благодаря чему удалось существенно сократить потребление памяти при использовании AdBlock Plus. Ранее Firefox создавал для каждой страницы новые копии таблицы стилей, используемой для скрытия элементов в AdBlock Plus, вместо совместного использования всеми страницами. На страницах с больших числом iframe, которые часто применяются для вставки рекламных блоков, потребление памяти возрастает кардинально. После принятия патча потребление памяти при открытии тестовой страницы, содержащей 429 блоков iframe, снизилось с 1960 Мб до 450 Мб, т.е. почти на полтора гигабайта. Тестирование на других сайтах также подтверждает общее снижение потребления памяти на 3.6 Мб на каждый открытый документ. В среднем, из-за применения патчей экономия в тестовой конфигурации составила 90 Мб при использовании AdBlock Plus, а потребление памяти без AdBlock Plus снизилось на 40 Мб.
- Удалена опция browser.newtab.url, позволявшая отображать произвольную страницу вместо интерфейса открытия новой вкладки. В качестве причины удаления упоминаются многочисленные жалобы на злоупотребления. Например, некоторые поставщики программного обеспечения через данную опцию организовывают показ своих сайтов на странице новой вкладки, а разработчики вредоносного ПО пользуются указанной возможностью для перенаправления пользователя на рекламные сайты. Для пользователей, которым необходимо открывать отдельную страницу для новых вкладок предлагается установить специальное дополнение.
- Поддержка использования SVG-изображений для миниатюр favicons;
- Для работы WebRTC теперь применяется PFS (Perfect Forward Secrecy)
- Новое оформление интерфейса восстановления сеанса и приветственного экрана;
- Значительное увеличение производительности декодирования изображений. При прокрутке на некоторых устройствах скорость отображения изображений увеличилась в два раза;
- Возможность копирования и вырезания web-контента из блоков JavaScript при помощи конструкции document.execCommand("cut"/"copy");
- Включение по умолчанию API MessageChannel и MessagePort;
- Включение по умолчанию API CSS Font Loading;
- Для SVG-элементов реализовано свойство transform-origin, позволяющее изменить точку применения трансформации для элемента;
- Объект Navigator.onLine, отражающий состояние сетевого соединения (работает в Windows и OS X);
- В интерфейса анализа сетевой активности сетевые запросы теперь могут быть экспортированы в формате HAR;
- Реализован Cache API, позволяющий запрашивать данные из кэша по идентификаторам окна, Worker и ServiceWorker;
- Просмотр кода страницы теперь производится не в отдельном окне, а во вкладке;
- В интерфейс инспектирования добавлена кнопка New Rule, позволяющая быстро добавить новые CSS-правила для текущей страницы;
- Добавлена возможность создания скриншота элемента из интерфейса просмотра разметки;
- В интерфейсе инспектирования реализована возможность копирования элемента с определением правил CSS через контекстное меню Copy Rule Declaration;
- В версии для платформы Android обеспечена возможность отправки запросов в разные поисковые системы через панель поиска, реализован режим закрытия вкладки через экранный жест, возможность открытия внешних URL из приложений Android в фоновом режиме, поддержка выбора сохранённых параметров входа для сайта через специальный всплывающий диалог, улучшено управление закладками, в том числе добавлено определение дубликатов закладок.