Релиз набора компиляторов LLVM 8.0

После шести месяцев разработки представлен релиз проекта LLVM 8.0 (Low Level Virtual Machine) — GCC-совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации). Сгенерированный псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.

Из новых возможностей LLVM 8.0 отмечается включение защиты от атак Spectre, поддержка распараллеленной компиляции в ORC JIT, стабилизация компиляции в WebAssembly, добавление в Clang опции для инициализации автоматически распределяемых переменных, улучшение предкомпиляции и поддержка флага /Zc:dllexportInlines в clang-cl, поддержка архитектуры RISC-V в компоновщике lld, расширение средств диагностики.

Улучшения в Clang 8.0:

  • Добавлена возможность инициализации автоматически распределяемых переменных (например, локальных переменных, определённых внутри конструкций). По умолчанию автоматические переменные остаются не инициализированными. Инициализация осуществляется при указании опции «-ftrivial-auto-var-init=pattern» и позволяет избавиться от некоторых форм неопределённого поведения, вызванных заполнением переменных случайными остаточными данными из стека и регистров. Для принудительного отключения инициализации, например, для больших массивов, предусмотрен атрибут «dont_initialize_me»;
  • Добавлена поддержка файлов повторного сопоставления данных профилировния (profile-remapping), которые позволяют сопоставить символьные имена и данные профилирования для использования ранее сгенерированных профилей выполнения с другой версией программы с изменёнными таблицами символов (например, из-за переименования класса или пространства имён);
  • Добавлены новые диагностические опции: «-Wextra-semi-stmt» для выявления лишних «;» и «-Wempty-init-stmt» для выявления пустых блоков инициализации в конструкциях if, switch и for;
  • Помимо ранее добавленной защиты Retpoline в состав включены изменения для генерации последовательностей инструкций для получения данных из памяти с блокированием утечек, вызванных спекулятивным выполнением инструкций в современных CPU. Защита может быть выборочно включена или отключена для определённых функций через указание атрибутов speculative_load_hardening и no_speculative_load_hardening, а также включена глобально при помощи опции «-mspeculative-load-hardening»;
  • Добавлены опции «-fprofile-filter-files=[regexes]» и «-fprofile-exclude-files=[regexes]» для выборочной фильтрации или исключения определённых файлов с данными профилирования в формате gcov;
  • В clang-cl, альтернативном интерфейсе командной строки, обеспечивающем совместимость на уровне опций с компилятором cl.exe из состава Visual Studio, добавлена поддержка опций «/Yc» и «/Yu» для предварительной компиляции заголовочных файлов. Добавлена поддержка флага «/Zc:dllexportInlines», аналогичного флагу «-fvisibility-inlines-hidden», для неприменения атрибутов dllexport и dllimport к inline-функциям;
  • Обеспечена возможность использования инструментов Address Sanitizer и Undefined Behaviour Sanitizer с MinGW;
  • Расширены возможности, связанные с поддержкой OpenCL, OpenMP и CUDA. В том числе добавлены некоторые новые возможности OpenMP 5.0 и расширены средства диагностики;
  • Расширены возможности UBSan (Undefined Behavior Sanitizer), детектора неопределенного поведения, выявляющего во время выполнения программы ситуации, когда поведение программы становится неопределенным. Расширен спектр ситуаций, охватываемых в режиме «-fsanitize=implicit-conversion» (Implicit Conversion Sanitizer), например, добавлено выявление проблем с составными операторами присваивания и обеспечено определение неявных изменений знака целых чисел («-fsanitize=implicit-integer-sign-change»). При проверке выравнивания теперь выполняется проверка атрибутов, подобных «assume_aligned»;
  • Расширены возможности кеширующего сервера clangd (Clang Server), например, добавлена поддержка глобального для всех файлов проекта индекса, обеспечено добавление спецификаторов пространств имён при автодополнении кода, предложен индекс экспортируемых символов, добавлено расширение LSP;
  • В linter clang-tidy добавлена большая порция новых проверок.

Основные новшества LLVM 8.0:

  • Снят флаг экспериментальной разработки с целевой платформы WebAssembly, поддержка которой теперь включена по умолчанию и не требует указания опции LLVM_EXPERIMENTAL_TARGETS_TO_BUILD. В разряд стабильных также переведены формат объектных файлов и C ABI для платформы WebAssembly. Экспериментальной пока остаётся только поддержка многопоточности в WebAssembly;
  • В утилиту llvm-cov добавлена опция «-format=lcov» для экспорта coverage-статистики в формате lcov;
  • Добавлена опция «-x86-discriminate-memops», использующая отладочную информацию для точной идентификации инструкций x86 с обращающимися к памяти операндами для упреждающей загрузки в кэш (cache prefetching);
  • В libFuzzer добавлена поддержка платформы Windows (x86_64);
  • JIT API для компиляции по запросу (ORC, On Request Compilation) добавлена поддержка параллельной компиляции. Старый однопоточный API объявлен устаревшим, переименован в LegacyIRCompileLayer и будет удалён в LLVM 9. На основе нового API реализован демонстрационный JIT LLJIT. Поддержка MCJIT и ExecutionEngine будет продолжена, но для новых проектов ORC отмечен как предпочтительный JIT API;
  • В отладчике LLDB обеспечена подсветка синтаксиса выводимого кода на языке Си. В команде «expression» обеспечено автодополнение ввода табуляцией;
  • В libc++ прекращена поддержка macOS 10.6 и удалены типы std::dynarray и std::bad_array_length, не вошедшие в стандарт C++;
  • В компоновщике LLD добавлена поддержка архитектуры RISC-V и начальная поддержка ISA MSP430. Добавлены новые флаги: «—call-graph-profile», «—no-call-graph-profile», «—warn-ifunc-textrel», «-z interpose», «-z global», «-z nodefaultlib». При компоновке ELF-файлов сегмент «.note» теперь помещается в первую страницу генерируемого файла для упрощения доступа к важной информации (например .note.gnu.build-id) в core-файлах, даже в случае их усечения по размеру. Добавлена начальная поддержка создания разделяемых библиотек для WebAssembly;
  • В бэкенд для архитектуры x86 добавлена поддержка CPU AMD bdver2 на базе микроархитектуры Piledriver. Для указания в опции «-march» добавлен новый идентификатор CPU «cascadelake», идентичный skylake-avx512 с включением дополнительного набора инструкций avx512vnni. Прекращена подстановка инструкции ADCX, которая мало чем отличается от инструкции ADC, но увеличивает размер кода;
  • Внесены многочисленные улучшения в бэкенды для архитектур AArch64, ARM, SystemZ, Hexagon, MIPS и PowerPC.

Источник: [ссылка]

Выпуск Samba 4.10.0

Опубликован релиз Samba 4.10.0, продолживший развитие ветки Samba 4 с полноценной реализацией контроллера домена и сервиса Active Directory, совместимого с реализацией Windows 2000 и способного обслуживать все поддерживаемые Microsoft версии Windows-клиентов, в том числе Windows 10. Samba 4 является многофункциональным серверным продуктом, предоставляющим также реализацию файлового сервера, сервиса печати и сервера идентификации (winbind).

