Компания Google представила релиз web-браузера Chrome 49. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающий основой Chrome. Браузер Chrome отличается использованием логотипов Google, идущим в комплекте модулем Flash, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента, системой автоматической установки обновлений и передачей при поиске RLZ-параметров.

Основные изменения в Chrome 49:

  • Прекращено формирование сборок для 32-разрядных систем Linux и прекращена поддержка платформ Ubuntu 12.04, Debian 7 (wheezy), Windows XP, Windows Vista, OS X 10.6, 10.7 и 10.8. Начиная с Chrome 49 Linux-сборки будут формироваться только для 64-разрядных систем. Возможность сборки кодовой базы Chromium для 32-разрядных систем оставлена, что позволит дистрибутивам продолжить выпуск актуальных 32-разрядных пакетов с Chromium. Поддержка 32-разрядных архитектур x86 и ARM в кодовой базе Chromium будет сохранена как минимум в течение пяти лет. Всем пользователям 32-разрядных Linux-систем рекомендуется перейти на использование Chromium. Пользователям Ubuntu 12.04 и Debian 7 рекомендуется обновить свои системы до выпусков Ubuntu 14.04 и Debian 8.
  • Поддержка определения собственных свойств CSS (CSS custom properties) путем использования переменных, содержащих часто используемые параметры CSS. Переменные позволяют упростить поддержание большого числа одинаковых значений в различных файлах CSS, например, типовых цветов, которые упоминаются во многих местах страницы. Задание подобных параметров через переменные существенно упрощает изменение их значений - вместо повсеместной правки отдельных элементов во множестве файлов, достаточно изменить лишь присвоение базового значения переменной. Для ссылки на переменную в CSS предлагается использовать функцию var(), допускаются математические выражения над переменными. Пример:
    
    
    :root {
    
    --main-color: #06c;
    
    --margins: 2;
    
    --margins-double: (var(--margins) * 2);
    }
    
    #foo h1 {
    
    color: var(--main-color);
    
    }
    
    
  • Представлен Background Sync API для выполнения операций фоновой синхронизации в service worker, решающих проблему c потерей изменений в случае закрытия страницы до окончания передачи локальных изменений на сервер (например, почтовый клиент может потерять находящиеся в очереди сообщения, если пользователь закроет страницу сразу после их отправки). В случае пропадания сетевого соединения, Background Sync позволяет отложить выполнение операции синхронизации до момента появления доступности сети, даже если страница досрочно закрыта пользователем;
  • Расширена поддержка стандарта ECMAScript 2015, степень охвата элементов которого в JavaScript-движке V8 оценивается в 91%. В новом выпуске добавлена поддержка деструктуризации данных в массивах и объектах, определения используемых в функции аргументов по умолчанию (например, "function multiply(a, b = 1)"). В объектах Proxy и Reflect API добавлена возможность изменения поведения при поиске и назначении элементов. Реализована возможность использования блочных конструкций, таких как class и let, вне режима strict;
  • Элемент "keygen", который использовался для генерации или передачи ключей через HTML-формы, переводится в разряд устаревших. Так как он не отвечает современным требованиям безопасности (сертификат передаётся в MIME-блоке application/x-x509-user-cert и может быть подменён), поле keygen будет по умолчанию возвращать пустое значение, а сертификат из application/x-x509-user-cert не будет загружаться и устанавливаться по умолчанию;
  • Возможность использования MediaRecorder API для записи звука и видео без привязки к каким-либо плагинам (перед началом записи пользователю выводится окно с предложением подтвердить операцию);
  • В инструменты для разработчиков добавлены средства отслеживания процесса загрузки шрифтов, указанных через свойство CSS font-display;
  • Реализована возможность на стороне сайта выявлять каким именно клиентом service worker инициирован запрос на извлечение данных (передаётся атрибут FetchEvent.clientID);
  • Поддержка плавной анимации прокрутки, выполняемой с использованием дискретных устройств, таких как колесо мыши;
  • Добавлены дополнительные средства предотвращения модификации защищённых cookie при доступе не через HTTPS. Для идентификации secure cookies можно использовать специальный префикс "__Secure-";
  • В Remote Playback API добавлено свойство disableRemotePlayback, позволяющее запретить удалённое воспроизведение контента через устройство Google Cast;
  • Увеличена точность определения времени наступления события (Event.timeStamp теперь имеет тип DOMHighResTimeStamp вместо DOMTimeStamp), что позволяет более точно контролировать операции прокрутки и движения указателя;
  • Добавлен URLSearchParams API, предоставляющий программный интерфейс для манипуляции параметрами в строке запроса (блок, идущий после "?" в URL);
  • В WebAudio добавлена поддержка фильтров IIR, операций OfflineAudioContext.suspend()/resume() и обработчиков Promise в DecodeAudioData;
  • Возможность использования service worker для открытия нового URL в окне через вызов WindowClient.navigate();
  • Возможность отследить на стороне сайта включения режима экономии трафика через установку заголовка Save-Data;
  • В Chromium добавлена поддержка стандартного набора шифров ChaCha20-Poly1305 в TLS;
  • Прекращена поддержка свойства Document.defaultCharset;
  • В версии для Android добавлена поддержка механизма Physical Web, позволяющего быстро получать ссылки на окружающие объекты при помощи Bluetooth-меток Eddystone;
  • Добавлена новая внутренняя страница chrome://network-errors со списком возможных сетевых ошибок;
  • Возможность использования оформления Material Design для панели, меню и адресной строки. Новое оформление можно включить через установку значения Material в опции "chrome://flags/#top-chrome-md";
  • Возможность включения тёмного оформления инструментов для разработчиков (в настройках DevTools нужно нажать F1 и выбрать тему "Dark");
  • Реализована экспериментальная поддержка расчёта коэффициента востребованности сайта, на основе которого браузер может динамически управлять выделением ресурсов, отдавая предпочтение часто посещаемым сайтам. Включение режима производится при помощи флага chrome://flags/#enable-site-engagement-service, посмотреть статистику можно на странице chrome://site-engagement;

Кроме нововведений и исправления ошибок, в новой версии устранено 26 уязвимостей, многие из которых выявлены в результате автоматизированного тестирования инструментами AddressSanitizer и MemorySanitizer. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе, за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 14 премий на сумму 51 тыс. долларов США (по одной премии $14500, $8000, $7500 и $5000, две премии $3000, три премии $2000, три премии $1000, две премии $500).

Источник: http://www.opennet.ru/opennews/art.shtml?num=43977