Семь новых атак на механизм спекулятивного выполнения в CPU

Группа исследователей безопасности, из которых трое (Daniel Gruss, Michael Schwarz, Moritz Lipp) участвовали в выявлении первых уязвимостей Meltdown и Spectre, опубликовали сведения о семи новых атаках, затрагивающих механизм спекулятивного выполнения инструкций современных процессоров. Возможность проведения атак протестирована на CPU Intel, AMD и ARM. Две новые атаки являются вариантами уязвимости Meltdown (Meltdown-PK для CPU Intel и Meltdown-BR для Intel и AMD), а оставшиеся пять представляют собой варианты уязвимости Spectre (применимы для Intel, AMD и ARM). Для всех семи атак подготовлены работающие прототипы эксплоитов.

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

Выявленные проблемы класса Meltdown (позволяют получить доступ к памяти приложений других пользователей, операционной системы и виртуальных окружений):

  • Meltdown-PK — атака проявляется только на CPU Intel и позволяет обойти ограничения, установленные при помощи ключей защиты памяти (PKU, Protection Keys for Userspace). В обычных условиях попытка доступа к области памяти с неверным ключом приводит к генерации исключения. В ходе спекулятивного выполнения инструкций выполняется фактический доступ к содержимому памяти и результат в случае несоответствия ключей отбрасывается, но прочитанное значение оседает в кэше;
  • Meltdown-BR — атака проявляется на CPU Intel и AMD и связана с утечкой данных после спекулятивного выполнения инструкций проверки границ, определённых в расширении MPX (Memory Protection eXtensions). При попытке доступа к области памяти, вне определённых при помощи MPX границ, возможно создание условий для спекулятивного обращения к памяти, результат которого будет отброшен после определения ошибки доступа, но осядет в кэше.
  • Исследователи попытались разработать ещё шесть Meltdown-подобных атак, манипулируя исключениями, возникающими при делении на ноль, некорректном выравнивании памяти, превышении лимита на число сегментов, нарушении защиты SMAP (Supervisor mode access prevention), выполнении некорректных объектных кодов и манипуляции с областями памяти, в которых запрещено выполнение кода. Данные попытки не увенчались успехом.

Выявленные проблемы класса Spectre:

  • Spectre-BTB-SA-IP, Spectre-BTB-SA-OP — два новых варианта атаки на буфер предсказания ветвления (BTF, Branch Target Buffer). Атаки создают условия для влияния на состояние блока предсказания переходов с целью совершения целенаправленного спекулятивного косвенного перехода, после которого считанный из памяти адрес перехода (искомые данные), остаётся в кэше. Атаки позволяют получить доступ к памяти приложений только в рамках привилегий одного уровня, например, для атаки на браузеры, sandbox-окружения и системы совместного изолированного выполнения кода. Проблемам подвержены CPU AMD, ARM и Intel.
  • Spectre-PHT-CA-OP, Spectre-PHT-CA-IP, Spectre-PHT-SA-OP — три варианта атаки с использованием таблицы с историей шаблонов переходов (PHT, Pattern History Table). Spectre-PHT-CA-OP позволяет получить доступ к произвольным областям памяти, а Spectre-PHT-CA-IP и Spectre-PHT-SA-OP ограничены доступом к памяти в рамках привилегий одного уровня. Проблемам подвержены CPU AMD, ARM и Intel.

По заявлению компании Intel все из упомянутых в отчёте уязвимостей могут быть блокированы с использованием уже применяемых для Spectre и Meltdown методов защиты (производители процессоров и операционных систем были заранее уведомлены о проблемах).

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

Релиз среды разработки приложений KDevelop 5.3