Ключевые изменения в Samba 4.10:

  • В KDC и Netlogon добавлена поддержка модели запуска процессов «pre-fork», позволяющей поддерживать пул заранее запущенных процессов-обработчиков. Значение по молчанию параметра ‘prefork children’ в smdb.conf увеличено с 1 до 4;
  • В реализации модели pre-fork обеспечен автоматический перезапуск сбойных процессов. Задержки между попытками повторного запуска определяются через параметры «prefork backoff increment» (по умолчанию 10 секунд) и «prefork maximum backoff» (по умолчанию 120 секунд) — при каждой новой попытке время перед повторным запуском увеличивается на «prefork backoff increment» пока не достигнет значения «prefork maximum backoff» (для значений по умолчанию раскладка задержек будет следующей: 0, 10, 20, …, 120, 120, …);
  • В стандартной модели запуска процессов, применяемой по умолчанию для ответвления новых процессов ldap и netlogon при поступлении новых запросов, реализована возможность ограничения максимального числа запущенных процессов (лимит регулируется параметром ‘max smbd processes’ в smb.conf, по умолчанию значение 0, т.е. без ограничений);
  • Обеспечена полноценная поддержка языка Python 3. Поддержка Python 2 пока сохранена, но по умолчанию при сборке теперь используется Python 3 (Python 3.4+). Для сборки с Python 2 требуется установка переменной окружения: «PYTHON=python2 ./configure; PYTHON=python2 make». Сборка samba-биндингов возможна одновременно для Python 3 и Python 2 через указания флага ‘configure —extra-python=/usr/bin/python2’. В ветке Samba 4.11 планируется прекратить поддержку Python 2 для биндингов и поднять требования к версии до Python 3.6;
  • Добавлена команда ‘samba-tool gpo backup’, позволяющая экспортировать из домена набор объектов GPO (Group Policy Objects) в формате XML. Также добавлена команда ‘samba-tool gpo restore’ для импорта обобщённых данных GPO из XML;
  • В команду ‘samba-tool domain backup’ добавлена поддержка опции ‘offline’, позволяющей безопасно создавать резервные копии локальной БД контроллера домена напрямую с диска. Новый метод не требует запуска Samba, работает быстре и включает дополнительные детали о внутренней структуре хранилища;
  • Добавлена команда ‘samba-tool group stats’, выводящая сводные сведения о распределении пользователей между группами в домене. Существующая команда ‘samba-tool group list —verbose’ расширена данными о числе пользователей в каждой группе;
  • Для LDAP изменено поведение расширения Paged Results, позволяющего частями обрабатывать результаты запросов с разбиением данных на страницы. Обработка страничных запросов в Samba приведена в соответствие с поведением серверов Windows (раньше разные страницы в выборке отдаваться на основе неизменного статического слепка БД, а сейчас учитывают изменения в БД, полученные с момента прошлого страничного запроса);
  • В выводимых в JSON-лог сообщениях аутентификации добавлено отображение идентификатора события («eventId», код успешного или не успешного входа) и типа входа («logonType», интерактивный, сетевой и незащищённый сетевой). В сообщениях о смене пароля и изменении участия в группе также теперь отображается «eventId» (пароль изменён, пароль сброшен, добавлен/удалён член группы). Изменён формат JSON-записей (убран префикс «JSON message_type:»);
  • В утилиту samba-tool добавлена поддержка протокола SMBv2 (ранее samba-tool не мог подключаться к внешнему контроллеру домена, на котором был отключен SMBv1);
  • Добавлен новый VFS-модуль glusterfs_fuse, позволяющий увеличить производительность при обращении через Samba к разделам с GlusterFS, примонтированным с применением механизма FUSE (Filesystem in Userspace). Для повышения производительности модуль напрямую извлекает информацию об именах файлов через запрос расширенных атрибутов в ФС. Для включения ускорения достаточно добавить glusterfs_fuse в параметр «vfs objects». Новый модуль не заменяется собой vfs_glusterfs, а лишь предлагает альтернативный механизм доступа к разделам Gluster;
  • Объявлены устаревшими и будут удалены в следующей ветке Python-биндинги к SMB client. Удаление повлияет на пользователей, использующих собственные утилиты с ‘from samba import smb’;
  • Из-за наличия потенциальных проблем с безопасностью возможность сборки MIT Kerberos для AD DC переведена в разряд экспериментальных опций и требует явного указания в configure флага «—with-experimental-mit-ad-dc»;
  • Удалён скрипт samba_backup, вместо которого следует использовать команду ‘samba-tool domain backup offline’.

Источник: [ссылка]

Компания Oracle опубликовала Java SE 12

После шести месяцев разработки компания Oracle выпустила платформу Java SE 12 (Java Platform, Standard Edition 12), в качестве эталонной реализации которой используется открытый проект OpenJDK. В Java SE 12 сохранена обратная совместимость с прошлыми выпусками платформы Java, все ранее написанные Java-проекты без изменений будут работоспособны при запуске под управлением новой версии. Готовые для установки сборки Java SE 12 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64), Solaris (SPARC), Windows и macOS. Разработанная в рамках проекта OpenJDK эталонная реализация Java 12 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.

Java SE 12 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 11, обновления для которого будут выпускаться до 2026 года. Прошлая LTS-ветка Java 8 будет поддерживаться до декабря 2020 года. Следующий LTS-релиз намечен на сентябрь 2021 года. Напомним, что начиная с выпуска Java 10 проект перешёл на новый процесс разработки, подразумевающий более короткий цикл формирования новых релизов. Новая функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации новых выпусков.

