Уязвимость в чипах Qualcomm, позволяющая извлечь закрытые ключи из хранилища TrustZone

Исследователи из компании NCC Group раскрыли детали уязвимости (CVE-2018-11976) в чипах Qualcomm, позволяющей определить содержимое закрытых ключей шифрования, размещённых в изолированном анклаве Qualcomm QSEE (Qualcomm Secure Execution Environment), основанном на технологии ARM TrustZone. Проблема проявляется в большинстве SoC Snapdragon, получивших распространение в смартфонах на базе платформы Android. Исправления, устраняющие проблему, уже включены в апрельское обновление Android и в новые выпуски прошивок для чипов Qualcomm. На подготовку исправления компании Qualcomm потребовалось больше года — изначально сведения об уязвимости были направлены в Qualcomm ещё 19 марта 2018 года.

Напомним, что технология ARM TrustZone позволяет создавать аппаратно изолированные защищённые окружения, которые полностью отделены от основной системы и выполняются на отдельном виртуальном процессоре c использованием отдельной специализированной операционной системы. Основным предназначением TrustZone является обеспечение изолированного выполнения обработчиков ключей шифрования, биометрической аутентификации, платёжных данных и другой конфиденциальной информации. Взаимодействие с основной ОС осуществляется косвенно через интерфейс диспетчеризации. Закрытые ключи шифрования размещаются внутри аппаратно изолированного хранилища ключей, что при надлежащей реализации позволяет предотвратить их утечку в случае компрометации основной системы.

Уязвимость связана с недоработкой в реализации алгоритма обработки эллиптических кривых, приводившей к утечке информации о ходе обработки данных. Исследователи разработали технику атаки по сторонним каналам, позволяющую по имеющимся косвенным утечкам восстановить содержимое закрытых ключей, размещённых в аппаратно изолированном Android Keystore. Утечки определяются на основе анализа активности блока предсказания переходов и изменения времени доступа к данным в памяти. В ходе эксперимента исследователи успешно продемонстрировали восстановление 224- и 256-разрядных ключей ECDSA из аппаратно изолированного хранилища ключей, применяемого в смартфоне Nexus 5X. Для восстановления ключа потребовалась генерация около 12 тысяч цифровых подписей, на которую ушло более 14 часов. Для проведения атаки использовался инструментарий Cachegrab.

Основной причиной возникновения проблемы является совместное использование общих аппаратных компонентов и кэша для вычислений в TrustZone и в основной системе — изоляция выполнена на уровне логического разделения, но с использованием общих вычислительных блоков и с оседанием следов вычислений и информации об адресах переходов в общем процессорном кэше. При помощи метода Prime+Probe, основанного на оценке изменения времени доступа к прокэшированной информации, можно через проверку наличия определённых шаблонов в кэше с достаточно высокой точностью отслеживать потоки данных и признаки выполнения кода, связанного с вычислениями цифровых подписей в TrustZone.

Большая часть времени формирования цифровой подписи с использованием ключей ECDSA в чипах Qualcomm тратится на выполнение операций умножения в цикле с использованием неизменного для каждой подписи вектора инициализации (nonce). Если атакующий сможет восстановить хотя бы несколько битов с информацией о данном векторе, появляется возможность совершения атаки по последовательному восстановлению всего закрытого ключа.

В случае с Qualcomm выявлено два места утечки подобной информации в алгоритме умножения: при выполнении операций поиска в таблицах и в коде условного извлечения данных на основе значения последнего бита в векторе «nonce». Несмотря на наличие в коде Qualcomm мер по противодействию утечкам сведений по сторонним каналам, разработанный метод атаки позволяет обойти эти меры и определить несколько битов значения «nonce», которых достаточно для восстановления 256-разрядных ключей ECDSA.

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

Релиз Electron 5.0.0, платформы создания приложений на базе движка Chromium

Подготовлен релиз платформы Electron 5.0.0, которая предоставляет самодостаточный фреймворк для разработки многоплатформенных пользовательских приложений, использующий в качестве основы компоненты Chromium, V8 и Node.js. Значительное изменение номера версии связано с обновлением до кодовой базы Chromium 73, платформы Node.js 12 и JavaScript-движка V8 7.3. Ранее ожидавшееся прекращение поддержки 32-разрядных систем Linux пока отложено и выпуск 5.0 в том числе доступен в 32-разрядных сборках.

Среди изменений в API, специфичных для Electron:

  • В API продолжен перевод асинхронных обработчиков, ранее использующих callback-вызовы, в форму на основе механизма Promise. Поддержка Promise добавлена в Cookies API и в методах app.getFileIcon, contentTracing.[getCategories| startRecording| stopRecording], debugger.sendCommand, shell.openExternal, webContents.[loadFile| loadURL| zoomLevel| zoomFactor] и win.capturePage;
  • Добавлена возможность получения информации о системных цветах в macOS, используя вызовы systemPreferences.getAccentColor, systemPreferences.getColor и systemPreferences.getSystemColor;
  • Добавлена функция process.getProcessMemoryInfo, предоставляющая статистику о потреблении памяти текущим процессом;
  • В модуль «remote», представляющий IPC-механизм для взаимодействия между процессом отрисовки текущей страницы и основным процессом, добавлены дополнительные возможности по фильтрации внешних запросов для получения полного контроля за обращением к IPC. Поддержка фильтров добавлена для вызовов remote.getBuiltin, remote.getCurrentWindow, remote.getCurrentWebContents и webview.getWebContents;
  • Добавлена возможность управления несколькими экземплярами BrowserViews из одного объекта BrowserWindow;
  • В упакованных в пакеты приложениях обеспечено добавление меню приложения по умолчанию, даже если приложение явно не определяет данное меню и не добавляет обработчик события закрытия окна;
  • Активирован по умолчанию смешанный режим работы sandbox-изоляции, при котором и процесс отрисовки запускается в sandbox;
  • Добавлена переменная окружения «ELECTRON_DISABLE_SANDBOX» для отключения sandbox-изоляции, например, если приложение и так запускается в контейнере на базе Docker;
  • Для повышения безопасности по умолчанию отключены настройки nodeIntegration и webviewTag;
  • API проверки орфографии (Spellchecker) переведён на неблокирующий режим работы, при котором результат проверки возвращается в асинхронном режиме;
  • Объявлены устаревшими и будут удалены в следующем выпуске: исполняемые файлы mksnapshot для arm и arm64, ServiceWorker в WebContents, вызовы webFrame.setIsolated*, возможность прямого вызова модулей electron.screen, child_process, fs, os и path (теперь нужно вызывать через remote.require с использованием обработчика в изолированном WebContents).

Напомним, что Electron позволяет создавать любые графические приложения с использованием браузерных технологий, логика работы которых определяется на JavaScript, HTML и CSS, а функциональность может быть расширена через систему дополнений. Разработчикам доступны модули Node.js, а также расширенный API для формирования нативных диалогов, интеграции приложений, создания контекстных меню, интеграции с системой вывода уведомлений, манипуляции окнами, взаимодействия с подсистемами Chromium.