После почти года разработки представлен релиз интегрированной среды программирования KDevelop 5.3, полностью поддерживающей процесс разработки для KDE 5, в том числе с использованием Clang в качестве компилятора. Код проекта распространяется под лицензией GPL и использует библиотеки KDE Frameworks 5 и Qt 5.

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

  • В появившееся в выпуске 5.1 меню Analyzer, объединяющее плагины для анализа кода, добавлена поддержка проверки кода при помощи утилиты Clazy, использующего возможности статического анализа Clang, расширенные поддержкой семантики фреймворка Qt. Clazy предоставляет более 50 специфичных предупреждений, охватывающих различные ситуации, от ненужных операций выделения памяти до некорректного использования API. Новый плагин может применяться по умолчанию и подсвечивать проблемы в коде. В следующем релизе кроме уже поддерживаемых Cppcheck, Heaptrack и Clazy, ожидается поддержка инструментария Clang-Tidy;
  • Проведена работа по улучшению кодовой базы KDevelop. Проведена оптимизация различных частей кода и внесены исправления, выявленные при проверке кода в различных анализаторах. Продолжен перевод кода на использование новых стандартов C++ и Qt5;
  • Выполнена стабилизация и модернизация парсера для языка C++ и плагина семантического анализа, основанных на использовании Clang. Добавлена возможность переопределения пути к используемым компилятором clang заголовочным файлам. Устранены проблемы при автодополнении сигнатур шаблонов классов и функций. Обеспечен поиск определений для аргументов конструкторов и улучшено автодополнение аргументов;
  • Улучшена поддержка языка PHP: Парсер для языка PHP преобразован в отдельную библиотеку, которая может использоваться в других проектах. Добавлена поддержка генераторов и делегируемых генераторами операций. Улучшена поддержка пространств имён, системных констант (например, «__DIR__» и «__TRAIT__»), синтаксиса выражений, опциональных параметров функций и определения имён экземпляров классов. Обновлена и расширена документация по внутренностям PHP. Добавлена поддержка появившейся в PHP 7 контекстно зависимой лексики (например, может быть определена функция forEach и она не будет пересекаться с оператором foreach). Улучшено определение типов для свойств объектов и добавлена поддержка подсказок о типах объектов (typehint);
  • Улучшена поддержка языка Python. Добавлена возможность подстановки профилируемых переменных в окружение отладочного процесса. Улучшена поддержка выражений ‘with’;
  • Завершено портирование для ОС Haiku, для которой KDevelop теперь может быть собрана без дополнительных патчей.

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

Debian запрещает использование в пакетах секции со специфичными для вендоров патчами

Технический комитет проекта Debian принял решение запретить использование специфичных для вендоров наборов патчей в пакетах (секция vendor-specific). Наличие подобных патчей в пакете теперь будет приравниваться к наличию ошибки с необходимостью её устранения. После выхода Debian 10 «Buster» использование секции vendor-specific в пакетах будет запрещено.

Комитет пришёл к заключению, что пакеты, по разному ведущие себя в разных дистрибутивах, должны распространяться в отдельных исходных пакетах. Специфичные изменения также могут применяться с использованием существующих в dpkg условных операторов или применения патчей в процессе сборки, но не на уровне подстановки разных патчей на стадии распаковки исходного пакета. В качестве причины запрета также упоминается возникновение проблем с отладкой ошибок и несовместимость с используемыми проектом инструментами для обработки патчей, такими как dgit.

Секция vendor-specific позволяет определить альтернативный набор патчей, который будет применяться при распаковке исходного пакета в других дистрибутивах (напрмер, выполнение «dpkg-source -x foo.dscdpkg-source -x foo.dsc» в Debian и Ubuntu приведёт к применению разных наборов патчей к распакованным исходным текстам). Данная секция активно используется разработчиками Ubuntu для включения специфичных для Ubuntu исправлений, что позволяет поддерживать один общий пакет и для Debian и для Ubuntu. Подобный подход упрощает сопровождение производных от Debian дистрибутивов, так как не требует поддержки отдельных ответвлений пакетов с небольшими изменениями, которые можно распространять в основном Debian-пакете.

С другой стороны, на основе одного исходного пакета формируется несколько вариантов сборок, что приводит к путанице при выпуске обновлений и при разборе поступающих от пользователей уведомлений об ошибках. Обычно исходные пакеты в Debian поставляются в форме переносимых архивов (tar), разбирая подобный архив в другом дистрибутиве пользователь может полагать, что будет применён основной набор патчей, в то время как будет задействованы другие патчи из секции vendor-specific. Кроме того, в случае обновления только специфичных для вендоров патчей возникает замешательство, так как пакет не требует обновления в Debian, но при этом изменился.