Из новшеств Java 12 можно отметить:

  • Добавлена экспериментальная поддержка сборщика мусора Shenandoah, работающего с минимальными приостановками (Low-Pause-Time Garbage Collector). Планировщик развивается компанией Red Hat и примечателен использованием алгоритма, сокращающего время остановок во время сборки мусора за счёт проведения чистки параллельно с выполнением Java-приложений. Размер вносимых сборщиком мусора задержек предсказуем и не зависит от размера кучи, т.е. для куч в 200 MB и 200 GB задержки будут идентичны (не выходят за пределы 50 мс и обычно укладываются в 10 мс);
  • В состав включён набор для проведения точечных тестов производительности (microbenchmark), позволяющий организовать непрерывное тестирование производительности различных компонентов кодовой базы и упрощающий добавление собственных тестов;
  • Обеспечена предварительная поддержка новой формы выражений «switch», не требующей использования оператора «break» и позволяющей объединять повторяющиеся метки. Например, вместо
         switch (day1) {         case MONDAY:         case FRIDAY:         case SUNDAY:             System.out.println(6);             break;     ...     int numLetters;     switch (day2) {         case MONDAY:         case FRIDAY:         case SUNDAY:             numLetters = 6;             break;     ...  

    новые выражения позволяют указать

         switch (day1) {         case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);     ...     int numLetters = switch (day2) {      case MONDAY, FRIDAY, SUNDAY -> 6;     ...  
  • Представлен API JVM Constants (java.lang.invoke.constant), позволяющий описать все типы загружаемых констант, используемых в файлах с Java-классами и в компонентах runtime;
  • Добавлена поддержка компактного форматирования чисел (NumberFormat.Style.SHORT). Например, вместо 1000 может быть выведено «1K», а вместо 1000000 — «1M»;
  • Добавлен новый флаг «-XX:+ExtensiveErrorReport» для вывода более детальных сведений об ошибках в случае краха приложения;
  • В реализацию TLS добавлена поддержка потокового шифра ChaCha20 и алгоритма аутентификации сообщений (MAC) Poly1305;
  • Предложен один унифицированный порт для архитектуры AArch64 (ранее развивалось два порта aarch64 и arm64, теперь оставлен только порт aarch64);
  • По умолчанию на основе предлагаемого по умолчанию списка классов в процессе сборки JDK обеспечена генерация архивов CDS (Class-Data Sharing), обеспечивающих совместный доступ приложений к общим классам. При помощи CDS общие классы могут размещаться в отдельном совместно используемом архиве, что позволяет ускорить запуск приложений и снизить накладные расходы. Предоставление архивов CDS сокращает время запуска и позволяет избавить пользователей от выполнения «-Xshare:dump» для создания CDS;
  • В сборщик мусора G1 добавлена поддержка отменяемой чистки смешанных коллекций (Abortable Mixed Collections), позволяющая оборвать процесс необязательной стадии чистки, если превышено максимальное время приостановки на сборку мусора;
  • В сборщике мусора G1 реализована возможность возвращения операционной системе неиспользуемых областей памяти при неактивности приложения.
  • В сборщиках мусора G1 и Parallel появилась возможность выноса старых данных из кучи на альтернативные устройства памяти, такие как NV-DIMM;
  • В сборщик мусора ZGC (Z Garbage Collector) добавлена возможность выгрузки неиспользуемых классов (class unloading) для высвобождения занимаемых ими структур данных. Выгрузка производится в параллельном потоке и не влияет на выполнение Java-программ;
  • Для Linux реализован новый опциональный механизм запуска процессов POSIX_SPAWN (jdk.lang.Process.launchMechanism = POSIX_SPAWN), позволяющий обойти некоторые редко возникающие проблемы при ответвлении дочерних процессов. По умолчанию продолжает применяться механизм VFORK;
  • Отмечается, что библиотека Swing (client-libs/javax.swing) ограничена поддержкой только старых выпусков GTK, использование версии 3.20 и новее приводит к проблемам при отрисовке некоторых элементов интерфейса. При наличии в системе новых версий GTK в качестве обходного пути рекомендуется запускать приложения с опцией «-Djdk.gtk.version=2.2» для отката на GTK2+.

Источник: [ссылка]

Релиз Firefox 66

Представлен релиз web-браузера Firefox 66, а также мобильной версии Firefox 66 для платформы Android. Кроме того, сформировано обновление ветки с длительным сроком поддержки 60.6.0. В ближайшее время на стадию бета-тестирования перейдёт ветка Firefox 67, релиз которой намечен на 15 мая.

Основные новшества:

  • Добавлена поддержка механизма «Scroll Anchoring«, при котором позиция прокрутки привязывается к конкретному месту на странице и не меняется при отображении новых элементов в вышележащей области. Изменение позволит исключить ситуации, когда прокрутка сразу после открытия страницы приводит к постепенному смещению позиции и необходимости вновь и вновь прокручивать содержимое по мере загрузки изображений и внешних вставок (например, ранее возникали казусы, когда в момент клика на нужную ссылку завершалась загрузка расположенного выше рекламного баннера, контент смещался и клик попадал на баннер);
  • Включена блокировка автоматического воспроизведения мультимедийного контента со звуком (использование свойства autoplay без выставления флага mute или отсутствия звуковой дорожки). Воспроизведение звука теперь будет начинаться только при явном действии пользователя, например, при нажатии на кнопку или клике на видеоролике. Для включения режима блокировки в настройки добавлена специальная опция:

    При открытии страницы, автоматически воспроизводящей звук, пользователю будет выводится уведомление о блокировке. В уведомлении будет предоставлена опция, позволяющая добавить текущий сайт в белый список, разрешающий автоматическое воспроизведение звука. Статус блокировки также можно изменить через блок настроек, отображаемый в контекстном меню сайта.

    Предложенный блокировщик позволит противостоять злоупотреблениям на некоторых сайтах, автоматически показывающих видеорекламу со звуком, которая создаёт неудобства и отвлекает пользователя при просмотре страниц. На этой неделе режим будет активирован по умолчанию для 25% пользователей, браузера, а на следующей неделе охват будет увеличен до 50%. Если не будет выявлено существенных проблем, ещё через неделю блокировщик будет активирован для всех пользователей;

  • В контекстное меню «V», появляющееся при открытии большого числа вкладок, добавлена кнопка «Search Tabs» для поиска открытых вкладок и упрощения навигации при наличии большого числа открытых страниц. Реализация кнопки базируется на уже давно существующей, но малоизвестной возможности, позволяющей выполнять поиск по заголовкам страниц во вкладках при помощи ключа «%» в адресной строке (например, после набора в адресной строке «% Free» будет показан список вкладок в заголовках которых присутствует слово «Free»). При нажатии кнопки «Search Tabs» осуществляется смена фокуса на адресную строку и ввод символа «%» с приглашением продолжить ввод;
  • Изменено оформление страницы новой вкладки в приватном режиме, в том числе добавлена строка поиска;
  • В сборках для Linux по умолчанию включено декорирование окон на стороне клиента (CSD, Client Side Decoration), при котором заголовок и рамки окна отрисовываются не оконным менеджером, а самим приложением. Применение CSD позволяет приблизить интерфейс Firefox к оформлению штатных приложений GNOME, а именно перенести панели вкладок в заголовок окна и реализовать скрытые рамки. Начиная с Firefox 60 данная возможность была реализована в виде опции. Отключить CSD можно через флажок в левом нижнем углу раздела кастомизации;
  • Изменено оформление и увеличена информативность страниц, выдаваемых при проблемах с сертификатами защищённого соединения. Реализован вывод отдельного предупреждения (MOZILLA_PKIX_ERROR_MITM_DETECTED) при выявлении подмены сертификатов и перехвата трафика HTTPS из-за активности антивирусов, вредоносного ПО или вмешательства провайдера в трафик;
  • С 4 до 8 увеличено число запускаемых браузером процессов-обработчиков, каждый из которых обслуживает несколько вкладок (браузер также запускает отдельные процессы для WebExtension и интерфейса). Увеличение до 8 числа процессов-обработчиков приведёт к повышению производительности и устойчивости к сбоям, но суммарное потребление памяти увеличится приблизительно на 6%. В дальнейшем планируется реализация режима строгой изоляции сайтов, в котором страницы разных сайтов всегда размещаются в памяти разных процессов, в каждом из которых применяется свой sandbox, а разделение будет осуществляться не по вкладкам, а по доменам, что позволит дополнительно изолировать содержимое внешних скриптов и iframe-блоков;
  • На странице открытия новой вкладки проводятся эксперименты c выводом дополнительного информационного контента, рекомендованного сервисом Pocket, а также с изменением раскладки размещения информации на странице. Например, у некоторых пользователей будет изменён размер блоков и число рекомендаций, предложены новые тематические секции (Здоровье, Наука, Технологии и Развлечения). Для отказа от участия в эксперименте следует в верхнем правом углу страницы новой вкладки отключить опцию «Content Discovery»;
  • Проведена работа по повышению производительности и удобства работы с дополнениями. Для хранения настроек дополнений теперь используется БД IndexedDB, вместо разбора отдельных JSON-файлов, что позволяет заметно повысить скорость работы и снизить потребление памяти в дополнениях, активно читающих настройки (например, заметно возросла производительность Adblock Plus). Разработчикам дополнений для использование IndexedDB не требуется вносить изменения в свои продукты, штатный API storage.local() автоматически переведён на новый бэкенд;
  • Изменено оформление интерфейса для привязки горячих клавиш к функциям дополнений (вызывается через контекстное меню в about:addons);
  • В инструментах для web-разработчиков обеспечена возможность использования режима инспектирования при остановке отладчика;
  • Снижена интенсивность генерации событий таймеров setTimeout и setInterval в процессе загрузки страницы (по аналогии с фоновыми вкладками уменьшен предоставляемый бюджет времени, который расходуется на выполнение обработчика событий таймера), что позволило ускорить загрузку страниц при наличии работ, интенсивно нагружающих процессор;
  • Обеспечено корректное отображение HTML и тестовых файлов в кодировке UTF-8, открываемых с локального диска с использованием схемы URL «file:» (теперь не обязательно выставление в фале meta charset=»utf-8″ или изменение кодировки в меню);
  • Реализован модификатор «i» для сравнения атрибутов CSS с учётом регистра символов. Например, «a[href*=»insensitive» i] {…}»;
  • Добавлены отдельные CSS-свойства, упрощающие доступ к типовым частям составных CSS-свойств: padding-block, padding-inline, margin-block, margin-inline, inset, inset-block, inset-inline, border-block-color, border-block-style, border-block-width, border-inline-color, border-inline-style, border-inline-width, border-block, border-inline, border-start-start-radius, border-start-end-radius, border-end-start-radius и border-end-end-radius;
  • Добавлены новые медиа-запорсы overflow-inline и overflow-block, позволяющие протестировать как устройство вывода обрабатывает (обрезает или допускает прокрутку) выходящий за пределы блока контент;
  • В CSS-функции calc() добавлена возможность манипуляции величинами в процентах при вычислении ширины ячеек и столбцов таблиц. Например, «width: calc(100%/7)»;
  • Стандартизированы и избавлены от префикса «-moz-» ключевые слова min-content и max-content, которые можно применять для установки предпочтительного и минимального размера в свойствах width, height, flex-basis, min-width, max-width, min-height, max-height, min-block-size, min-inline-size, max-block-size, max-inline-size, block-size и inline-size;
  • Реализован метод HTMLSlotElement.assignedElements() для вывода последовательности элементов, прикреплённых к указанному слоту;
  • Реализован метод TextEncoder.encodeInto() для перекодирования USV-строки и помещения результата в объект unit8Array;
  • Добавлена поддержка свойств: InputEvent.inputType (тип изменения редактируемого контента — добавление, удаление, форматирование), Window.event и Event.returnValue;
  • Значение HTTP-заголовка «Accept» изменено по умолчанию на «*/*» (было — «text/html, application/xhtml+xml, application/xml; q=0.9, */*; q=0.8»);
  • В Linux решена проблема с зависанием браузера при загрузке файлов;
  • В Windows 10 добавлена поддержка механизма Windows Hello для аутентификации на сайтах (при помощи API Web Authentication) без пароля с использованием отпечатка пальца, распознавания лица или USB-токена с поддержкой спецификации FIDO2;
  • На платформе macOS добавлена начальная поддержка сенсорных панелей (Touch Bar);
  • В версии для Android добавлена возможность открытия файлов с внешних носителей, например, с SD-карты.

Кроме новшеств и исправления ошибок в Firefox 66 устранена серия уязвимостей, из которых 26 (CVE-2019-9792, CVE-2019-9791, CVE-2019-9790, 13 объединены под CVE-2019-9789 и 10 под CVE-2019-9788) помечены как критические, т.е. могут привести к выполнению кода злоумышленника при открытии специально оформленных страниц.

Источник: [ссылка]

Google открыл систему для создания sandbox-окружений для библиотек C/C++

Компания Google объявила от открытии проекта Sandboxed API, позволяющего автоматизировать процесс формирования sandbox-окружений для изолированного выполнения произвольных библиотек на языках C и C++. Изоляция кода библиотек позволяет защититься от потенциальных атак на предоставляемые библиотеками обработчики, создавая дополнительный барьер на случай наличия в их коде уязвимостей, которые можно эксплуатировать через манипуляции с поступающими в библиотеку внешними данными. Код открыт под лицензией Apache 2.0.

Изоляция осуществляется при помощи runtime Sandbox2, в котором применяются пространства имён, cgroups и seccomp-bpf. Вынесенный в sandbox код выполняется в отдельном процессе, для которого ограничивается доступ к системным вызовам и ресурсам, таким как файлы и сетевые соединения. Процессы получают доступ только к системным возможностям, которые непосредственно требуются для выполнения изолируемого кода.

Sandbox2 определяет компоненты для запуска процесса, применения к нему правил изоляции и сопровождения дальнейшего выполнения. Sandbox2 может использоваться отдельно от Sandboxed API для изоляции не только библиотек, но и произвольных процессов. Кроме повышения защиты, положительным моментом выноса кода в отдельные процессы является возможность отдельного регулирования лимитов на потребление библиотекой памяти и CPU, а также защита от сбоев — сбой в библиотеке не приводит к краху всего приложения.

Sandboxed API является надстройкой над Sandbox2, упрощающей портирование существующих библиотек для выполнения в изолированном режиме. Sandboxed API предоставляет промежуточный программный интерфейс, дающий возможность запустить код библиотеки в sandbox-окружении, а также организовать проброс в sandbox-окружение обращений к библиотечным вызовам и обеспечить доставку в основную программу результатов работы библиотеки. Обращение к изолированной библиотеке осуществляется через специализированный RPC, базирующийся на протоколе ProtoBuffs.

Для разработчиков библиотек предлагается набор примитивов, позволяющих из базового приложения обращаться к переменным, файловым дескрипторам, буферам и функциям изолированной библиотеки, в том числе предоставляются средства для автоматической и управляемой синхронизации памяти для совместного доступа к массивам и структурам. Дополнительно предоставляется API для мониторинга за работой изолированных процессов и их перезапуска в случае сбоев.

Для изолируемой библиотеки автоматически генерируется код с аннотациями изолируемых функций для сборочной системы Bazel и программным интерфейсом (SAPI) для взаимодействия между базовыми и изолированным процессами. Разработчик также должен сформировать заголовочный файл с правилами изоляции, который определяет все разрешённые системные вызовы и операции (чтение, запись, открытие файлов, доступ к времени, возможность установки обработчиков сигналов, поддержка выделения памяти через malloc и т.п.). Отдельно определяются файлы и каталоги к которым должна иметь доступ библиотека.

В настоящее время проект доступен только для Linux, но в будущем обещают добавить поддержку macOS и BSD-систем, а в отдалённой перспективе и Windows. Из планов также отмечается возможность изоляции библиотек на языках, отличных от C и C++, поддержка дополнительных runtime для изоляции (например, на базе аппаратной виртуализации) и возможность использования CMake и других сборочных систем (сейчас поддержка ограничена сборочной системой Bazel).

Источник: [ссылка]

Cloudflare представил инструменты для выявления перехвата HTTPS

Компания Cloudflare представила библиотеку mitmengine, применяемую для выявления фактов перехвата HTTPS-трафика, а также web-сервис Malcolm для наглядного анализа накопленных в Cloudflare данных. Код написан на языке Go и распространяется под лицензией BSD. Проведённый при помощи предложенного инструментария мониторинг трафика Cloudflare показал, что около 18% HTTPS-соединений перехватываются.

В большинстве случаев перехват HTTPS-трафика осуществляется на стороне клиента, благодаря активности различных локальных антивирусных приложений, межсетевых экранов, систем родительского контроля, вредоносного ПО (для кражи паролей, подстановки рекламы или запуска кода майнинга) или корпоративных систем инспектирования трафика. Подобные системы добавляют свой корневой TLS-сертификат в список сертификатов на локальной системе и используют его для перехвата защищённого трафика пользователя. Запросы клиента транслируются на целевой сервер от лица перехватывающего ПО, после чего ответ отдаеётся клиенту в рамках отдельного HTTPS-соединения, установленного с использованием TLS-сертификата перехватывающей системы.

В отдельных случаях перехват организуется на стороне серверов, когда владелец сервера передаёт закрытый ключ третьему лицу, например, оператору обратного прокси, CDN или системы защиты от DDoS, который затем принимает запросы от себя с оригинальным TLS-сертификатом и транслирует их на оригинальный сервер. В любых случаях перехват HTTPS подрывает цепочку доверия и вносит дополнительное звено компрометации, что приводит к существенному уменьшению уровня защиты соединения, оставляя при этом видимость наличия защиты и не вызывая подозрений у пользователей.

Для выявления перехвата HTTPS компанией Cloudflare предложен пакет mitmengine, который устанавливается на сервере и позволяет выявить факты перехвата HTTPS, а также определить какие именно системы использовались для перехвата. Суть метода определения перехвата в сопоставлении специфичных для браузеров особенностей обработки TLS с фактическим состоянием соединения. На основании заголовка User Agent движок определяет браузер, а затем оценивает соответствуют ли этому браузеру такие характеристики TLS-соединения, как параметры TLS по умолчанию, поддерживаемые расширения, заявленный набор шифров, порядок определения шифров, группы и форматы эллиптических кривых.

Используемая при проверке база сигнатур насчитывает около 500 типовых идентификаторов TLS-стека браузеров и систем перехвата. Данные могут собираться в пассивном режиме через анализ содержимого полей в сообщении ClientHello, которое передаётся в открытом виде до установки шифрованного канала связи. Для захвата трафика применяется TShark из состава сетевого анализатора Wireshark 3.

Проектом mitmengine также предоставляется библиотека для интеграции функций определения перехвата в произвольные серверные обработчики. В простейшем случае достаточно передать значения User Agent и TLS ClientHello текущего запроса и библиотека выдаст вероятность перехвата и факторы, на основе которых сделан тот или иной вывод.

На основании статистики о трафике, проходящем через сеть доставки контента Cloudflare, которая обрабатывает примерно 10% всего интернет-трафика, запущен web-сервис, отображающий изменение динамики перехватов по дням. Например, месяц назад перехваты фиксировались для 13.27% соединений, 19 марта этот показатель составил 17.53%, а 13 марта достиг пика в 19.02%.

В проведённом в 2017 году аналогичном исследовании доля перехватов составляла 10.9%. Расхождение вызвано тем, что в новом анализе игнорируются запросы с неизвестным User Agent, в то время как в прошлом исследовании учитывались все запросы. Если включить в новую выборку данные о неизвестных User Agent доля перехвата снижается в среднем до 11.3%, т.е. за два года число перехватов выросло на 3.6% (0.4 в абсолютных значениях).

Наиболее популярным движком перехвата является система фильтрации Symantec Bluecoat, на которую приходится 94.53% всех опознанных перехваченных запросов. Далее следуют Akamai reverse proxy (4.57%), Forcepoint (0.54%) и Barracuda (0.32%). Перехваты антивирусов и систем родительского контроля в основной массе не вошли в выборку опознанных перехватчиков, так как для их точной идентификации собрано недостаточно сигнатур. В 52.35% случаях был перехвачен трафик настольных версий браузеров, а в 45.44% браузеров для мобильных устройств. В разрезе операционных систем статистика выглядит следующим образом: Android (35.22%), Windows 10 (22.23%), Windows 7 (13.13%), iOS (11.88%), другие ОС (17.54%).

Источник: [ссылка]

Релиз десктоп-окружения MATE 1.22, форка GNOME 2

После года разработки состоялся релиз десктоп-окружения MATE 1.22, в рамках которого продолжено развитие кодовой базы GNOME 2.32 с сохранением классической концепции формирования рабочего стола. Установочные пакеты с MATE 1.22 в ближайшее время будут подготовлены для Arch Linux, Linux Mint, Debian, Ubuntu, Fedora, Mageia, Slackware и openSUSE.

В новом выпуске:

  • Проведена большая модернизация кода панели задач с целью её адаптации для работы под управлением бэкенда на основе протокола Wayland;
  • В оконном менеджере Marco (форк Metacity) добавлена поддержка третьей версии тем оформления metacity-themes. Приведён к более современному оформлению внешний вид переключателей окон и виртуальных рабочих столов;
  • Полностью переделан апплет для управления параметрами экрана. Добавлена возможность изменения настроек монитора прямо из панели;
  • Улучшено управление мышью в апплете с таймером;
  • Апплет «Wanda the Fish», показывающий вывод предопределённой команды, адаптирован для экранов с высокой плотностью пикселей (HiDPI);
  • В менеджере сеансов обеспечено корректное завершение всех пользовательских процессов systemd при завершении сеанса. Добавлена возможность автозапуска приложений при открытии нового сеанса не сразу, а через определённую пользователем задержку;
  • Многие компоненты портированы на Python 3, включая библиотеки python-caja и mate-menus, а также просмотрщик изображений Еye of MATE;
  • В файловом менеджере Caja обеспечена опциональная возможность вывода системных уведомлений о завершении длительно выполняемых операций с файлами;
  • В просмотрщике изображений Eye of MATE (форк Eye of GNOME) переработана боковая панель и улучшена обработка метаданных в изображениях;
  • В текстовом редакторе Pluma (ответвление от Gedit) добавлена поддержка переключения между вкладками при помощи клавиатуры и колеса прокрутки на мыши;
  • В калькуляторе улучшена поддержка буфера обмена и увеличена точность вычислений (до 15 знаков);
  • В программу работы с архивами Engrampa добавлена поддержка новых форматов сжатия, а также реализована функция временной приостановки операций архивирования;
  • Добавлены новые горячие клавиши и поддержка различных типов мультимедийных клавиш, включая поддержку управления Bluetooth, WiFi, тачпадов и комбинаций для экстренного закрытия сеанса;
  • Большинство компонентов переведено с dbus-glib на GDBus;
  • Проведена работа по устранению утечек памяти и предупреждений во время сборки;
  • Удалён устаревший код, привязанный к старым веткам GTK;
  • Осуществлён переход на систему непрерывной интеграции Travis CI для проверки качества сборки для основных дистрибутивов Linux.

Источник: [ссылка]

Выпуск дистрибутива Solus 4 и рабочего стола Budgie 10.5

Увидел свет релиз Linux-дистрибутива Solus 4, не основанного на пакетах других дистрибутивов и развивающего собственный рабочий стол Budgie, установщик, пакетный менеджер и конфигуратор. Код наработок проекта распространяется под лицензией GPLv2, для разработки используются языки Си и Vala. Дополнительно предоставляются сборки с рабочими столами GNOME, KDE Plasma и MATE. Размер iso-образов 1.4 Гб (x86_64).

Для управления пакетами задействован пакетный менеджер eopkg (форк PiSi из Pardus Linux), предоставляющий привычные средства для установки/удаления пакетов, поиска в репозитории и управления репозиториями. Пакеты могут выделяться в тематические компоненты, которые в свою очередь образуют категории и подкатегории. Например, Firefox отнесён к компоненту network.web.browser, отнесённому к категории сетевых приложений и подкатегории приложений для Web. Для установки из репозитория предлагается более 2000 пакетов.

Рабочий стол Budgie основан на технологиях GNOME, но использует собственные реализации оболочки GNOME Shell, панели, апплетов и системы вывода уведомлений. Для управления окнами в Budgie используется оконный менеджер Budgie Window Manager (BWM), являющийся расширенной модификацией базового плагина Mutter. Основу Budgie составляет панель, близкая по организации работы к классическим панелям рабочего стола. Все элементы панели являются апплетами, что позволяет гибко настраивать состав, менять размещение и заменять реализации основных элементов панели на свой вкус. Среди доступных апплетов можно отметить классическое меню приложений, систему переключения задач, область со списком открытых окон, просмотр виртуальных рабочих столов, индикатор управления питанием, апплет управления уровнем громкости, индикатор состояния системы и часы.

Дистрибутив придерживается гибридной модели разработки, в соответствии с которой периодически выпускаются значительные выпуски, в которых предлагаются новые технологии и значительные улучшения, а в промежутке между значительными выпусками дистрибутив развивается с применением rolling-модели обновления пакетов. Основные новшества в Solus 4 касаются поставки нового выпуска рабочего стола Budgie 10.5, модернизации оформления и обновления версий программ.

В том числе обновлены версии Firefox 65.0.1, LibreOffice 6.2.1.2, Rhythmbox 3.4.3 с альтернативной панелью, Thunderbird 60.5.2, MPV 0.16, ffmpeg 4.1.1 с поддержкой кодека AV1. Ядро Linux обновлено до выпуска 4.20, что позволило обеспечить поддержку оборудования на базе чипов AMD Picasso и AMD Raven2, AMD Vega20 и улучшить поддержку AMD Vega10, Intel Coffee Lake и Intel Ice Lake. Графический стек переведён на Mesa 19.0 с поддержкой новых GPU AMD Polaris, Vega10, Vega20 и VegaM. Внесены незначительные улучшения в центр установки приложений, который планируется полностью переписать в будущем. Из набора «Third Party» удалён офисный пакет WPS Office из-за неприемлемых условий в новом соглашении EULA. Задействована новая тема оформления Plata (Noir).

Ключевые улучшения рабочего стола Budgie 10.5:

  • Предложен новый режим настроек рабочего стола — «Caffeine», при котором по умолчанию блокируется автоматический переход в спящий режим и отключается запуск хранителя экрана, а яркость экрана повышается до максимального или заданного пользователем значения. Имеется возможность задания времени, в течение которого представленный режим будет активен (после истечения установленного таймера настройки будут возвращены в обычное состояние);
  • Обновлён апплет IconTasklist, в котором улучшена группировка разных экземпляров одного приложения и добавлено новое контекстное меню, выводимое для приложений в списке запущенных задач. Через предложенное всплывающее меню можно закрыть разом все экземпляры выбранного приложения, управлять окнами (например, можно закрепить поверх другого содержимого, раскрыть на весь экран или свернуть, переместить на другой виртуальный рабочий стол), поместить/убрать приложение в избранное, запустить новый экземпляр приложения. Через новое меню также реализована возможность вызова специфичных для приложений действий, таких как открытие приватного окна в Firefox или запуск интерфейса для написания нового сообщения в Geary;
  • В меню обеспечено отсеивание дубликатов приложений при включении некомпактного режима и проведено объединение категорий «Sundry» и «Other»;
  • Усовершенствован универсальный апплет Raven с реализацией боковой панели и центра отображения уведомлений. Во встроенный в апплет календарь добавлена опция для показа номеров недель относительно начала года.

    Улучшена работа системы уведомлений. Если раньше уведомления можно было удалить только все сразу, то теперь они группируются в привязке к приложениям и могут удаляться выборочно, как по отдельности таки и для выбранного приложения. Во всплывающих уведомлениях обеспечено корректное обобщение непрочитанных сообщений. Прекращено сохранение уведомлений, связанных с переходом в спящий режим и выводом на печать;

    Полностью переписан виджет для управления звуком, который разделён на два разных виджета для работы с устройствами захвата и устройствами вывода звука. Добавлена возможность завышения программных ограничений максимальной громкости — в настройки добавлена опция, позволяющая повысить лимит громкости с 100% до 150%. Реализована встроенная поддержка изменения громкости в привязке к отдельным приложениям. Упрощено переключения между разными звуковыми устройствами. На системах без звуковой карты обеспечено автоматическое скрытие звуковых виджетов;

  • Расширены возможности по настройке оформления в зависимости от предпочтения конкретного пользователя или создателей сторонних дистрибутивов, поставляющих рабочий стол Budgie. Добавлена настройка для выбора позиции вывода уведомлений (по умолчанию в верхнем правом углу). В конфигуратор Budgie Desktop Settings добавлена секция для настройки стиля курсора, пиктограмм и тем оформления виджетов GTK. Подготовлен чёрных список не рекомендованных для включения тем оформления и пиктограмм, доступных в GNOME, но не вписывающихся в стиль Budgie (например, не рекомендованы темы Adwaita, Clearlooks, Industrial и наборы пиктограмм Breeze и Solus SC).

    В Budgie Desktop Settings добавлена отдельная секция с настройками панели Raven, такими как ограничения громкости, показ номеров недель, управление включением различных виджетов;

    В Budgie Desktop Settings добавлена отдельная секция для управления окнами, предлагающая режимы центрирования окон на экране, включения ночной подсветки, активации фокуса при наведении мыши без явного клика;

Переработано оформление интерфейса Solus с рабочим столом GNOME:

В сборке на основе рабочего стола MATE обновлено оформление и из находящейся в разработке кодовой базы MATE перенесены исправления ошибок, выявленных с момента релиза 1.20.

Сборка на базе KDE Plasma обновлена до выпусков KDE Plasma Desktop 5.15.2, KDE Frameworks 5.56, KDE Applications 18.12.2 и Qt 5.12.1. Переход на Qt 5.12 позволил заметно снизить потребление памяти в QML (в некоторых ситуациях до 30%).

Источник: [ссылка]

Бета-выпуск платформы Android Q

Компания Google представила бета-версию открытой мобильной платформы Android Q. Релиз Android Q, который скорее всего будет поставляться под номером Android 10, ожидается в третьем квартале 2019 года. Для оценки новых возможностей платформы предложена программа бета-тестирования, в рамках которой экспериментальную ветку можно установить и поддерживать в актуальном виде через штатный интерфейс установки обновлений (OTA, over-the-air), без необходимости ручной замены прошивки. Обновления доступны для устройств Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3 и Pixel 3 XL.

Ключевые новшества Android Q:

  • Предоставлено больше инструментов для контроля за доступом приложений к информации о местоположении пользователя. Если раньше, в случае предоставления соответствующих полномочий, приложение могло получить доступ к местоположению в любое время, даже когда оно неактивно (работает в фоне), то в новом выпуске пользователь может разрешить получение информации о его местоположении только в случае активности сеанса с приложением;
  • Добавлены дополнительные ограничения доступа приложений к совместно используемым файлам, таким как коллекции фотографий, видео и музыка;
  • Для доступа к загруженным файлам, размещённым в каталоге Downloads, приложение теперь обязательно должно использовать системный диалог выбора файла, который предоставляет пользователю полный контроль над тем, к каким конкретно файлам может обратиться приложение;
  • Блокирована возможность перехода приложений из фонового выполнения в активное состояние с выходом на передний план и получением фокуса ввода, прерывая таким образом работу пользователя с другим приложением. При необходимости привлечения внимания пользователя фоновым приложением, например, при входящем звонке, теперь следует использовать высокоприоритетные уведомление с получением полномочий на полноэкранный вывод;
  • Ограничен доступ к неизменяемым идентификаторам устройства, таким как IMEI и серийный номер. Для получения подобных идентификаторов приложение должно иметь привилегии READ_PRIVILEGED_PHONE_STATE. Приложениям также ограничен доступ к псевдо-ФС «/proc/net» со статистикой сетевой активности, а доступ к данным в буфере обмена отныне предоставляется только когда приложение активно (получило фокус ввода);
  • При отдаче списка контактов приложению прекращено ранжирование вывода по частоте обращения к контактам для сокрытия от приложений информации о предпочтениях пользователя;
  • По умолчанию включена рандомизация MAC-адресов: при подключении к разным беспроводным сетям теперь генерируются разные MAC-адреса, что не позволяет отслеживать перемещение пользователя между WiFi-сетями;
  • Для доступа к API сканирования сетей Bluetooth, сотовых сетей и Wi-Fi теперь требуется получение полномочий на получение точных сведений о местоположении (ранее требовались полномочия на получение приблизительных сведений о местоположении). При этом, если соединение устанавливается в режиме P2P или сеть для подключения определяется системой, то отдельные полномочия на доступ к информации о местоположении не требуются;
  • Реализована поддержка технологии защиты беспроводных сетей WPA3, в которой предоставляется защита от атак по подбору пароля (не позволит подбирать пароль в offline-режиме) и задействован протокол аутентификации SAE. Для генерации ключей шифрования в открытых сетях добавлена поддержка процесса согласования соединения, реализуемого расширением OWE (Opportunistic Wireless Encryption);
  • Добавлена поддержка устройств со сгибающимися складными экранами, таких как Huawei Mate X. На каждой половинке складного экрана теперь может размещаться отдельное приложение. Для поддержки новых типов экранов добавлена поддержка раздельной обработки множественных событий пробуждения и смены фокуса (когда одна половина экрана активна, а другая остаётся закрытой или когда обе половинки активны), а также расширен API для обработки изменения размера экрана (для того чтобы приложение корректно воспринимало увеличение размера экрана при раскрытии второй половины). В эмулятор Android добавлена симуляция устройств со сгибающимися экранами;
  • Добавлена поддержка ярлыков для отправки данных и сообщений (Sharing Shortcuts), позволяющих быстро перейти в приложение, осуществляющее отправку;
  • Добавлена поддержка всплывающих панелей с настройками, которые позволяют обратиться к ключевым системным настройкам в контексте пользовательского приложения. Для отображения панелей настройки из приложения предоставляется API Settings Panel. Например, мультимедийный проигрыватель может показать панель с системными настройками звука, а браузер настройки сетевого подключения и перехода в режим полёта;
  • Проведён рефакторинг беспроводного стека для усиления приватности и увеличения производительности, а также для улучшения управления устройствами интернета вещей через локальный Wi-Fi (например, для вывода на печать через Wi-Fi) и выбора точек подключения. Функции сканирования доступных точек доступа теперь предоставлюется платформой с выводом найденных сетей в интерфейсе Wi-Fi Picker и автоматической настройкой соединения в случае его выбора пользователем. Приложениям через API WifiNetworkSuggestions предоставлена возможность влиять на алгоритм выбора предпочитаемых беспроводных сетей путём передачи приложением ранжированного списка сетей и паролей для подключения к ним. Кроме того, при выборе сети, к которой осуществляется подключение, теперь учитываются метрики о пропускной способности при прошлом подключении (выбирается наиболее быстрая сеть);
  • Добавлены два режима работы Wi-Fi — режим достижения максимальной пропускной способности и режим минимальных задержек (например, полезен для игр и голосовых коммуникаций);
  • Приложения для работы с камерой и изображениями теперь могут запросить у камеры передачу дополнительных XMP-метаданных в файле JPEG, включающих сведения, необходимые для обработки глубины на фотографиях (например, сохраняемая двойными камерами карта глубины). Указанные параметры можно применять для реализации различных режимов размытия фона и эффекта боке, а также для создания 3D-фотографий или в системах дополненной реальности;
  • Добавлена поддержка видеокодека AV1, который позиционируется как общедоступный и не требующий оплаты отчислений свободный формат кодирования видео, который заметно опережает H.264 и VP9 по уровню сжатия;
  • Добавлена поддержка свободного звукового кодека Opus, обеспечивающего высокое качество кодирования и минимальную задержку как при сжатии потокового звука с высоким битрейтом, так и при сжатии голоса в ограниченных по пропускной способности приложениях VoIP-телефонии;
  • Добавлена поддержка стандарта HDR10+, применяемого для кодирования видео с повышенным динамическим диапазоном;
  • В API MediaCodecInfo добавлен упрощённый метод для определения доступных на устройстве возможностей вывода видео (выводится список кодеков и поддерживаемых на устройстве разрешений и FPS);
  • Добавлен API Native MIDI, предоставляющий приложениям на C++ возможность напрямую взаимодействовать с MIDI-устройствами через NDK в неблокирующем режиме, позволяющем обрабатывать MIDI-сообщения с очень низкими задержками;
  • Добавлена поддержка графического API Vulkan 1.1. По сравнению с OpenGL ES использование Vulkan позволяет существенно снизить нагрузку на CPU (до 10 раз в тестах Google) и повысить производительность отрисовки. Конечной целью является повсеместная поддержка Vulkan на всех Android-устройствах, для чего Google работает с производителями оборудования в плане перевода Vulkan 1.1 в разряд обязательных требований для всех 64-разрядных устройств на базе Android Q;
  • Добавлена экспериментальная поддержка выполнения прослойки ANGLE (Almost Native Graphics Layer Engine) поверх графического API Vulkan. ANGLE позволяет выполнить отрисовку, абстрагируясь от специфичных для разных систем API, благодаря трансляции вызовов OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan). Для разработчиков игр и графических приложений ANGLE позволяет использовать обычный драйве OpenGL ES на всех устройствах, использующих Vulkan;
  • До версии 1.2 обновлён API Neural Networks, предоставляющий приложениям возможности по задействованию средств аппаратного ускорения для систем машинного обучения. API позиционируется как базовая прослойка для функционирования в Android фреймворков машинного обучения, таких как TensorFlow Lite и Caffe2. Для использования на мобильных устройствах предложен ряд готовых моделей нейронных сетей, в том числе MobileNets (распознавание объектов на фотографиях), Inception v3 (компьютерное зрение) и Smart Reply (подбор вариантов ответа на сообщения). В новом выпуске добавлено 60 новых операций, включая ARGMAX, ARGMIN и квантуемый LSTM, а также проведены значительные оптимизации производительности, что позволило использовать API для поддержки новых моделей машинного обучения, таких как определение объектов и сегментация изображений;
  • Проведены значительные оптимизации производительности runtime ART, позволившие сократить потребление памяти и ускорить запуск приложений. В Google Play обеспечено распространение профилей PGO (Profile Guided Optimization), включающих сведения о наиболее часто выполняемых частях кода. Предкомпиляция подобных частей позволяет существенно сократить время запуска. В самом ART проведена оптимизация для более раннего запуска процесса приложения и перемещения его в изолированный контейнер. В образе памяти приложения обеспечено сохранение дополнительных данных, таких как классы. Реализован многопоточный режим загрузки образов памяти приложений. Повышена эффективность работы сборщика мусора, за счёт раздельной обработки недавно созданных объектов;
  • В API BiometricPrompt, унифицирующем вывод диалога биометрической аутентификации, добавлена поддержка пассивных методов аутентификации, таких как аутентификация по лицу. Предложены раздельные методы обработки явной и не явной аутентификации. При явной аутентификации пользователь должен подтвердить операцию, а при неявной — аутентификация может производится незаметно в пассивном режиме;
  • Добавлена и включена по умолчанию для всех соединений поддержка TLS 1.3. В тестах Google применение TLS 1.3 позволяет до 40% ускорить установку защищённых соединений, по сравнению с TLS 1.2.

Источник: [ссылка]

Выпуск программы для цифровой живописи Milton 1.6.0

После полутора лет разработки состоялся релиз Milton 1.6.0, программы для рисования, цифровой живописи и создания скетчей. Код программы написан на языке С++ и Lua. Отрисовка производится через OpenGL и SDL. Код распространяется под лицензией GPLv3. Сборки формируются только для Windows, для Linux и macOS программа может быть собрана из исходных текстов.

Milton целиком сосредоточен только на рисовании на холсте бесконечного размера. Методы работы напоминают растровые системы, но картинка обрабатывается в векторной форме. Ректор не поддерживает обработку отдельных пикселей, но на векторном уровне позволяет углубляться в любой уровень детализации. Поддерживаются такие возможности, как слои, кисти, линии, размывание и т.п.

Особенностью также является отсутствие кнопки сохранения — все результаты сохраняются автоматически по мере внесения изменений с возможности неограниченного отката изменений (безлимитный undo/redo, не разрываемый закрытием программы). Применение векторного формата позволяет хранить данные в очень компактном виде. Имеется возможность экспорта в растровые форматы JPEG и PNG.

В новом выпуске появился инструмент для рисования линий, улучшена совместимость с OpenGL, проведена оптимизация производительности отрисовки, сокращена интенсивность автозаписи и добавлена поддержка планшетов Huion.

Источник: [ссылка]

Выпуск открытого игрового движка Godot 3.1

Представлен выпуск свободного игрового движка Godot 3.1, подходящего для создания 2D- и 3D-игр. Движок поддерживает простой для изучения язык задания игровой логики, графическую среду для проектирования игр, систему развёртывания игр в один клик, широкие возможности анимации и симуляции физических процессов, встроенный отладчик и систему выявления узких мест в производительности. Код игрового движка, среды проектирования игр и сопутствующих средств разработки (физический движок, звуковой сервер, бэкенды 2D/3D рендеринга и т.п.) распространяются под лицензией MIT.

Исходные тексты движка были открыты в 2014 году студией OKAM, после десяти лет развития проприетарного продукта профессионального уровня, который использовался для создания и публикации многих игр для PC, игровых консолей и мобильных устройств. Движком поддерживаются все популярные стационарные и мобильные платформы (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), а также разработка игр для Web. Готовые для запуска бинарные сборки сформированы для Linux, Windows и macOS.

Основные новшества:

  • Возвращена убранная в выпуске 3.0 возможность рендеринга с использованием OpenGL ES 2.0 / OpenGL 2.1 вместо OpenGL ES 3.0 / OpenGL 3.3, что позволяет добиться более высокой производительности на устаревшем оборудовании, обойти некоторые проблемы с драйверами и обеспечить совместимость со старыми мобильными устройствами и браузерами без поддержки WebGL 2.0. Так как по возможностям рендеринг на базе OpenGL ES 2 отстаёт от OpenGL ES 3, поддержка OpenGL ES 2 реализована в виде отдельной платформы отрисовки;
  • В языке сценариев GDScript добавлена опциональная поддержка явного указания типов, помимо предлагаемой изначально динамической типизации. Указанная возможность пока реализована только на уровне парсера и будет доработана в будущем. Использование типов позволит повысить производительность кода, упростит работу системы автодополнения ввода, позволит отлавливать дополнительные ошибки и сделает код более читаемым;
  • Переработан интерфейс инспектирования. Добавлены такие новые возможности, как редактирование векторных полей, инспектирование в процессе редактирования ресурсов, улучшенные настраиваемые визуальные редакторы для различных типов объектов, удобная система управления на основе ползунков, улучшенное редактирование массивов и словарей;
  • Переписан 2D-редактор. Значительно улучшена работа с прямоугольниками-ограничителями (gizmo) при манипуляции с объектами, обеспечена пометка общих узлов и добавлена возможность прямого изменения размера фигур;
  • Представлен новый редактор для тайловой графики, позволяющий формировать целостное изображение из фрагментов одинакового размера;
  • Переработана панель для работа с файловой системой, в которой реализован режим древовидного отображения файлов с миниатюрами, предпросмотром выбранных файлов, определением содержимого файлов на сцене и секцией с избранными файлами;
  • Улучшены средства для создания кинематической анимации, упрощающие визуализацию движения персонажей. Доступные такие возможности как привязка тела к поверхности, поддержка форм RayCast в движущихся телах и синхронизация кинематического перемещения с физическими свойствами, позволяющая избежать отставания на один кадр;
  • Полностью переработан редактор анимации. Упрощено оформление, добавлен предпросмотр для большинства типов ключей анимации, появилась возможножность группировки треков по узлам, в режим инспектирования добавлена поддержка редактирования ключей, обеспечена возможность копирования треков через буфер обмена, добавлен API для подключения собственных плагинов редактирования треков, добавлены новые типы треков;
  • Предложен новый интерфейс с деревом наложения анимации (AnimationTree);
  • Добавлена новая система обработки координатных осей, упрощающая произвольную привязку к осям;
  • Возвращён визуальный редактор шейдеров;
  • Добавлены новые узлы Skeleton2D и Bone2D для создания двумерных каркасов для скелетной деформации;
  • Добавлена поддержка 2D-мэшей, которые можно конвертировать из спрайтов, например, чтобы избежать отрисовки больших прозрачных областей;
  • Улучшен 3D-редактор, в котором полностью переработаны механизмы выделения объектов и система ограничивающих параллелепипедов (gizmo);
  • На базе движка Bullet реализована поддержка симуляции мягких тел (soft body). Также добавлена система SkeletonIK, позволяющая создавать простые цепочки обратной кинематики (IK) для существующих каркасов и переключаться между режимами прямой и обратной кинематики;
  • Добавлена возможность быстрого моделирования прототипов твёрдых тел при помощи конструктивной блочной геометрии (CSG);
  • Добавлена поддержка симплексных (OpenSimplex) и зашумлённых текстур;
  • Добавлена возможность использования CPU для генерации частиц (ранее поведение частиц рассчитывалось только при помощи GPU);
  • В сетевой API добавлена поддержка WebSockets и UPnP;
  • В звуковой системе появилась возможность использования MIDI-устройств и захвата звука через микрофон.

Источник: [ссылка]

Релиз сетевого конфигуратора NetworkManager 1.16

Подготовлен новый стабильный релиз интерфейса для упрощения настройки параметров сети — NetworkManager 1.16. Плагины для поддержки VPN, OpenConnect, PPTP, OpenVPN и OpenSWAN развиваются в рамках собственных циклов разработки.

Ключевые новшества NetworkManager 1.16:

  • Поддержка VPN-туннелей WireGuard. Протокол WireGuard значительно проще IPsec, а реализация быстрее OpenVPN в несколько раз. Все опции для настройки WireGuard доступны через D-Bus API и libnm. В nmcli добавлена возможность создания и управления профилями соединений для WireGuard;
  • Поддержка установки прямых беспроводных соединений в режиме P2P (Wi-Fi Direct), позволяющем Wi-Fi-устройствам взаимодействовать напрямую без маршрутизаторов и точек доступа. Указанная возможность может применяться для трансляции содержимого экрана на другое устройство при помощи протокола Miracast в GNOME;
  • Поддержка протокола аутентификации и создания ключей SAE (Simultaneous Authentication of Equals), предоставляющего более защищённый метод аутентификации на основе паролей. SAE базируется на протоколе обмена ключами Диффи — Хеллмана с использованием конечных цикличных групп. Результирующий сессионный ключ, который получает каждая сторона соединения для аутентификации сеанса, вырабатывается на основе информации из пароля, ключей каждой системы и MAC-адресов обеих сторон. Компрометация закрытого ключа одной из сторон не приводит к компрометации сессионного ключа, т.е. даже узнав пароль атакующий не сможет расшифровать ранее перехваченный трафик;
  • Поддержка создания mesh-сетей, соответствующих стандарту 802.11s и использующих протокол аутентификации SAE;
  • Поддержка технологии защиты беспроводных сетей WPA3-Personal, в которой предоставляется защита от атак по подбору пароля (не позволит подбирать пароль в offline-режиме) и задействован протокол аутентификации SAE;
  • Возможность выполнения NetworkManager на начальной стадии загрузки системы, на этапе до монтирования корневой ФС. Для преобразования в формат NetworkManager сетевой конфигурации, указанной в параметрах запуска ядра, может применяться модуль dracut. После успешной инициализации сетевого подключения NetworkManager на начальной стадии загрузки завершает своё выполнение, а управления сетевыми устройствами после завершения загрузки подхватывает обычный экземпляр NetworkManager;
  • В бэкенде на базе Wi-Fi демона IWD, развиваемого компанией Intel в качестве альтернативы wpa_supplicant, реализована поддержка создания точек доступа и прямого подсоединения к беспроводным сетям в режиме Ad-hoc;
  • Повышена точность оценки состояния сетевых подключений. Состояние теперь может отслеживаться в разрезе отдельных устройств и раздельно для IPv4 и IPv6;
  • Поддержка управления настройками DNS для systemd-resolved без использования systemd-resolved в качестве основного DNS-плагина в NetworkManager.

Источник: [ссылка]