Компания Google представила релиз web-браузера Chrome 31. Браузер построен на кодовой базе свободного проекта Chromium и отличается использованием логотипов Google, встроенной поддержкой Flash и PDF, наличием системы отправки уведомлений в случае краха, системой автоматической установки обновлений и передачей при поиске RLZ-параметров.
Основные изменения:
- Включение поддержки PNaCl (Portable Native Client) в настольных версиях Chrome, которая позволяет организовать выполнение приложений, написанных на языках C и С++, в специальном изолированном окружении web-браузера, независимо от текущей аппаратной архитектуры. Например, скомпилированный для PNaCl исполняемый файл может быть выполнен в различных версиях Chrome и Chrome OS, независимо от аппаратной архитектуры (x86, x86_64, ARM, MIPS) и типа операционной системы, демонстрируя при этом производительность, близкую к нативному исполняемому файлу для целевой платформы.
В PNaCl вместо генерации машинного кода приложение компилируется в универсальный биткод LLVM и поставляется в непривязанном к конкретной платформе исполняемом формате ".pexe". В процессе запуска приложения промежуточный биткод LLVM транслируется в машинный код текущей платформы на стороне локальной системы пользователя. Вынос стадии генерации машинного кода на сторону клиента позволяет разработчику не задумываться о низкоуровневых оптимизациях и поддержке новых архитектур - новые методы оптимизации и поддержка новых аппратаных платформ производится без пересборки пользовательского приложения, через обновление транслятора. Вместо стандартной системной Си-библиотеки в PNaCl предлагается к использованию многоплатформенная библиотека newlib, развиваемая компанией Red Hat;
- Для приложений Chrome Apps добавлена поддержка обработчиков URL, позволяющих привязать приложение к определённым типам URL (например, можно организовать открытие ссылок на документы в web-редакторе). Также добавлен fileSystem API для доступа к содержимому локальных директорий, что позволяет организовать совместный доступ к файлам между web-приложением и нативными программами (например, web-редактор кода может быть сопряжен с нативным клиентом Git). При использовании fileSystem API запрашивается подтверждение от пользователя;
- В версии Chrome для платформы Android появилась поддержка создания ярлыков для запуска программ в полноэкранном режиме. Ярлыки позволяют разместить на домашнем экране Android ссылки для быстрого открытия сайтов или web-приложений в браузере. В отличие от ранее поддерживаемых схем, новая возможность позволяет открыть связанные с ярлыком сайты или web-приложения в отдельном полноэкранном окне, лишённом традиционных элементов управления браузером (без адресной строки, вкладок, меню и кнопок). Для добавления ярлыка на домашний экран в меню Chrome добавлена специальная кнопка;
- В версии для Android, Windows и Chrome OS добавлена поддержка вызова requestAutocomplete(), созданного для организации управления процессом автозаполнения форм ввода, что может быть использовано для отдельной обработки ранее вводимых данных для заполнения форм с параметрами платежей (например, разработчик может определить какую платёжную систему ранее использовал пользователь и сформировать заполненный шаблон). Имена автоматически заполняемых атрибутов задаются через свойство autocomplete в тегах input и select. При доступе к данным автозаполнения пользователю выводится предложение подтвердить операцию;
- Для WebRTC добавлена поддержка протокола SCTP для организации канала передачи данных, допускающего прямую P2P-передачу данных между браузерами клиентов;
- Добавлена поддержка прозрачности для видео WebM (например для воспроизведения кадров, снятых на фоне зелёного экрана, поверх статичной картинки);
- В Chrome для Android добавлена поддержка JavaScript Web Speech API с реализацией средств для распознавания речи;
- Возможность создания непрозрачных canvas при задании атрибута "{ alpha: false }" в getContext('2d');
- В 2D canvas добавлена поддержка метода "ellipse";
- Снят экспериментальный префикс с реализации Media Source API, предоставляющей средства для локальной генерации мультимедийных потоков из JavaScript-приложений. Поддержка динамического формирования контента для тегов video и audio открывает новые возможности для разработчиков web-приложений, упрощая реализацию адаптивного потокового вещания и смещённых во времени live-трансляций.
Кроме нововведений и исправления ошибок, в новой версии устранено 27 уязвимостей, из которых 21 проблема помечена как опасная, а одной уязвимости присвоен статус критической проблемы, позволяющей обойти все уровни защиты браузера и совершить атаку на систему пользователя. Критическая проблема и 16 опасных уязвимостей выявлены сотрудниками Google в процессе внутреннего аудита кодовой базы. В процессе аудита также были выявлены уязвимости во внешних компонентах libjpeg, libjpeg-turbo и libjingle, код которых используется в Chrome.
В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 7 премий на сумму 15000 долларов США (одна премия в $4000, две по $2000, две по $1000 и две по $500, плюс две поощрительные надбавки по $2000).
Тем временем, в бета-версии Chrome 32 появилась возможность наглядного выявления вкладок, в которых воспроизводится звук (на подобных вкладках отображается специальный значок), что позволяет быстро оценить источник звука. Кроме того, в бета-версии активирована функция автоматически блокировки вредоносных файлов.