Что касается отладки, она усложняется так как ошибка может проявляться только при активации дополнительных патчей, что требует определения какой вариант пакета приводит к проблеме и воссоздания условий его использования. Например, кто-то может попытаться использовать Debian для разбора ошибки в Ubuntu и загрузит для этого пакет из репозитория Ubuntu, но так как пакет общий с Debian он соберётся с другими патчами и поведение приложения будет отличаться от поведения в Ubuntu, но для разработчика это будет не очевидно.

Вместо секции vendor-specific для выделения специфичного для других дистрибутивов изменений предлагается использовать условные операторы, например, «#ifdef ubuntu». Подобные изменения видны в коде и при разборе изменений сразу позволяют понять логику применения предлагаемых исправлений. Кроме того, применение условных конструкций не создаёт проблем при использовании утилит, таких как dgit.

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

Ошибочный BGP-анонс на 74 минуты нарушил связность сетей Google и Cloudflare

Маршрутизация к нескольким миллионам IP-адресов Google вчера была нарушена в результате ошибочного BGP-анонса, отправленного небольшим провайдером MainOne из Нигерии (AS 37282). Данный провайдер анонсировал для своей автономной системы 212 префиксов подсетей Google, после чего новый маршрут подхватил крупнейший китайский провайдер China Telecom (AS 4809) и ретранслировал его для своих пиров, среди которых изменение приняли Транстелеком, NTT и многие другие транзитные провайдеры первого уровня (Tier 1).

В результате инцидента во многих регионах подсети Google оказались недоступны в течение 74 минут. Проблема затронула IP-адреса большинства сервисов и облачной сети Google, а также коснулось многих сторонних сайтов, использующих Google Cloud Platform, в том числе ‎Spotify. Инцидент также нарушил работоспособность внутренней сети Google, так как среди перенаправленных подсетей также фигурировали корпоративные IP-адреса и Google VPN.

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

Представители Google и Cloudflare считают, что BGP-анонс был вызван ошибкой, а не злым умыслом или вредоносной активностью. Разбор показал, что после завершившейся несколько недель назад конференции провайдеров Нигерии, была предпринята попытка модернизации инфраструктуры и усиления прямой связности нигерийских провайдеров. Google и Cloudflare являются единственными крупными сетями, подключившимися к точке обмена трафиком нигерийских провайдеров (IXPN). В процессе настройки прямого подключения к данной точке обмена трафиком мелким провайдером MainOne были допущены ошибки и некорректные данные о маршрутизации утекли в China Telecom, который, в свою очередь, анонсировал их своим пирам.

Подобные инциденты, вызванные ошибками персонала, возникают в глобальной Сети регулярно и будут продолжаться, пока не будут внедрены методы авторизации BGP-анонсов. В вышеописанном инциденте часть вины лежит на провайдере China Telecom, который не использует в своей инфраструктуре какую-либо фильтрацию маршрутов и доверяет всем BGP-анонсам. На днях был опубликован отчёт, в котором озвучены сведения о прошлых перенаправлениях трафика с использованием BGP, наблюдаемых в China Telecom с 2014 года. В том числе, один из похожих инцидентов, произошедший в 2015 году, подтвердила компания Oracle.

Тем временем, компанией Cisco в Иране зафиксирована попытка перехвата трафика Telegram и Instagram с использованием BGP. По данным исследователей попытки перехвата наблюдаются с 2017 года и направлены против приблизительно 40 млн иранских пользователей, которые продолжают пользоваться мессенджером Telegram, несмотря на его запрет в Иране. В ходе атаки для получения контроля за учётными записями пользователям выводились фиктивные страницы входа. Также выявлены попытки распространения вредоносного клона приложения Telegram, размещаемого в официальных репозиториях, таких как Google Play.

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

В Chrome развивается API для создания полноценных пользовательских приложений