В отличие от web-приложений, программы на базе Electron поставляются в виде самодостаточных исполняемых файлов, не привязанных к браузеру. При этом разработчику не нужно заботиться о портировании приложения для различных платформ, Electron обеспечит возможность сборки для всех систем, поддерживаемых в Chromium. Electron также предоставляет средства для организации автоматической доставки и установки обновлений (обновления можно доставлять как с отдельного сервера, так и напрямую с GitHub).

Из программ, построенных на базе платформы Electron можно отметить редактор Atom, почтовый клиент Nylas, инструментарий для работы с Git GitKraken, система анализа и визуализации SQL-запросов Wagon, система ведения блогов WordPress Desktop, BitTorrent-клиент WebTorrent Desktop, а также официальные клиенты к таким сервисам, как Skype, Signal, Slack, Basecamp, Twitch, Ghost, Wire, Wrike, Visual Studio Code и Discord. Всего в каталоге программ Electron представлено 760 приложений. Для упрощения разработки новых приложений подготовлен набор типовых демонстрационных приложений, включающих примеры кода для решения различных задач.

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

Выпуск OpenBSD 6.5

На неделю раньше намеченного срока увидел свет релиз свободной кросс-платформенной UNIX-подобной операционной системы OpenBSD 6.5. Проект OpenBSD был основан Тэо де Раадтом (Theo de Raadt) в 1995 году после конфликта с разработчиками NetBSD, в результате которого для Тэо был закрыт доступ к CVS репозиторию NetBSD. После этого Тэо де Раадт с группой единомышленников создал на базе дерева исходных текстов NetBSD новую открытую операционную систему, главными целями развития которой стали переносимость (поддерживается 13 аппаратных платформ), стандартизация, корректная работа, активная безопасность и интегрированные криптографические средства. Размер полного установочного ISO-образа базовой системы OpenBSD 6.5 составляет 407 Мб.

Кроме непосредственно операционной системы, проект OpenBSD известен своими компонентами, которые получили распространение в других системах и зарекомендовали себя как одни из наиболее безопасных и качественных решений. Среди них: LibreSSL (форк OpenSSL), OpenSSH, пакетный фильтр PF, демоны маршрутизации OpenBGPD и OpenOSPFD, NTP-сервер OpenNTPD, почтовый сервер OpenSMTPD, мультиплексор текстового терминала (аналог GNU screen) tmux, демон identd с реализацией протокола IDENT, BSDL-альтернатива пакету GNU groff — mandoc, протокол для организации отказоустойчивых систем CARP (Common Address Redundancy Protocol), легковесный http-сервер, утилита синхронизации файлов OpenRSYNC.

Среди наиболее заметных изменений: представлена переносимая версия bgpd, адаптированная для работы в других ОС, избавлены от использования root-привилегий Xenocara и tcpdump, для amd64 и i386 задействован по умолчанию компоновщик LLD, значительно улучшена поддержка MPLS, усилена защита от эксплоитов с приёмами возвратно-ориентированного программирования (ROP), добавлен простейший рекурсивный DNS-сервер unwind, в ядро интегрирован детектор неопределённого поведения, представлена собственная реализация утилиты rsync.

