Представлен релиз Rust 1.16 — системного языка программирования, нацеленного на безопасную работу с ресурсами, скорость и параллельное выполнение кода. В этот релиз вошли 1364 патча от 137 разработчиков.
Если у вас уже установлена предыдущая версия Rust, то обновиться до Rust 1.16 очень легко:
$ rustup update stable
Самое крупное нововведение в Rust 1.16 — новая субкоманда cargo check направленная на ускорение процесса разработки.
Удалена поддержка NPAPI-плагинов (Silverlight, Java, Unity, Gnome Shell Integration, Google Hangouts). Исключение сделано лишь для Flash. Поддержка плагинов сохранена (но отключена по умолчанию, для включения необходимо воспользоваться настройкой plugin.load_flash_only = false) в Firefox 52 ESR, который будет получать обновления безопасности до марта 2018 года. Кроме того, Firefox 52 и 52 ESR станут последними выпусками, поддерживающими процессоры без SSE2 (Pentium 3, Athlon XP, VIA C3), операционные системы Windows XP/Vista и 32-разрядные версии Mac OS X. Пользователи этих операционных систем будут автоматически пересажены на ESR-выпуск, чтобы не остаться без обновлений безопасности.
Если на http-странице содержится форма ввода пароля, то предупреждение о небезопасном вводе будет показано прямо возле соответствующего поля ввода, а автозаполнение будет отключено.
Добавлена возможность отправки открытой вкладки с одного устройства на другое через синхронизацию.
Улучшен интерфейс загрузок:
При неудаче выводится уведомление на панель инструментов.
Быстрый доступ к недавним загрузкам расширен с трёх до пяти элементов.
Включена поддержка чернового варианта спецификации TLS 1.3 (1310516).
Удалена поддержка Battery Status API (1313580). Предполагалось, что веб-приложения и сайты смогут при низком уровне заряда аккумулятора устройства отдавать облегчённую версию контента или экстренно сохранять данные. На практике этой возможностью пользуются лишь для отслеживания пользователей (уровень заряда служит одним из параметров, позволяющих точно идентифицировать клиента), а некоторые сервисы могут повышать расценки для пользователей, чей телефон вот-вот разрядится.
Движок обзавёлся поддержкой WebAssembly (эффективного низкоуровневого языка программирования, выполняющегося в браузере).
Совместный доступ к экрану теперь поддерживает предварительный просмотр и больше не требует присутствия домена в белом списке.
Прекращена поддержка SHA-1 сертификатов, выпущенных публичными удостоверяющими центрами. Кроме того, в Firefox 52 ESR отключена поддержка сервисных воркеров и пуш-уведомлений. Эти компоненты будут подвергнуты существенным изменениям, которые невозможно было бы портировать в ESR-выпуск, получающий лишь обновления безопасности.
Включено автоматическое обнаружение captive portal. При обнаружении сети, использующей эту технологию, браузер выдаст предупреждение и откроет страницу входа в новой вкладке.
На платформе Windows улучшена совместимость со сторонними раскладками клавиатуры, не входящими в стандартную поставку Windows. Также, без объяснения причин удалена поддержка DRM-модуля Adobe Primetime CDM.
22 декабря состоялся второй в этом году значительный выпуск SeaMonkey — набора интегрированных сетевых приложений, включающего в себя браузер, почтовый клиент, RSS/Atom-агрегатор и простой WYSIWYG-редактор HTML-страниц. Выпуск 2.46 синхронизирован с кодовой базой Firefox 49. Разработчики отмечают улучшение работы с HTML5 и JavaScript.
Из состава удалены IRC-клиент ChatZilla, DOM Inspector и календарь-планировщик Lightning. Теперь их предлагают устанавливать в виде дополнений из каталога. Также убраны старые JavaScript и web-инструменты SeaMonkey. Вместо них предлагаются штатные средства разработки из состава Firefox, однако Firebug может быть обновлён, а в качестве замены Venkman можно использовать Tiny JavaScript Debugger.
Компания Mozilla опубликовала финансовый отчет за 2015 год. Общий доход составил 421 млн долларов США. По сравнению с прошлыми годами наблюдается рост доходов: 2014 — 329 млн, 2013 — 314 млн, 2012 — 311 млн. Основным источником дохода являются отчисления за использование поисковых сервисов Bing, Yahoo, Yandex, Amazon и eBay, отчисления от Pocket, а также доход от размещения рекламы на стартовой странице. Оставшаяся часть (4,2 млн) получена через пожертвования. Количество пожертвований также выросло по сравнению с предыдущими годами: 2014 — 4,2 млн, 2013 — 2,2 млн, 2012 — 855 тысяч.
Основные затраты в 2015:
разработка: 214 млн (212 млн в 2014);
маркетинг: 60 млн (41 млн в 2014);
административные расходы: 39 млн (38 млн в 2014).
Всего затраты составили 337,7 млн долларов (в 2014 году — 317,8, в 2013 — 295 млн, в 2012 — 145,4 млн). Объём средств, вложенных в инвестиции в 2015 году, составил 227 млн долларов (в 2014 году — 137 млн). Размер активов на начало года — 266 млн долларов, на конец года — 323 млн долларов.
Джеймс Шарп (James Sharp), отметившийся ранее в проекте X.org, в начале мая 2016 начал разработку проекта Corrode, целью которого является трансляция программ, написанных на C, в исходный код на Rust. Corrode написан на Haskell и распространяется под GNU GPLv2.
16 июля 2016 года Президент России подписал «Поручение об обеспечении разработки и реализации комплекса мероприятий, необходимых для перехода органов власти на использование российских криптографических алгоритмов и средств шифрования».
Документ предписывает «Обеспечить разработку и реализацию комплекса мероприятий, необходимых для поэтапного перехода федеральных органов исполнительной власти, органов государственной власти субъектов Российской Федерации, государственных внебюджетных фондов, органов местного самоуправления на использование российских криптографических алгоритмов и средств шифрования в рамках исполнения полномочий при электронном взаимодействии между собой, с гражданами и организациями».
При электронном взаимодействии между собой граждане и организации используют браузеры, для доступа к порталам госуслуг, и почтовые клиенты. Для защиты трафика между порталом и браузером он должен шифроваться, почтовые клиенты должны уметь как подписывать, так и шифровать почтовые сообщения. И если мы говорим о Российской Федерации, то это должны быть российские криптоалгоритмы (ГОСТ 28147-89, ГОСТ Р 34.11-94/2012, ГОСТ Р 34.10-2001/2012, ГОСТ Р 34.12-2015 и ГОСТ Р 34.13-2015).
В настоящее время широкое распространение получили браузер Mozilla Firefox и почтовый клиент Mozilla Thunderbird, дистрибутивы которых входят во все отечественные операционные системы семейства Linux. Вместе с тем одним из сдерживающих моментов их широкого распространения, особенно в органах государственной и исполнительной власти, является отсутствие возможности использования российской криптографии в этих продуктах, в частности, в протоколе https, а также использование ЭП и шифрования в почтовом клиенте.
Появление на рынке токенов семейства PKCS#11, реализующих российскую криптографию, сделало возможным провести встраивание поддержки механизмов российской криптографии в браузер Mozilla Firefox и Mozilla Thunderbird.
Вместе с тем Mozilla накладывает ограничения на использование своих логотипов и товарных знаков в модифицированных версиях своих продуктов. Исходя из этого, модифицированным версиям разработчики дали свои названия и логотипы, например:
браузер Redfox , т.е. доработанный с целю поддержки российской криптографии браузер Firefox;
почтовый клиент RedfoxMail, т.е. доработанный с целю поддержки российской криптографии почтовый клиент Thunderbird;
интегрированный пакет Redfox2in1, т.е. доработанный с целю поддержки российской криптографии пакет SeaMonkey.
Браузеры обеспечивает поддержку российских шифрсьютов TLS_GOSTR341001_WITH_28147_CNT_IMIT и TLS_GOSTR341112_256_WITH_28147_CNT_IMIT для протоколов TLS 1.0, TLS 1.1 и TLS 1.2.
Почтовые клиенты обеспечивают формирование подписи под почтовыми сообщениями как по алгоритму ГОСТ Р 34.10-2001, так и по алгоритму ГОСТ Р 34.10-2012 с длиной ключа 256 и 512 бит. Шифрование почтовых сообщений ведется с применением алгоритма ГОСТ 28147-89:
Разработчики PyPy, высокопроизводительной реализации языка Python с поддержкой JIT-компиляции, объявили, что компания Mozilla выделила проекту грант в $200,000 на поддержку функциональности Python 3.5. Грант был выделен в рамках программы поддержки открытых проектов Mozilla Open Source Support. Всего в рамках этой программы предлагается выделить (на все участвующие проекты) три с половиной миллиона долларов.
На данный момент PyPy поддерживает только спецификации Python 2.7 и 3.2 (а также 3.3 в альфа-версии), причём версия 2.7 является приоритетной. Сам интерпретатор PyPy написан на подмножестве языка Python 2.7, которое компилируется в машинный код. Работы над версией с поддержкой Python 3 (PyPy3) до сих пор шли не очень активно. Полученные от Mozilla деньги пойдут на зарплату четырём опытным разработчикам PyPy, которые будут в течение года на постоянной основе (на полставки) работать над PyPy3.
Разработчики надеются, что им удастся не только реализовать всю недостающую функциональность, но и увеличить производительность PyPy3, которая сейчас ниже, чем у PyPy для Python 2.
Улучшена кодогенерация при #[derive(Copy, Clone)].
Изменения в стандартной библиотеке:
Повышена скорость создания HashMap путем кеширования случайных ключей, используемых для инициализации RandomState. В случае неудачной инициализации при использовании системного вызова getrandom в линуксе случайные значения будут браться из /dev/urandom;
Небольшое изменение поведения макросов на этапе их парсинга: из :ty и :path следует :block;
Исправлен баг, связанный с гигиеной макросов. Следующий код будет валидным в устаревших версиях компилятора:
fn main() {
let x = true;
macro_rules! foo { () => {
let x = 0;
macro_rules! bar { () => {x} }
let _: bool = bar!();
//^ `bar!()` использует первый `x` (который bool),
//| а должен использовать второй `x` (который i32).
}}
foo! {};
}
Добавлен флаг --force, -f для подкоманды cargo install, предназначенной для загрузки исходных текстов из crates.io, их компиляции и установки в каталог ~/.cargo/bin. Это нововведение теперь позволит писать:
cargo install FOO -f
вместо:
cargo uninstall FOO
cargo install FOO
Однако всё еще невозможно узнать, а требуется ли обновление вообще?
Диагностические сообщения теперь отправляются в stderr, а не в stdout;
С помощью флагов cargo doc --bin и cargo doc --lib можно выбрать: генерировать html документацию для проекта-приложения src/main.rs или проекта-библиотеки src/lib.rs;
В конфигурационном файле Cargo.toml, который можно встретить в корневом каталоге каждого проекта, теперь можно указать, каким образом макрос panic!() будет завершать приложение: unwind (по умолчанию) или abort;
Добавлен флаг cargo --explain FOO, поведение которого идентично rustc --explain FOO: показывает документацию по номеру ошибки;
По сообщению разработчиков Mozilla, началось формирование ежедневных тестовых сборок браузерного движка Servo. Движок написан на языке Rust, тестовые сборки формируются для OS X и Linux 64bit, сборки для Windows и Android обещаются в самое ближайшее время.
В настоящее время, как сообщается, движок не полностью совместим с веб-стандартами и готов лишь для проведения тестирования и экспериментов.
На базе Servo предлагается браузер Browser.html с интерфейсом, полностью реализованным при помощи технологий HTML5. Данный браузер включён в ночные сборки и предлагается в качестве эталонного интерфейса для тестирования возможностей движка.
Asa Dotzler объявил о том, что многопроцессный режим наконец-то отлажен, достаточно стабилен, производителен, и постепенно будет включён в релизных версиях браузера. К сожалению, не все разработчики популярных дополнений адаптировались к многопроцессности, поэтому первыми её получат лишь те пользователи, которые не устанавливают дополнения.
Начиная с выпуска Firefox 48, многопроцессный режим будет включён у 1% пользователей, не имеющих установленных дополнений. Если всё пройдёт без эксцессов, то уже в Firefox 49 многопроцессность получат все пользователи (всё при том же условии, что они не устанавливали дополнения).
В бета-версиях многопроцессный режим будет включён у всех пользователей, без ограничений.
В настоящий момент, обработка всех страниц и интерфейса браузера происходит на одном ядре процессора. Несмотря на то, что сетевые операции, декодирование изображений, видео и звука вынесены за пределы основного цикла, работа с DOM, выполнение скриптов и парсинг HTML остаются однопоточными.
Многопроцессный режим подразумевает вынос обработки контента в отдельный процесс, независимый от процесса, в котором осуществляет работа интерфейса браузера. В отличие от Chromium, где господствует философия «каждая вкладка в отдельном процессе», в Firefox все вкладки будут обрабатываться в одном процессе. Но, не исключено, что в будущем каждая вкладка получит свой собственный процесс.
Mozilla запустила программу Test Pilot, позволяющую пользователям попробовать и оценить экспериментальные возможности, которые в будущем могут появиться в Firefox.
Для участия требуется учётная запись Firefox (Firefox Account) и установка специального дополнения, позволяющего в любой момент включать и выключать тестируемые возможности.
Доступные улучшения:
Activity Stream в будущем призван заменить содержимое новых вкладок. Он предлагает часто посещаемые страницы и закладки, представленные хронологически в виде временной шкалы.
Tab Center размещает вкладки вертикально сбоку экрана. Панель автоматически сужается при уходе курсора, превращая вкладки в пиктограммы, и расширяется при наведении, показывая заголовки вкладок.
Универсальный поиск объединяет адресную и поисковую строки. В поисковых подсказках отдельно выделяются сайты, ранее посещённые пользователем. Рекомендованные результаты включают в себя подробные сведения о сайте, например, основные новости с главной страницы сайта.
Из-за доминирования движка WebKit многие разработчики сайтов и веб-приложений используют экспериментальные свойства и возможности CSS с префиксом -webkit-. Поскольку «и так всё работает», они не переходят к использованию стандартных свойств даже тогда, когда экспериментальная разработка становится доступна в виде стандартной без префикса (поскольку движок сохраняет поддержку -webkit-версии).
Остальные браузеры (например, Firefox) даже начали внедрять поддержку -webkit-элементов для совместимости с существующими сайтами, хотя изначально этот префикс предназначался лишь для пометки экспериментальных возможностей (у Firefox аналогичную роль играет префикс -moz-).
Разработчики WebKit решили исправить ситуацию. Отныне, все новые экспериментальные свойства будут изначально реализовываться в том виде, в каком они прописаны в стандартах (без префикса), а их поддержка будет включаться runtime-флагами. Уже существующие -webkit-свойства будут постепенно избавлены от префикса, но каждый случай рассмотрят отдельно, поскольку разработчики не хотят резко потерять совместимость с сайтами и приложениями.
Переход на GTK3 по умолчанию, что открывает дорогу к нормальной работе с Wayland и лучшему отображению на HiDPI-мониторах. Поддержка GTK2 пока полностью сохранена.
Усилена безопасность компилятора JavaScript Just In Time (JIT). Применена технология W^X («Write XOR Execute», изобретена в OpenBSD), гарантирующая, что код, созданный JIT, не будет исполнен, пока не запрещена запись. Скорость работы JS-движка снизилась на 1-4%.
Pocket, вслед за Hello, стал системным дополнением (не отображается в списке обычных дополнений) и вынесен в отдельный файл (/usr/lib/firefox/browser/features/firefox@getpocket.com.xpi). В следующей версии планируется сделать доступным отключение системных дополнений в интерфейсе браузера.
Если системные кодеки H.264 и AAC недоступны, для воспроизведения этих форматов будет использоваться CDM-модуль (модуль для расшифровки DRM-содержимого, отсутствующий в Linux-версии).
Автоматическая замена старого кода <embed> на страницах, встраивающих видео с YouTube, на новый <iframe>, что позволяет просматривать видео средствами HTML5. Функция пока не до конца протестирована и отключена по умолчанию, для использования нужно включить настройку plugins.rewrite_youtube_embeds.