Компания Google представила инициативу по добавлению в браузер Chrome программных интерфейсов, позволяющих создавать web-приложения, близкие по своим возможностям к обычным самодостаточным пользовательским программам. Указанные API дадут возможность использовать браузер в качестве напоминающей Cordova или Electron платформы для разработки программ, предоставляющей доступ к расширенным возможностям операционной системы и оборудования.

Основной целью инициативы является стирание различий в возможностях web-приложений и обычных программ. Разработка необходимых для достижения данной цели API будет полностью открытой и прозрачной с последующим продвижением API в W3C в качестве web-стандартов. В процессе разработки API будут учитываться отзывы разработчиков и производителей других браузеров.

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

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

Некоторые другие API, находящиеся в разработке:

  • Scheduled Notification (Event Alarms) — чем-то напоминает сервис Cron и позволяет выполнять произвольные работы в определённый момент в будущем;
  • Web Share Target — организация обмена данными между пользователями;
  • Async Сookies — асинхронные операции с хранилищем Cookie;
  • Wake Lock — отключение автоблокировки экрана;
  • WebHID — низкоуровневый доступ к HID-устройствам (Human interface device);
  • User Idle Detection — определение времени неактивности пользователя и факта блокировки экрана;
  • Local Font Access — доступ к локальным шрифтам.

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

HTTP поверх протокола QUIC будет стандартизирован как HTTP/3

Дэниел Cтенберг (Daniel Stenberg), автор утилиты cURL, входящий в рабочие группы IETF, развивающие протоколы HTTP и QUIC, сообщил об утверждении решения по продвижению протокола HTTP-over-QUIC в качестве будущего стандарта HTTP/3. Выбор имени для HTTP-over-QUIC вызвал большую дискуссию. Вначале рассматривалась возможность использования для стандартизации связки HTTP-over-QUIC имён HQ, QUIC/2, HTTP/QUIC и HTTP/2-encrypted-over-UDP, но в конце концов разработчики согласились с предложением использовать имя HTTP/3, которое позволит сохранить привычную семантику.

Стандартизация QUIC в IETF разделена на два уровня: определение транспортного протокола QUIC и надстройки для обеспечения работы HTTP поверх QUIC. Связанные с HTTP части отныне будут рассматриваться как HTTP/3. Для транспортного протокола ситуация пока не однозначна, так как развиваемый в IETF протокол и вариант протокола от Google отличаются в некоторых деталях, неформально версию от IETF в сообществе именуют iQUIC, а вариант Google — gQUIC. После завершения стандартизации и синхронизации реализации компанией Google ожидается оставление за протоколом имени QUIC.

Напомним, что протокол QUIC (Quick UDP Internet Connections) c 2013 года развивается компанией Google в качестве альтернативы связке TCP+TLS для Web, решающей проблемы с большим временем установки и согласования соединений в TCP и устраняющей задержки при потере пакетов в процессе передачи данных. QUIC представляет собой надстройку над протоколом UDP, поддерживающую мультиплексирование нескольких соединений и обеспечивающую методы шифрования, эквивалентные TLS/SSL. Рассматриваемый протокол уже интегрирован в серверную инфраструктуру Google, входит в состав Chrome, запланирован для включения в Firefox и активно применяется для обслуживания запросов клиентов на серверах Google.