Основные улучшения:

  • При сборке для архитектур amd64 и i386 по умолчанию задействован компоновщик LLD, развиваемый проектом LLVM. Для архитектуры mips64 добавлена поддержка сборки с использованием Clang;
  • Новые драйверы pvclock для паравиртуализированного таймера KVM и ixl для Intel Ethernet 700. Драйвер uaudio заменён на новую реализацию с поддержкой USB Audio 2.0.
  • Улучшена работа драйверов беспроводных устройств bwfm, iwn, iwm и athn. В беспроводной стек добавлена поддержка сообщений RTM_80211INFO для передачи детальных сведений о состоянии интерфейса в команды dhclient и route. Изменено поведение по молчанию при подключении к беспроводным сетям — при наличии настроенного списка автоподключения OpenBSD теперь не соединяется с неизвестными открытыми сетями (для возвращения прошлого поведения можно добавить пустую сеть в список);
  • В сетевом стеке представлены новые драйверы псевдоустройств bpe (Backbone Provider Edge) и mpip (MPLS IP layer 2). Для MPLS-интерфейсов добавлена поддержка настройки альтернативных доменов маршрутизации. Обеспечена работа драйвера vlan в обход обработки очередей с выводом напрямую в родительский сетевой интерфейс. В ifconfig добавлен режим txprio для управлением кодированием приоритета в заголовках туннелируемых пакетов (поддерживается для драйверов vlan, gre, gif и etherip);
  • В реализации фильтра bpf появилась возможность применения механизма отбрасывания (drop) без захвата пакетов. Данная возможность задействована в tcpdump для фильтрации на начальном этапе поступления пакета;
  • В инсталляторе обеспечена поддержка rdsetroot для добавления дискового образа в RAMDISK ядра. Обеспечено удаление некоторых компонентов старых релизов в процессе обновления системы;
  • Усовершенствован системный вызов unveil, который обеспечивает изоляцию доступа к файловой системе. В новой версии добавлено определение совпадений относительно рабочего каталога текущего процесса при разборе относительных путей. Запрещено использование stat и access для ограниченных компонентов файловых путей. Для приложений ospfd, ospf6d, rebound, getconf, kvm_mkdb, bdftopcf, Xserver, passwd, spamlogd, spamd, sensorsd, snmpd, htpasswd и ifstated реализована защита с использованием unveil;
  • В Clang улучшены средства для блокирования применения приёмов возвратно-ориентированного программирования (ROP), позволившие значительно сократить число полиморфных гаджетов, встречающихся в результирующих исполняемых файлах для архитектур i386 и amd64;
  • В Clang повышена производительность и безопасность при применении механизма защиты RETGUARD, нацеленного на усложнение выполнения эксплоитов, построенных с использованием заимствования кусков кода и приёмов возвратно-ориентированного программирования. Для ускорения работы вместо стека данные по возможности размещаются в регистрах, а при возврате более эффективно используется процессорный кэш. RETGUARD также теперь используется вместо традиционной защиты стека на системах amd64 и arm64;
  • Улучшены утилиты, связанные с сетевым стеком: В pcap-filter добавлена поддержка фильтрации пакетов MPLS. В ospfd, ospf6d и ripd добавлена возможность настройки приоритетов маршрутизации. В ripd добавлена защита на основе механизма pledge. В ifconfig добавлены режимы sff и sffdump для получения диагностической информации с оптических приёмопередатчиков;
  • Представлен первый выпуск нового резолвера unwind, обрабатывающего рекурсивные DNS-запросы и принимающего соединения только на интерфейсе 127.0.0.1. Unwind рассчитан для использования на клиентских системах, таких как ноутбуки, перемещающиеся между разными беспроводными сетями. В случае определения блокирования DNS-трафика в локальной сети, unwind переключается на использование переданного по DHCP адреса рекурсивного DNS-сервера, но продолжает периодически пытаться выполнить резолвинг самостоятельно и как только прямые запросы начинают проходить возвращается к самостоятельному обращению к DNS-серверам;
  • В bgpd проведена работа по снижению потребления памяти, добавлен простой оптимизатор правил (выполняет слияние правил фильтрации, отличающихся только наборами фильтров), изменён процесс настройки BGP MPLS VPN, добавлена поддержка IPv6 BGP MPLS VPN, реализована функциональность «as-override» для замены AS соседа на локальный AS в путях, добавлена возможность сопоставления с несколькими community в одном правиле, добавлены новые признаки сопоставлений «*», «local-as» и «neighbor-as», улучшена работа с большими наборами правил, добавлены новые команды для работы с группами соседних автономных систем ( «bgpctl neighbor group», «bgpctl show neighbor group», «bgpctl show rib neighbor group»), в bgpctl добавлена возможность добавления сетей в таблицы BGP VPN. Впервые подготовлен переносимый вариант OpenBGPD-portable, готовый к работе в системах, отличных от OpenBSD;
  • Добавлена опция kubsan для выявления случаев неопределённого поведения в ядре OpenBSD.
  • Утилита tcpdump полностью избавлена от использования root-привилегий;
  • Улучшена производительность malloc в многопоточных приложениях;
  • В состав добавлена начальная версия программы OpenRSYNC с собственной реализацией утилиты синхронизации файлов rsync;
  • Обновлена версия почтового сервера OpenSMTPD, в которой в smtpd.conf добавлен новый критерий сопоставлений «from rdns», позволяющий выбирать севнсы на основе резолвинга обратного DNS (определение имени хоста по IP). При поиске в таблицах добавлена возможность применения регулярных выражений;
  • Обновлён пакет OpenSSH 8.0, подробный обзор улучшений можно посмотреть здесь;
  • Обновлён пакет LibreSSL, подробный обзор улучшений можно посмотреть в анонсах выпусков 2.9.0 и 2.9.1;
  • В Mandoc значительно улучшен вывод в HTML, улучшена отрисовка таблиц и добавлен флаг «-O» для открытия страницы с определением указанного термина;
  • Расширены возможности графического стека Xenocara: X-сервер теперь не требует для запуска установки с флагом setuid. В Mesa-драйвере radeonsi включена поддержка аппаратного ускорения для GPU Southern Islands (Radeon HD 7000) и Sea Islands (Radeon HD 8000);
  • Порты на языке C++ для архитектур, не поддерживаемых в Clang, теперь собраны с использованием GCC из портов. Число портов для архитектуры AMD64 составило 10602, для aarch64 — 9654, для i386 — 10535. Из находящихся в портах приложений отмечены:
    • Asterisk 16.2.1
    • Audacity 2.3.1
    • CMake 3.10.2
    • Chromium 73.0.3683.86
    • FFmpeg 4.1.3
    • GCC 4.9.4 и 8.3.0
    • GNOME 3.30.2.1
    • Go 1.12.1
    • JDK 8u202 и 11.0.2+9-3
    • LLVM/Clang 7.0.1
    • LibreOffice 6.2.2.2
    • Lua 5.1.5, 5.2.4 and 5.3.5
    • MariaDB 10.0.38
    • Mono 5.18.1.0
    • Mozilla Firefox 66.0.2 и ESR 60.6.1
    • Mozilla Thunderbird 60.6.1
    • Node.js 10.15.0
    • OpenLDAP 2.3.43 и 2.4.47
    • PHP 7.1.28, 7.2.17 и 7.3.4
    • Postfix 3.3.3 и 3.4.20190106
    • PostgreSQL 11.2
    • Python 2.7.16 и 3.6.8
    • R 3.5.3
    • Ruby 2.4.6, 2.5.5 и 2.6.2
    • Rust 1.33.0
    • Sendmail 8.16.0.41
    • SQLite3 3.27.2
    • Suricata 4.1.3
    • Tcl/Tk 8.5.19 и 8.6.8
    • TeX Live 2018
    • Vim 8.1.1048 и Neovim 0.3.4
    • Xfce 4.12
  • Компоненты от сторонних разработчиков, входящие в состав OpenBSD 6.5:
    • Графический стек Xenocara на базе X.Org server 1.19.7 с патчами, freetype 2.9.1, fontconfig 2.12.4, Mesa 18.3.5, xterm 344, xkeyboard-config 2.20;
    • LLVM/Clang 7.0.1 (с патчами)
    • GCC 4.2.1 (с патчами) и 3.3.6 (с патчами)
    • Perl 5.28.1 (с патчами)
    • NSD 4.1.27
    • Unbound 1.9.1
    • Ncurses 5.7
    • Binutils 2.17 (с патчами)
    • Gdb 6.3 (с патчами)
    • Awk Aug 10, 2011
    • Expat 2.2.6

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

Среда разработки NetBeans получила статус первичного проекта Apache

Организация Apache Software Foundation объявила о присвоении интегрированной среде разработки NetBeans статуса первичного проекта Apache. Осенью 2016 года компания Oracle приняла решение по передаче проекта под покровительство Фонда Apache, после чего передала 4 млн строк кода и права на все связанные с NetBeans исходные тексты, а также торговую марку «NetBeans», домен «netbeans.org» и некоторые элементы инфраструктуры. Оставшиеся 1.5 млн строк кода, охватывающих модули для поддержки языков Java, JavaScript, PHP и Groovy, были переданы в 2018 году.

C октября 2016 года проект находился в инкубаторе Apache, где была проверена способность следования принципам разработки и управления, принятым в сообществе Apache и основанным на идеях меритократии. Во время нахождения в инкубаторе были сформированы релизы Apache NetBeans 9, 10 и 11, которые были выпущены с ограниченной поддержкой языков программирования (Java, PHP, JavaScript и Groovy). Возвращение поддержки C/C++ ожидается в одном из следующих выпусков.

Теперь Apache NetBeans признан готовым для самостоятельного существования, не требующего дополнительного надзора. Компоненты проекта перелицензированы — код переведён с копилефт лицензий GPLv2 и CDDL на лицензию Apache 2.0. В качестве причины передачи проекта называлось желание продолжить разработку на нейтральной площадке с независимой моделью управления для того чтобы упростить участие в развитии проекта представителей сообщества и других компаний (например, внутренние проекты на основе NetBeans развивают Boeing, Airbus, NASA и NATO).

