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.
Переход на GTK3 отложен в очередной раз. Поддержка совместимого с Chrome API WebExtensions (разработка кроссбраузерных дополнений) тоже отложена.
Чат Hello вынесен в отдельное дополнение, поставляемое с браузером. В следующем выпуске та же участь постигнет Pocket.
Удалена функция группировки вкладок (Panorama). Сотой доле процента пользователей (по данным, полученным с помощью телеметрии), которым эта функция необходима, предлагается воспользоваться дополнениями.
При поиске в адресной строке синхронизированные вкладки будут показаны в выпадающей области.
Добавлена настройка network.dns.blockDotOnion, блокирующая запросы к DNS-серверам при обращении браузера к сайтам в доменной зоне .onion. Скрытые сервисы Tor всё равно работают без DNS, а эта настройка предотвратит раскрытие DNS-серверу информации о том, что пользователь щёлкнул по .onion-ссылке.
Добавлен режим временной установки неподписанных дополнений (установка из XPI-файла, после перезапуска браузера дополнение автоматически удаляется).
Исправлено некорректное перенаправление по ссылкам, ведущим на IDN-домены (Unicode-format Internationalized Domain Name).
Веб-содержимому запрещено использовать протокол jar:, который позволял напрямую обращаться к конкретному файлу внутри ZIP-архива. Остальные браузеры уже давно не поддерживают этот протокол; его поддержку можно включить, отключив настройку network.jar.block-remote-files (1215235).
Исправлена регрессия, введённая в Firefox 41: воспроизведение звука порой заикалось из-за ошибок округления времени воспроизведения (1222866).
В 2012 году Mozilla начала разработку Shumway, открытой реализации Flash, с целью интегрировать её в Firefox и дать пользователям доступ к flash-содержимому без использования проприетарного плагина Adobe Flash.
В конце 2013 года Shumway появился в ночных сборках Firefox, а в прошлом году стал использоваться для отображения веб-сайта Amazon. В сентябре 2015 года разработка замедлилась и поползли слухи о том, что Mozilla больше не считает Shumway приоритетным направлением. Соответствующий тикет в багтрекере был перемещен в раздел «Graveyard», что означает постепенное сворачивание работ в этом направлении.
Один из инженеров Mozilla подтвердил слухи:
«Shumway остаётся на GitHub, но не будет частью Firefox. Наши ресурсы ограничены, в настоящее время есть более важные задачи, чем разработка костылей для Flash.»
HTML5 постепенно отвоёвывает место у Flash. Google уже объявила, об отказе от flash-рекламы с 2017 года, что наверняка повлияло на решение свернуть разработку Shumway, поскольку планировалось сперва задействовать его именно для отображения рекламы. К тому же, на 2016 год запланировано прекращение поддержки NPAPI-плагинов в Firefox, а это означало необходимость спешного доведения Shumway до готовности. Mozilla выбрала иной путь: свернуть разработку и сделать для NPAPI-плагина Flash исключение — сохранить его поддержку в обозримом будущем.