Основные особенности QUIC:

  • Высокая безопасность, аналогичная TLS (по сути QUIC предоставляет возможность использования TLS поверх UDP);
  • Контроль за целостностью потока, предотвращающий потерю пакетов;
  • Возможность мгновенно установить соединение (0-RTT, примерно в 75% случаях данные можно передавать сразу после отправки пакета установки соединения) и обеспечить минимальные задержки между отправкой запроса и получением ответа (RTT, Round Trip Time);
  • Не использование при повторной передаче пакета того же номера последовательности, что позволяет избежать двусмысленности при определении полученных пакетов и избавиться от таймаутов;
  • Потеря пакета влияет на доставку только связанного с ним потока и не останавливает доставку данных в параллельно передаваемых через текущее соединение потоках;
  • Средства коррекции ошибок, минимизирующие задержки из-за повторной передачи потерянных пакетов. Использование специальных кодов коррекции ошибок на уровне пакета для сокращения ситуаций, требующих повторной передачи данных потерянного пакета.
  • Криптографические границы блоков выравнены с границами пакетов QUIC, что уменьшает влияние потерь пакетов на декодирование содержимого следующих пакетов;
  • Отсутствие проблем с блокировкой очереди TCP;
  • Поддержка идентификатора соединения, позволяющего сократить время на установку повторного соединения для мобильных клиентов;
  • Возможность подключения расширенных механизмов контроля перегрузки соединения;
  • Использование техники прогнозирования пропускной способности в каждом направлении для обеспечения оптимальной интенсивности отправки пакетов, предотвращая скатывание в состояние перегрузки, при которой наблюдается потеря пакетов;
  • Заметный прирост производительности и пропускной способности, по сравнению с TCP. Для видеосервисов, таких как YouTube, применение QUIC показало сокращение операций повторной буферизации при просмотре видео на 30%.

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

Выпуск Debian 9.6

Доступно шестое корректирующее обновление дистрибутива Debian 9, в которое включены накопившиеся обновления пакетов и устранены недоработки в инсталляторе. Выпуск включает 88 обновлений с устранением проблем со стабильностью и 92 обновления с устранением уязвимостей.

Из изменений в Debian 9.6 можно отметить удаление 46 пакетов, из которых большинство являются дополнениями к Firefox, написанными с использованием технологии XUL и удалёнными из-за несовместимости с веткой Firеfox 60, в которой возможна работа только дополнений на базе технологии WebExtension. Из удалённых пакетов также можно отметить gitlab и knot-resolver, в качестве причины удаления которых указаны проблемы с безопасностью.

Другие заметные изменения:

  • Обновлены до свежих стабильных версий пакеты clamav, dpdk, libclamunrar, spamassassin;
  • Firefox 52 ESR заменён на Firefox 60 ESR, а Thunderbird 52 на Thunderbird 60. Обновлены многие дополнения к Firefox и Thunderbird, которые заменены на варианты на базе WebExtension;
  • В инструментарии для создания виртуальных окружений Vagrant добавлена поддержка VirtualBox 5.2;
  • В FUSE в белый список разрешённых для монтирования ФС включены autofs и FAT;
  • В libseccomp добавлены присутствующие в ядре Linux 4.9 системные вызовы preadv2, pwritev2, pkey_mprotect, pkey_alloc и pkey_free. Добавлена поддержка statx;
  • Включена сборка компилятора rustc для архитектур arm64, armel, armhf, i386, ppc64el, s390x.

Для загрузки в ближайшие часы будут подготовлены установочные сборки, а также live iso-hybrid c Debian 9.6. Системы, установленные ранее и поддерживаемые в актуальном состоянии, получают обновления, присутствующие в Debian 9.6, через штатную систему установки обновлений. Включенные в новые выпуски Debian исправления проблем безопасности доступны пользователям по мере выхода обновлений через сервис security.debian.org.

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

Релиз web-браузера GNU IceCat 60.3.0 с поддержкой Tor

Проект GNU представил новую версию web-браузера IceCat 60.3.0. Браузер построен на кодовой базе Firefox 60.3.0 ESR, приведённой в соответствие с требованиями к полностью свободному ПО. В частности, удалены несвободные компоненты, заменены элементы оформления, прекращено использование зарегистрированных торговых марок, отключен поиск несвободных плагинов и дополнений, интегрированы дополнения, направленные на усиления приватности.

В базовую поставку входят дополнения LibreJS для блокирования обработки несвободного JavaScript-кода, HTTPS Everywhere для использования шифрования трафика на всех сайтах где это возможно, HTML5 Video Everywhere для замены Flash-плеера на аналог на основе тега video и реализации приватного режима просмотра в котором загрузка ресурсов разрешена только с текущего сайта. В качестве поисковой системы по умолчанию используется DuckDuckGO, с отправкой запросов по HTTPS и без использования JavaScript. Присутствует возможность отключения обработки JavaScript и сторонних Cookie.