Напомним, что проект NetBeans был основан в 1996 году чешскими студентами с целью создания аналога Delphi для Java. В 1999 году проект был куплен компанией Sun Microsystems, а в 2000 году опубликован в исходных текстах и переведён в разряд свободных проектов. В 2010 году NetBeans перешёл в руки компании Oracle, поглотившей Sun Microsystems. Все эти годы NetBeans развивался в качестве основной среды для разработчиков на языке Java, конкурируя с Eclipse и IntelliJ IDEA, но последнее время стал активно продвигаться и для языков JavaScript, PHP и C/C++. Активная пользовательская база NetBeans оценивается в 1.5 млн разработчиков.

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

Выпуск эмулятора QEMU 4.0

Сформирован релиз проекта QEMU 4.0. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы, на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к нативной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.

Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 4.0 внесено более 3100 изменений от 220 разработчиков.

Ключевые улучшения, добавленные в QEMU 4.0:

  • В эмулятор архитектуры ARM добавлена поддержка расширений инструкций ARMv8+: SB, PredInv, HPD, LOR, FHM, AA32HPD, PAuth, JSConv, CondM, FRINT и BTI. Добавлена поддержка эмуляции плат «Musca» и «MPS2». Улучшена эмуляция ARM PMU (Power Management Unit). В платформу virt добавлена возможность использования более 255 Гб ОЗУ и поддержка образов u-boot с типом «noload»;
  • В эмуляторе архитектуры x86 в движке ускорения виртуализации HAX (Intel Hardware Accelerated Execution) добавлена поддержка POSIX-совместимых хостов, таких как Linux и NetBSD (ранее поддерживалась только платформа Darwin). В эмуляторе чипсета Q35 (ICH9) для основных портов PCIe опционально теперь может быть заявлена максимальная скорость (16GT/s) и число линий соединения (x32), определённых в спецификации PCIe 4.0 (для обеспечения совместимости по умолчанию для старых типов машин QEMU устанавливается 2.5GT/s и x1). Обеспечена возможность загрузки образов Xen PVH с опцией «-kernel»;
  • В эмулятор архитектуры MIPS добавлена поддержка многопоточной эмуляции с использованием классического генератора кода TCG (Tiny Code Generator). Также добавлена поддержка эмуляции CPU I7200 (nanoMIPS32 ISA) и I6500 (MIPS64R6 ISA), возможность обработки запросов типа CPU с использованием протокола QMP (QEMU Management Protocol), добавлена поддержка конфигурационных регистров SAARI и SAAR. Улучшена работа виртуальных машин с типом Fulong 2E. Обновлена реализация Interthread Communication Unit;
  • В эмуляторе архитектуры PowerPC добавлена поддержка эмуляции контроллера прерываний XIVE, расширена поддержка POWER9, для P series добавлена возможность горячего подключения главных мостов PCI (PHB, PCI host bridge). Включена по умолчанию защита от атак Spectre и Meltdown;
  • В эмулятор архитектуры RISC-V добавлена поддержка эмлуляции PCI и USB. Во встроенным сервере отладки (gdbserver) реализована поддержка задания списков регистров в файлах XML. Добавлена поддержка mstatus-полей TSR, TW и TVM;
  • В эмулятор архитектуры s390 добавлена поддержка модели CPU z14 GA 2, а также поддержка эмуляции расширений инструкций для вычислений с плавающей запятой и векторными операциями. В vfio-ap добавлена возможность горячего подключения устройств;
  • В эмуляторе процессоров семейства Tensilica Xtensa улучшена поддержка SMP для Linux и добавлена поддержка расширения FLIX (Flexible length instructions extension);
  • В графический интерфейс добавлена опция ‘-display spice-app’ для настройки и запуска варианта клиента удалённого доступа Spice с оформлением, похожим на GTK-интерфейс QEMU;
  • В реализацию VNC-сервера добавлена поддержка управления доступом при помощи опций tls-authz/sasl-authz;
  • В QMP (QEMU Management Protocol) добавлена поддержка централизованного/внешнего (Out-of-band) выполнения команд и реализованы дополнительные команды для работы с блочными устройствами;
  • В VFIO добавлена реализация интерфейса EDID для поддерживаемых mdev (Intel vGPU), позволяющая менять разрешение экрана, используя опции xres и yres;
  • Для Xen добавлено новое устройство ‘xen-disk’, которое т самостоятельно может создать дисковый бэкенд для Xen PV (без обращения к xenstore). Увеличена производительность дискового бэкенда Xen PV и добавлена возможность изменения размера диска;
  • В сетевых блочных устройствах расширены возможности диагностики и трассировки, улучшена совместимость клиента с проблемными реализациями сервера NBD. В qemu-nbd добавлены опции «—bitmap», «—list» и «—tls-authz»;
  • В эмулируемое устройство IDE/via добавлена поддержка режима PCI IDE ;
  • Добавлена поддержка использования алгоритма lzfse для сжатия образов dmg. Для формата qcow2 добавлена поддержка подключения внешних файлов с данными. Операции распаковки qcow2 вынесены в отдельный поток. В образах vmdk добавлена поддержка операции «blockdev-create»;
  • В блочное устройство virtio-blk добавлена поддержка операций DISCARD (информирование об освобождении блоков) и WRITE_ZEROES (обнуление диапазона логических блоков);
  • В устройстве pvrdma реализована поддержка RDMA Management Datagram services (MAD);
  • Внесены изменения, нарушающие обратную совместимость. Например, вместо опции «handle» в «-fsdev» и «-virtfs» следует использовать опции local» или «proxy». Удалены опции «-virtioconsole» (заменена на «-device virtconsole»), «-no-frame», «-clock», «-enable-hax» (заменена на «-accel hax»). Удалено устройство «ivshmem» (следует использовать «ivshmem-doorbell» иои «ivshmem-plain»). Прекращена поддержка сборки с SDL1.2 (нужно использовать SDL2).

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