По умолчанию заполняется HTTP-заголовок DoNotTrack, а в HTTP-заголовке Referer всегда передаётся имя хоста, к которому адресован запрос. Отключены следующие возможности: проверка безопасности открываемых сайтов в сервисах Google, Encrypted Media Extensions (EME), сбор телеметрии, поддержка Flash, уточнение поиска (search suggestions), API для определения местоположения, GeckoMediaPlugins (GMP), Pocket и проверка дополнений по цифровым подписям. WebRTC модифицирован для блокирования утечки внутреннего IP при работе через Tor.

Основные новшества GNU IceCat 60.3.0:

  • В состав включено дополнение для интеграции с анонимной сетью Tor. Для работы дополнения и организации работы через Tor в операционной системе дополнительно требуется запуск сервиса «tor»;
  • Прекращена поставка блокировщика рекламы Spyblock (форк Adblock Plus), вместо которого в состав включено дополнение для блокирования по умолчанию любых внешних запросов, осуществляемых с доменов отличных от текущего сайта (блокируются счётчики, реклама, виджеты социальных сетей и прочие сторонние блоки). Дополнение предоставляет простой интерфейс для поддержания белого списка, в которых можно добавить не подлежащие блокировке ресурсы в привязке к определённым сайтам;
  • Переход на кодовую базу Firefox 60.3.0 ESR (прошлый выпуск основывался на ветке Firefox 52);
  • Дополнение GNU LibreJS, позволяющее отказаться от выполнения несвободного JavaScript-кода, обновлено до ветки 7.x, в которой осуществлён переход на использование технологии WebExtensions. Значительно увеличена надёжность и производительность дополнения;
  • Предоставлено несколько сопутствующих LibreJS дополнений, позволяющих организовать работу с сервисами USPS, RSF.org, SumOfUs.org, pay.gov, McDonald’s, goteo.org и Google Docs при отключении несвободного JavaScript-кода;
  • Изменены некоторые настройки по умолчанию для блокирования сетевых запросов, которые явно не связаны с запросами пользователя. Например. отключена загрузка информационных лент, обновлений, чёрных списков и других подобных данных;
  • Новая стартовая страница, предоставляющая обзор по предоставляемым опциям для обеспечения приватности и свободы.

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

Выпуск графического редактора GIMP 2.10.8

Опубликован выпуск графического редактора GIMP 2.10.8, в котором продолжено оттачивание функциональности и повышение стабильности ветки 2.10.

Кроме исправления ошибок в GIMP 2.10.8 представлены следующие улучшения:

  • Обеспечено динамическое определение размера участка проекции изображений, который теперь выбирается в зависимости от скорости обработки, что позволяет увеличить отзывчивость GIMP на маломощных системах и ускорить работу на более производительном оборудовании;
  • Во многие инструменты добавлена возможность ведения логов с отражением метрик производительности;
  • Устранены разнообразные ошибки в фильтре вейвлетного разложения (Wavelet Decompose), функции вертикального размещения текста, инструментах выделения областей. В Windows улучшено определение наличия программы для обработки raw-изображений RawTherapee;
  • В диалоге сохранения файлов реализован вывод предупреждения об использовании в сохраняемом XCF опций, нарушающих обратную совместимость и не позволяющих прочитать файл XCF в старых выпусках GIMP;
  • В инструмент формирования градиентов добавлена поддержка многоцветной градиентной заливки с жёсткими границами (без плавного перехода между цветами). Новый вид заливки доступен при выборе режима смешивания градиентов «Step»;
  • Во всех инструментах трансформации для применения изменений в процессе сохранения или экспорта изображений теперь не требуется нажимать клвишу Enter для подтверждения изменения;
  • Добавлена начальная поддержка цветового пространства CIE xyY, которое может оказаться полезным при реализации таких возможностей, как эффект Эбни (оптическая иллюзия, из-за которой при резком освещении большого участка кажется, что освещается вначале центр, а потом края). Компоненты цвета CIE xyY теперь можно просмотреть в информационном окне, утилите выбора цвета (Color Picker) и в панели «Sample Points». Большая часть кода, связанного с поддержкой CIE xyY, добавлена в библиотеку babl;
  • В библиотеке babl устранена проблема с сохранением цветов прозрачных пикселей при преобразованиях со смешанным альфа-каналом. Как следствие изначальный цвет полностью прозрачных пикселей теперь учитывается при выполнении всех операций трансформации и деформации, что позволяет повысить надёжность выполнения отката изменений и манипуляций с альфа-каналом;
  • В библиотеку GEGL добавлено новое API для буферных итераторов и реализована команда GEGL_TILE_COPY для более эффективного копирования и дублирования буферов. Продолжается работа по обеспечению мультиспектральной/гиперспектральный обработки в GEGL, которая необходима для улучшения поддержки CMYK;
  • Улучшена работа GIMP в окружении macOS, решены некоторые специфичные для macOS проблемы, такие как появление артефактов при масштабировании, некорректный выбор фокуса для окон в плагинах и неработоспособность планшетов, отличных от Wacom.

В следующем выпуске ожидается реализация фильтра ACES RRT (Reference Rendering Transform), который может оказаться полезным при обработке отрендеренных сцен. Ожидается значительное улучшение поддержки цветовых пространств, например, можно будет взять изображение в цветовом пространстве ProPhotoRGB, обработать его в пространстве CIE LAB и получить результирующее изображение опять в пространстве ProPhotoRGB, с корректным маппингом всех цветовых данных в оригинальное цветовое пространство. В состав также планируется включить фильтр умной раскраски, основанный на реализации аналогичного фильтра в GMIC.

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

Опубликован стандарт параллельного программирования OpenMP 5.0

После трёх лет разработки опубликован набор спецификаций OpenMP 5.0 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования для языков Си, Си++ и Фортран на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). Начальная реализация OpenMP 5.0 уже включена в кодовую базу GCC, на основе которой развивается ветка GCC 9. Отдельные элементы OpenMP 5.0 также будут включены в следующий выпуск LLVM/Clang 8.0.

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

  • Полная поддержка специализированных аппаратных ускорителей. В том числе реализованы:
    • Механизмы, использующие унифицированную разделяемую память между хост-системой и устройствами сопроцессора;
    • Возможность использования специфичных для определённых устройств реализаций функций;
    • Улучшенное управление неявным отображением данных (data mapping);
    • Возможность смены устройств-ускорителей не прерывая работу;
    • Поддержка обратного выделения вычислительных ресурсов ускорителям (reverse offload);
    • Поддержка неявной генерации функций;
    • Возможность упрощённого копирования объектно-ориентированных структур данных.
  • Два новых программных интерфейса для разработки внешних инструментов отладки и анализа производительности;
  • Поддержка последних версий стандартов языков C, C++ и Fortran: C11, C++17 и Fortran 2008;
  • Поддержка описательных конструкций циклов (descriptive loop) , позволяющих компилятору оптимизировать операции в цикле, не привязываясь к определённой реализации. Новые конструкции циклов предоставляют компилятору больше свободы в выборе оптимальной реализации для специфичной целевой системы;
  • Многоуровневые системы памяти. Предоставлены механизмы распределения памяти, позволяющие размещать данные в различных типах памяти, например, отличающихся пропускной способностью. Новые возможности управления памятью также упрощают работу с современными высокопроизводительными NUMA-системами;
  • Улучшена переносимость. Директива «declare variant» и метадирективы (блок «metadirective», дающий возможность определить несколько вариантов директив, выбираемых в зависимости от контекста) позволяют разработчикам повысить эффективность портирования, адаптируя прагмы OpenMP и пользовательский код на стадии компиляции.

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

Samsung опубликовал Linux-окружение для смартфонов и планшетов с адаптером DeX

Компания Samsung объявила о начале тестирования Linux-окружения, которое можно использовать для формирования полноценного рабочего стола, при подключении смартфона к стационарному монитору, клавиатуре и мыши при помощи адаптера DeX или при подключении клавиатуры и мыши к планшету. Окружение основано на Ubuntu и подготовлено совместно c компанией Canonical. Технология DeX поддерживается для устройств Galaxy S8/S8+, Note8, S9/S9+, Note9 и Tab S4.