Релиз Chrome 74

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

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

  • При наступлении события onUnload, вызываемого при закрытии страницы, теперь запрещено выводить всплывающие окна (блокируется вызов window.open()), что позволит защитить пользователей от принудительного открытия рекламных страниц после закрытия сомнительных сайтов;
  • В JavaScript-движке реализована появился новый режим JIT-less (флаг «—jitless»), дающий возможность выполнить JavaScript без применения JIT (используется только интерпретатор) и без выделения исполняемой памяти в процессе выполнения кода. Отключение JIT может быть полезным для повышения безопасности при работе с потенциально опасными web-приложениями, а также для обеспечения сборки на платформах, запрещающих использование JIT (например, в iOS, на некоторых Smart TV и игровых консолях. При отключении JIT производительность выполнения JavaScript снижается на 40% в тесте Speedometer 2.0 и на 80% в тесте Web Tooling Benchmark, но при симуляции работы с YouTube отмечено снижение производительности лишь на 6%. Потребление памяти при этом уменьшается незначительно, всего на 1.7%;
  • В V8 также предложена большая порция новых оптимизаций. Например, на 60% ускорено выполнение вызовов функций, в которых число фактически переданных параметров не соответствует указанному при определении функции числу аргументов. Ускорен доступ к своействам DOM при помощи функции get, что положительно повлияло на производительность фреймворка Angular. Ускорена работа парсинга JavaScript: оптимизация декодировщика UTF-8 позволила поднять производительность парсера в режиме streaming (разбор по мере загрузки) на 8%, а исключение лишних операций дедупликации дало прирост ещё на 10.5%;
  • Проведена работа по снижению потребления памяти движка JavaScript. Добавлен код для очистки кэша байткода, который занимает примерно 15% от всего размера кучи. В сборщик мусора добавлена стадия для вытеснения из кэша редко скомпилированного байткода для используемых функций или функций, вызываемых только при инициализации. Решение о чистке принимается на основании новых счётчиков, учитывающих последнее время обращения к байткоду. Указанное изменение позволило снизить потребление памяти на 5–15% без негативного влияния на производительность. Дополнительно, в компиляторе байткода исключена генерация заведомо неиспользуемого кода, например, который следует после return или break (если на него нет Jump-перехода);
  • Для WebAssembly реализована поддержка потоков и атомарных операций (API WebAssembly Threads и WebAssembly Atomics);
  • Для обособленной поставки скриптов добавлена поддержка заголовка «#!», определяющего интерпретатор для запуска. Например, по аналогии с другими скриптовыми языками, файл JavaScript может выглядеть примерно так:
         #!/usr/bin/env node     console.log(42);  
  • В CSS добавлен новый media-запрос «prefers-reduced-motion«, позволяющий сайту определить состояние настроек в операционной системе, связанных с отключением анимированных эффектов. При помощи предложенного запроса владелец сайта может узнать, что пользователь отключил у себя анимированные эффекты и также отключить различные анимационные возможности на сайте, например, убрать эффект дрожания кнопок, используемых для привлечения внимания;
  • В дополнение к появившейся в Chrome 72 возможности определения публичных полей реализована поддержка пометки полей приватными, после чего доступ к их значениям будет открыт только внутри класса. Для пометки поля приватным следует указать перед именем поля знак «#». Как и в случае с публичными полями приватные свойства не требуют явного использования конструктора.
  • HTTP-заголовок Feature-Policy, позволяющий управлять поведением API и включением определённых возможностей (например, можно включить синхронный режим работы XMLHttpRequest или отключить Geolocation API), дополнен JavaScript API для контроле активности тех или иных возможностей. Для разработчиков предложено два новых метода document.featurePolicy и frame.featurePolicy, предлагающих три функции: allowedFeatures() для получения списка разрешённых для текущего домена функций, allowsFeature() для выборочной проверки включения конкретных возможностей и getAllowlistForFeature() для вывода списка доменов, для которых на текущей странице разрешена указанная возможность;
  • Добавлена экспериментальная («chrome://flags#enable-text-fragment-anchor») поддержка режима Scroll-To-Text, позволяющего формировать ссылки на отдельные слова или фразы, без явного указания в документе меток при помощи тега «a name» или свойства «id». Для передачи ссылки предлагается специальный параметр «#targetText=», в котором можно указать текст для перехода. Допускается указание маски, включающей фразы, указывающие на начало и конец фрагмента с использованием запятой в качестве их разделителя (например, «example.com#targetText=start%20words, end%20words»);
  • В конструктор AudioContext добавлена опция sampleRate, позволяющая установить делаемую частоту дискретизации для операций со звуком через Web Audio API;
  • Добавлена поддержка класса Intl.Locale, предоставляющего методы для разбора и обработки выставляемых локалью параметров языка, региона и начертания, а также для чтения и записи тегов расширений Unicode, сохранения пользовательских настроек локали в сериализированном формате;
  • Механизм Signed HTTP Exchanges (SXG) расширен средствами для информирования распространителей контента об ошибках загрузки подписанного контента, таких как проблемы с верификацией сертификатов. Обработка ошибок производится через расширения API Network Error Logging. Напомним, что SXG позволяет владельцу одного сайта при помощи цифровой подписи авторизовать размещения определённых страниц на другом сайте, после чего в случае обращения к этим страницам на втором сайте, браузер будет показывать пользователю URL исходного сайта, несмотря на то, что страница загружена с другого хоста;
  • В класс TextEncoder добавлен метод encodeInto(), позволяющий записать закодированную строку напрямую в предварительно выделенный буфер. Метод encodeInto() является высокопроизводительной альтернативой методы encode(), требующего выполнения операции выделения буфера при каждом обращении.
  • В Service worker обеспечена буферизация вызова client.postMessage() до момента готовности документа. Сообщения, отправленные через client.postMessage(), будут удержаны до стадии генерации события DOMContentLoaded, установки onmessage или вызова startMessages();
  • В соответствии с требованием спецификации CSS Transitions добавлены события transitionrun, transitioncancel, transitionstart и transitionend, генерируемые когда CSS-переход помещен в очередь, отменяется, начинает или заканчивает выполняться.
  • При указании через overrideMimeType() или MIME-тип некорректной кодировки символов для запроса XMLHttpRequest, теперь осуществляется откат на UTF-8 вместо Latin-1;
  • Объявлено устаревшим и будет удалено в одном из следующих выпусков свойство «allow-downloads-without-user-activation», через которое можно было организовать автоматическую загрузку файлов при обработке iframe. В будущем инициирование загрузки файлов без явного действия пользователя будет запрещено, так как оно активно применялось для злоупотреблений, навязывания загрузок и подстановки частей вредоносного ПО на компьютер пользователя. Для начала загрузки обязательно потребуется клик пользователя на той же странице. Изначально свойство планировалось удалить в Chrome 74, но удаление было отложено до Chrome 76.
  • Для платформы Windows предложена опциональная тёмная тема оформления интерфейса (в прошлом выпуске тёмное оформление было подготовлено для macOS). Так как тёмное оформление почти идентично оформлению в режиме инкогнито, для выделения приватного режима работы вместо пиктограммы профиля пользователя добавлен специальный индикатор;
  • Для корпоративных пользователей добавлена возможность Chrome Browser Cloud Management для управления настройками браузеров пользователей через консоль Google Admin;
  • В версии для Android на смену «Data Saver» пришёл режим «Lite». Поддержка Data Saver в Chrome 74 прекращена. Режим Lite можно включить в настройках (Settings > Lite mode), но если до этого был включен «Data Saver» режим Lite будет активирован автоматически. Напомним, что режим Lite позволяет ускорить загрузку сайтов и сократить трафик за счёт обращения через прокси в Google, на лету осуществляющий оптимизацию запрашиваемых страниц для просмотра на мобильном устройстве. На серверы Google передаётся только URL страницы, а Cookies и параметры аутентификации обрабатываются напрямую. Опитимизация выполняется адаптивно, например, если страница загружается более 5 секунд;
  • Расширены возможности инструментов для web-разработчиков:
    • При наведении курсора к CSS-свойствам, таким как padding и margin, теперь автоматически подсвечиваются на странице все элементы, на которые данные свойства влияют;
    • Панель аудита обновлена до выпуска Lighthouse 4;
    • Добавлен просмотрщик содержимого бинарных сообщений, передаваемых через WebSocket;
    • Добавлена возможность быстрого вызова инструмента для создания скриншотов из строки ввода команд (достаточно набрать «area» или screenshot и выбрать «Capture area screenshots»;
    • В панели анализа сетевых запросов добавлен фильтр для просмотра запросов, специфичных для определённого Service worker;
    • Обновлена панель для оценки производительности: добавлен индикатор длительно выполняемых задач, на шкале времени реализована метка первой отрисовки;

Кроме нововведений и исправления ошибок в новой версии устранено 39 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 19 премии на сумму 26837 долларов США (четыре премии $3000, четыре премии $2000, одна премия $1337, четыре премии $1000, три премии $500). Размер 4 вознаграждений пока не определён.

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

Бывший исполнительный директор Mozilla считает, что Google саботировал Firefox в течение многих лет

Бывший высокопоставленный руководитель Mozilla обвинил Google в умышленном и систематическом саботаже Firefox в течение последнего десятилетия, чтобы ускорить процесс перехода на Chrome. В адрес Google не в первый раз звучат подобные обвинения, однако в первый раз утверждается наличие у Google скоординированного плана, предусматривающего внесение небольших ошибок на своих сайтах, которые будут проявляться только для пользователей Firefox.

По словам Джонатана Найтингела, бывшего генерального директора и вице-президента группы Firefox в Mozilla, до появления Chrome множество сотрудников Google были поклонниками Firefox, после же его выхода всё стало сложнее. У Google появился конкурирующий продукт, однако, они не разорвали связи и не разорвали «поисковую сделку» — использование Google в Firefox в качестве поиска по-умолчанию. «Мы на одной стороне. Мы хотим одного и того же» — подобным образом выражалось отношение Google к Mozilla.

В то же время, Найтингел, рассказывает, что: «Реклама Google Chrome начала появляться рядом с поисковой выдачей о Firefox. В Gmail и Google Docs начали возникать проблемы с производительностью и ошибки, специфичные только для Firefox. Демо-сайты ложно блокировали Firefox как несовместимый [браузер]».

Подобные ситуации Google всегда характеризовал как «случайности», извинялся и исправлял «ошибку» в течении какого-то времени, в то же время, речь могла идти о неделях. Несмотря на все слова и действия Google, инциденты происходили снова и снова и каждый раз Firefox терял пользователей. Джонатан Найтингел согласен, что не следует искать злой умысел там, где может иметь место некомпетентность, однако, верить в настолько вопиющую некомпетентность Google он не считает рациональным. По его мнению, Mozilla была обманута и Google пользовался каждой проблемой, которую создавал для Firefox для увеличения доли собственного браузера.

Стоит отметить, что Найтингел — не первый из Mozilla, кто выступил с подобными обвинениями. В июле 2018 года Mozilla Program Manager Крис Петерсон обвинил Google в намеренном снижении производительности YouTube в Firefox. Он показал, что загрузка страниц YouTube в 5 раз медленнее в Firefox и Edge, чем в Chrome, из-за того, что редизайн Polymer на YouTube основан на устаревшем Shadow DOMv0 API, реализованном только в Chrome. Исправить подобную ситуацию можно при помощи расширения YouTube Classic.

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

Выпуск серверной JavaScript-платформы Node.js 12.0

Доступен релиз Node.js 12.0.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 12.0 относится к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Обновления для LTS-веток выпускаются в течение 3 лет. Поддержка прошлой LTS-ветки Node.js 10.0 продлится до апреля 2021 года, а позапрошлой LTS-ветки 8.0 до января 2020 года. Поддержка промежуточной ветки Node.js 11.0 будет прекращена в июне 2019 года. Время жизни LTS-ветки 6.0 завершится 30 апреля.

Из улучшений в Node.js 12.0 отмечается (дополнено после публикации разработчиками развёрнутого обзора):

  • Обновление движка V8 до версии 7.4 с поддержкой асинхронных трассировок стека, увеличением производительности await, парсинга JavaScript и вызовов при несоответствии фактического и заявленного числа аргументов;
  • Поддержка TLS 1.3 в модуле tls и отключение по умолчанию TLS 1.0/1.1;
  • Усиление защиты и проверок размера выделяемой памяти в классе Buffer;
  • Усиление проверок аргументов в модулях child_process, fs и assert;
  • Удаление устаревших обработчиков в модуле crypto;
  • Перевод модуля http по умолчанию на парсер llhttp;
  • Перевод lib на использование стиля ECMAScript 6 при наследовании классов;
  • Экспериментальная поддержка модулей ECMAScript 6;
  • Изменение ограничений на размер кучи в JavaScript, которые теперь выбираются в зависимости от размера ОЗУ, а не задаются фиксировано;
  • Улучшение поддержки нативных модулей (на C/C++) в комбинации с Worker-потоками и N-API v4 для упрощения использования собственных потоков с асинхронными функциями на C/C++;
  • Упрощение использования API Worker Threads, для которого теперь не нужно выставлять флаг включения экспериментальной функции;
  • Добавление экспериментальной возможности генерации на лету диагностических отчётов, в которых отражаются события, помогающие диагностике таких проблем как крахи, падение производительности, утечки памяти, большая нагрузка на CPU, непредвиденный вывод ошибок и т.п.
  • Реализация команды для сохранения дампа с состоянием кучи для последующего анализа проблем с распределением памяти;
  • Ускорение запуска за счёт задействования встроенного кэша со скомпилированным кодом JavaScript-библиотек. Если раньше кэш заполнялся по мере работы, то теперь его содержимое для встроенных в Node.js библиотек генерируется на этапе сборки и привязывается к исполняемому файлу. Новая модель заполнения кэша позволила приблизительно на 30% сократить время запуска основного потока;
  • Повышены требования к платформе и версиям компилятора: для сборки теперь требуется как минимум GCC 6 и glibc 2.17 на платформах, отличных от macOS и Windows. Из совместимых дистрибутивов заявлены Enterprise Linux 7, Debian 8 и Ubuntu 14.04. При работе в Windows требуется как минимум Windows 7, 2008 R2 или 2012 R2 и Visual Studio 2017, а в macOS — macOS 10.10 «Yosemite» и Xcode 8.

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

Релиз nginx 1.16.0

После года разработки представлена новая стабильная ветка высокопроизводительного HTTP-сервера и многопротокольного прокси-сервера nginx 1.16.0, которая вобрала в себя изменения, накопленные в рамках основной ветки 1.15.x. В дальнейшем все изменения в стабильной ветке 1.16 будут связаны с устранением серьёзных ошибок и уязвимостей. В скором времени будет сформирована основная ветка nginx 1.17, в рамках которой будет продолжено развитие новых возможностей. Для обычных пользователей, у которых нет задачи обеспечить совместимость со сторонними модулями, рекомендуется использовать основную ветку, на базе которой раз в три месяца формируются выпуски коммерческого продукта Nginx Plus.

В соответствии с апрельским отчетом компании Netcraft nginx используется на 20.73% (год назад 21.02%, два года назад 19.55%) всех активных сайтов, что соответствует второму месту по популярности в данной категории (доля Apache соответствует 30.30%, Google — 8.01%, Microsoft IIS — 6.12%). При этом при рассмотрении всех сайтов nginx выбился в лидеры и занимает 27.52% рынка (год назад 23.11%), в то время как доля Apache соответствует 26.73%, Microsoft IIS — 25.05%, Google — 1.8%.

Среди миллиона самых посещаемых сайтов в мире доля nginx составляет 26.22% (год назад 23.76%, два года назад 25.64%). В настоящее время под управлением nginx работает около 397 млн сайтов (год назад 409 млн, но общее число сайтов уменьшилось на 325 млн за счёт исчезновения некоторых парковок доменов). По данным W3Techs nginx используется на 41.8% сайтах из миллиона самых посещаемых, в апреле прошлого года этот показатель составлял 38%, позапрошлого — 33.3%. Доля Apache за год снизилась с 46.7% до 43.6%, а доля Microsoft IIS с 9.9% до 8.6%. В России nginx используется на 81% самых посещаемых сайтов (год назад — 78.9%).

Наиболее заметные улучшения, добавленные в процессе формирования основной ветки 1.15.x:

  • Добавлена возможность использования переменных в директивах ‘ssl_certificate‘ и ‘ssl_certificate_key‘, что можно использовать для динамической загрузки SSL-сертификатов;
  • Добавлена возможность загрузки SSL-сертификатов и секретных ключей из переменных без использования промежуточных файлов;
  • В блоке «upstream» реализована новая директива «random«, при помощи которой можно организовать балансировку нагрузки со случайным выбором сервера для проброса соединения;
  • В модуле ngx_stream_ssl_preread реализована переменная $ssl_preread_protocol, которая определяет наибольшую версию протокола SSL/TLS, которую поддерживает клиент. Переменная позволяет создавать конфигурации для доступа с использованием различных протоколов с SSL и без SSL через один сетевой порт при проксировании трафика с использованием модулей http и stream. Например, для организации доступа по SSH и HTTPS через один порт 443 порт по умолчанию можно пробрасывать на SSH, но если определена версия SSL пробрасывать на HTTPS.
  • В модуль upstream добавлена новая переменная «$upstream_bytes_sent«, которая отображает число байт, переданных на сервер группы;
  • В модуль stream в рамках одного сеанса добавлена возможность обработки нескольких входящих UDP-датаграмм от клиента;
  • В модуль stream добавлена директива «proxy_requests«, задающее число датаграмм, полученных от клиента, по достижении которого удаляется привязка между клиентом и существующей UDP-сессией. После получения указанного количества датаграмм следующая датаграмма, полученная от того же клиента, начинает новую сессию;
  • В директиве listen появилась возможность указания диапазонов портов;
  • Добавлена директива «ssl_early_data» для включения режима 0-RTT при использовании TLSv1.3, который позволяет сохранить ранее согласованные параметры TLS-соединения и снизить до 2 число RTT при возобновлении ранее установленного соединения;
  • Для настройки keepalive для исходящих соединений (включения или выключения опции SO_KEEPALIVE для сокетов) добавлены новые директивы:
    • «proxy_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к проксируемому серверу;
    • «fastcgi_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к FastCGI-серверу;
    • «grpc_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к gRPC-серверу;
    • «memcached_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к серверу memcached;
    • «scgi_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к SCGI-серверу;
    • «uwsgi_socket_keepalive» — конфигурирует поведение «TCP keepalive» для исходящих соединений к uwsgi-серверу.
  • В директиву «limit_req» добавлен новый параметр «delay», задающий лимит, по достижении которого избыточные запросы задерживаются;
  • В блок «upstream» добавлены новые директивы «keepalive_timeout» и «keepalive_requests» для задания лимитов для Keepalive;
  • Объявлена устаревшей директива «ssl», на смену которой пришёл параметр «ssl» в директиве «listen». Определение отсутствующих SSL-сертификатов теперь производится на этапе тестирования конфигурации при использовании в настройках директивы «listen» с параметром «ssl»;
  • При использовании директивы reset_timedout_connection при истечении таймаута соединения теперь закрываются с применением кода 444;
  • SSL-ошибки «http request», «https proxy request», «unsupported protocol» и «version too low» теперь отображаются в логе с уровнем «info» вместо «crit»;
  • Добавлена поддержка метода poll на системах Windows при использовании Windows Vista и новее;
  • Обеспечена возможность использования TLSv1.3 при сборке с библиотекой BoringSSL, а не только с OpenSSL.

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

Разработка Scientific Linux 8 свёрнута в пользу CentOS

Лаборатория Fermilab, занимающаяся разработкой дистрибутива Scientific Linux, объявила о прекращении разработки новой ветки дистрибутива. В дальнейшем компьютерные системы Fermilab и других вовлечённых в проект лабораторий будут переведены на использование CentOS 8. Новая ветка Scientific Linux 8, основанная на пакетной базе Red Hat Enterprise Linux 8, сформирована не будет.

Вместо поддержания собственного дистрибутива разработчики из Fermilab намерены скооперироваться с CERN и другими научными организациями для усовершенствования CentOS и превращения его в более качественную платформу для вычислительных систем, используемых при организации экспериментов по физике высоких энергий. Переход на CentOS позволит унифицировать вычислительную платформу для научных применений, что упростит организацию работ в существующих и будущих совместных международных проектах, охватывающих различные лаборатории и институты.

Ресурсы, высвободившиеся в результате делегирования в проект CentOS операций по сопровождению дистрибутива и инфраструктуры, можно будет направить на усовершенствование компонентов, специфичных для научного применения. Переход с Scientific Linux на CentOS не должен вызвать проблем, так как ещё в рамках подготовки ветки Scientific Linux 6 специфичные для научного применения приложения и дополнительные драйверы были перенесены во внешние репозитории EPEL и elrepo.org. Как и в случае с CentOS отличия Scientific Linux от RHEL в основном массе сводились к ребрендингу и чистке привязок к службам Red Hat.

Сопровождение существующих веток Scientific Linux 6.x и 7.x будет продолжено без изменения, синхронно со штатным циклом поддержки RHEL 6.x и 7.x. Обновления для Scientific Linux 6.x продолжат выпускаться до 30 ноября 2020 года, а для ветки 7.x до 30 июня 2024 года.

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

Выпуск программ для обработки фотографий RawTherapee 5.6 и digiKam 6.1

Состоялся релиз программы RawTherapee 5.6, предоставляющей средства для редактирования фотографий и преобразования изображений в формате RAW. Программа поддерживает большое количество RAW-форматов файлов, в том числе, камер с датчиками Foveon- и X-Trans, а также может работать со стандартом Adobe DNG и с форматами JPEG, PNG и TIFF (до 32 бит на канал). Код проекта написан на языке C++ с использованием GTK+ и распространяется под лицензией GPLv3.

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

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

  • Добавлена поддержка режима псевдо-HiDPI, позволяющего масштабировать интерфейс для различных размеров экрана. Масштаб автоматически меняется в зависимости от DPI, размера шрифтов и параметров экрана. По умолчанию данный режим отключен (включается в настройках Preferences > General > Appearance);
  • Представлена новая вкладка «Избранное», на которую можно переместить часто используемые инструменты, которые хотелось бы всегда держать под рукой;
  • Добавлен профиль обработки «Unclipped», упрощающий сохранение изображения с оставлением данных во всём тональном диапазоне;
  • В настройках (Preferences > Performance) появилась возможность переопределения числа кусков изображения, обрабатываемых в отдельном потоке (tiles-per-thread, по умолчанию установлено значение 2);
  • Внесена большая порция оптимизаций производительности;
  • Отмечаются проблемы с прокруткой диалогов при использовании выпусков GTK+ c 3.24.2 по 3.24.6 (рекомендуется GTK+ 3.24.7+). Для работы также теперь требюуется librsvg 2.40+.

Дополнительно можно отметить релиз программы для управления коллекцией фотографий digiKam 6.1.0. В новом выпуске предложен новый интерфейс для разработки плагинов DPlugins, пришедший на смену ранее поддерживаемому интерфейсу KIPI и предоставляющий более широкие возможности по расширению функциональности различных частей digiKam, без привязки к digiKam Core API. Новый интерфейс не ограничен альбомным режимом (Main Album View) и может применяться для расширения функциональности режимов Showfoto, Image Editor и Light Table, а также отличается лучшей интеграцией со всеми основными инструментами digiKam. Помимо таких функций как импорт/экспорт и редактирование метаданных, API DPlugins может применяться для расширения функций редактирования палитр, трансформации, декорирования, наложения эффектов и создания обработчиков для пакетного выполнения работ.

В настоящее время на базе API DPlugins уже подготовлено 35 общих плагинов и 43 плагина для редактирования изображений, 38 плагинов для Batch Queue Manager. Общие плагины и плагины к редактору изображений могут включаться и отключаться на лету в процессе работы с приложением (для Batch Queue Manager динамическая загрузка плагинов пока недоступна). В дальнейшем планируется адаптировать DPlugins и для других частей digiKam, таких как обработчики загрузки изображений, операции с камерой, компоненты для работы с БД, код для распознавания лиц и т.п.

Другие изменения:

  • Добавлен новый плагин для копирования элементов в локальное хранилище, идущий на смену старому инструменту, основанному на фреймворке KIO и используемому для переноса изображений во внешние хранилища. В отличие от старого инструмента новый плагин использует только возможности Qt без привлечения специфичных для KDE фреймворков. В настоящее время поддерживается только перенос на локальные носители, но в ближайшее время ожидается поддержка обращения к внешнием хранилищам по FTP и SSH, а также интеграция с Batch Queue Manager;
  • Добавлен плагин для установки изображения в качестве обоев рабочего стола. В настоящее время поддерживается только управление обоями на рабочем столе KDE Plasma, но запланирована поддержка других десктоп-оркужений Linux, а также macOS и Windows;
  • Во встроенный медиапроигрыватель добавлены кнопки для изменения громкости и зацикливания текущего списка воспроизведения;
  • Добавлена возможность изменения свойств шрифта для комментариев, показываемых в режиме слайдшоу, а также поддержка скрытия комментариев нажатием F4;
  • В альбомном режиме просмотра эскизов (Album Icon-View) добавлена поддержка сортировки по времени изменения файла;
  • Обновлены сборки в формате AppImage, которые адаптированы для большего числа дистрибутивов Linux и переведены на Qt 5.11.3.

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

Началось тестирование сборок FreeBSD, переведённых на «ZFS on Linux»

Крис Мур (Kris Moore), создатель проекта PC-BSD и вице-президент компании iXsystems, объявил о начале тестирования установочных сборок FreeBSD 12-STABLE и FreeBSD 13-HEAD, в которых изначально поддерживаемая во FreeBSD реализация файловой системы ZFS заменена на наработки проекта «ZFS on Linux«. Благодаря инициативе по обеспечению переносимости кода «ZFS on Linux» на другие системы, для FreeBSD были подготовлены порты sysutils/zol (утилиты) и sysutils/zol-kmod (модуль ядра), которые теперь предлагается протестировать. В контексте файловой системы наиболее простым способом тестирования является предоставление готовых установочных образов, в которых изначальная реализация ZFS отключена и предустановлены порты с «ZFS on Linux». В качестве ФС для корневого раздела могут использоваться UFS и ZFS.

Напомним, что в декабре прошлого года разработчики FreeBSD выступили с инициативой перехода на реализацию ZFS от проекта «ZFS on Linux» (ZoL), вокруг которого последнее время сосредоточилась вся активность, связанная с развитием ZFS. В качестве причины миграции была упомянута стагнация кодовой базы ZFS от проекта Illumos (форк OpenSolaris), которая ранее использовалась в качестве основы для переноса связанных с ZFS изменений во FreeBSD. Основной вклад в поддержку кодовой базы ZFS в Illumos до недавнего времени вносила компания Delphix, развивающая операционную систему DelphixOS (форк Illumos). Год назад компания Delphix приняла решение о переходе на «ZFS on Linux», что привело к стагнации ZFS от проекта Illumos и сосредоточением всей связанной с разработкой активности в проекте «ZFS on Linux», который теперь рассматривается как основная реализация OpenZFS.

Разработчики FreeBSD решили последовать общему примеру и не пытаться удержаться за Illumos, так как эта реализация уже сильно отстаёт по функциональности и требует больших ресурсов для сопровождения кода и переноса изменений. «ZFS on Linux» теперь рассматривается как основной единый совместный проект по разработке ZFS. Поддержка FreeBSD будет интегрирована непосредственно в код «ZFS on Linux» и развиваться в основном репозитории данного проекта.

Некоторые возможности, которые доступны в порте «ZFS on Linux» для FreeBSD, но отсутствуют в реализации ZFS от Illumos:

  • Режим multihost (MMP, Multi Modifier Protection);
  • Расширенная система квот;
  • Шифрование наборов данных;
  • Раздельный выбор классов распределения блоков (allocation classes);
  • Использование векторных процессорных инструкций для ускорения реализация RAIDZ и вычисления контрольных сумм;
  • Улучшенный инструментарий командной строки;
  • Исправление многих ошибок, связанных с состоянием гонки и блокировками.

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