В качестве основного применения Linux-окружения рассматривается предоставление переносимой среды для разработчиков приложений — пользователь получает возможность установить на смартфон полноценное окружение для разработки, доступное в любой момент и в любом месте. Находясь в дороге разработчик сможет начать решать поставленную задачу с мобильного устройства, а затем продолжить работу, подключив смартфон к большому монитору. Тем не менее, окружение может оказаться полезным и для других категорий пользователей, так как для установки доступны любые Linux-приложения, работающие в Ubuntu и собранные для архитектуры ARM64.

Окружение выполняется в контейнере, запущенном поверх штатного ядра Linux платформы Android. Для загрузки Linux-окружения требуется регистрация на сайте Samsung. Поддерживается установка только авторизированных образов, загруженных через сервис Linux on DeX. При этом не исключается возможность установки и собственных сборок, но их корректная работа не гарантируется.

Предлагаемая для тестирования сборка основана на Ubuntu 16.04 LTS и пока адаптирована только для использования на устройствах Note9 и Tab S4. Для работы Linux-окружения рекомендуется наличие 8GB свободного места в хранилище и использование устройств с 4GB ОЗУ. Графическое окружение работоспособно только при наличии адаптера DeX, предоставляющем порты USB-C, USB 2.0, Ethernet и HDMI 2.0. Окружение может быть открыто непосредственно на экране смартфона, но будет ограничено консольным режимом. На планшетах поддерживается запуск графического окружения без подключения внешнего монитора.

Следует отметить, что для пользователей Android-устройств уже поставляется несколько похожих проектов, позволяющих запустить рабочий стол при подключении к смартфону монитора по HDMI или при помощи технологий, подобных Miracast и WiFi Display: Maru OS, Debian noroot, GNURoot Debian, Complete Linux Installer и Linux Deploy.

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

GitHub преодолел рубеж в 100 млн репозиториев

GitHub сообщил о преодолении рубежа в 100 млн репозиториев. Для сравнения год назад на GitHub было размещено 67 млн репозиториев, а два года назад 19.4 млн. В настоящее время в среднем каждую секунду создаётся 1.6 новых репозиториев. Число пользователей GitHub достигло 31 млн (год назад было 24 млн), а организаций — 2.1 млн (год назад — 1.5 млн). За год было совершено около 1.1 миллиарда коммитов и 67 млн pull-запросов. Общее число pull-запросов за всю историю существования GitHub достигло значения в 200 млн.

Репозитрием с самым большим числом участников признан Visual Studio Code, развиваемый компанией Microsoft. Данный репозиторий насчитывает 19 тысяч участников, что почти в два раза больше, чем у далее идущих в рейтинге репозиториев React-native (10K), Tensorflow (9.3K) и Angular-cli (8.8K).

Рейтинг наиболее быстро развивающихся репозиторев возглавляют azure-docs (4.7), pytorch (2.8x), godot (2.2x), nuxt.js (2.1x) и go-etherium (2x).

Наиболее популярные темы репозиториев: React, Android, Node.js, Docker, iOS, Linux, Angular, машинное обучение, Electron, API.

Самым популярным языком на GitHub остаётся JavaScript. Второе место занимает Java, третье Python, далее следуют PHP, C++, C#, TypeScript (за год поднялся на 3 позиции), Shell, C (за год опустился на 2 позиции) и Ruby (за год опустился на 1 позицию, а за 3 года на 5 позиций). Среди наиболее динамично набирающих популярность языков отмечены: Kotlin (2.6X), HCL (2.2X), TypeScript (1.9X), PowerShell (1.7X), Rust (1.7X), CMake (1.6X), Go (1.5X), Python (1.5X) и Groovy (1.4X).

Рейтинг компаний и организаций возглавляет Microsoft, 7700 сотрудников которой участвует в разработке открытых проектов на GitHub. Далее следуют Google (5500 сотрудников), Red Hat (3300), UC Berkeley (2700), Intel (2200), Univ. of Washington (1800), Facebook (1700), MIT (1700), Univ. of Michigan (1600), Stanford (1600).

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