В Chrome появилось автоподключение к учётной записи. Чистка Chromium от привязок к Google

Мэттью Грин (Matthew Green), инициатор аудита OpenVPN и TrueCrypt, один из создателей Zerocoin и участник групп, обнаруживших уязвимости RSA BSafe, Dual_EC_DRBG, Speedpass и EZpass, попытался привлечь внимание общественности к возможным проблемам с приватностью после внедрение в Chrome нового алгоритма подключения к учётной записи. Начиная с Chrome 69 компания Google унифицировала использование учётной записи в системе синхронизации браузера и на сайтах Google. Например, если пользователь подключился к Gmail или YouTube, то Chrome автоматически привяжется к этой учётной записи, хочет того пользователь или нет.

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

В настоящее время автоматический вход по умолчанию не активирует синхронизацию, но никто не может гарантировать, что в будущих версиях настройки не изменятся и информационные базы браузера не начнут зеркалироваться на серверах Google. Более того, в числе изменений интерфейса Chrome 69 предложен новый интерфейс настройки синхронизации, который ничего не поясняет, создаёт впечатление что данные уже синхронизированы и при клике на кнопке в надежде узнать детали инициирует отправку браузерных БД на серверы Google. По мнению Мэттью Грина подобные изменения интерфейса можно отнести к категории умышленных уловок (dark pattern) для введения пользователя в заблуждение и побуждения к выполнению ошибочных действий.

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

Код привязки учётных записей также добавлен в Chromium, но в его кодовой базе данная возможность отключена по умолчанию (в настройках не активна опция «chrome://flags#account-consistency», которую также можно использовать для отключения привязки учётных записей в Chrome).

Для избавления кодовой базы Chromium от кода для интеграции с сервисами Google сообществом развивается проект Ungoogled Chromium, в котором также реализованы некоторые изменения, направленные на усиление приватности, прозрачности обработки информации и контроля за своими данными. Готовые сборки Ungoogled Chromium формируются для Linux (Debian, Ubuntu), macOS и Windows.

Основные изменения в Ungoogled Chromium:

  • Упоминание всех доменов в исходных текстах заменено на несуществующий домен (добавлено окончание qjz9zk);
  • Из исходных текстов удалены все бинарные файлы;
  • Отключены все функции, привязанные к сервисам Google, такие как Google Host Detector, Google URL Tracker, Google Cloud Messaging и Google Hotwording;
  • В качестве поискового движка по умолчанию выбрана заглушка «No Search» (поиск из адресной строки отключен);
  • Отключено автоматическое форматирование URL в адресной строке (не скрывается «http://», не убирается «www.», отображаются все параметры запроса);
  • В меню «More tools» добавлена кнопка для чистки кэша параметров аутентификации по запросу пользователя;
  • Все всплывающие окна принудительно открываются только как новые вкладки;
  • Отключен режим «Safe Browsing» так как загружает чёрные списки с серверов Google);
  • Отключен детектор проброса на внутренние адреса, используемый для определения web-интерфейсов для подключения к беспроводной сети (отключен так как генерирует внешние DNS-запросы);
  • Прекращена поддержка URL-схемы «trk:» (применяется для формирования запросов к сервисам Google);
  • Запрещено использование пинга IPv6-адресов для определения доступности IPv6;
  • Добавлены новые опции адресной строки и настройки chrome://flags:
    • «—disable-beforeunload» — отключение JavaScript-диалогов, выводимых при вызове обработчика закрытия страницы (beforeunload);
    • «—extension-mime-request-handling» — изменение метода обработки MIME-типов: download-as-regular-file — всегда сохранять в файл; install-always — запрашивать обработчик из дополнений;
    • «—fingerprinting-canvas-measuretext-noise», «—fingerprinting-client-rects-noise» — добавляют в Canvas::measureText(), getClientRects() и getBoundingClientRect() случайную погрешность в интервале от -0.0003% до 0.0003%;
    • «—fingerprinting-canvas-image-data-noise» — вносит незначительные случайные изменения во все Canvas-изображения, размером больше 10 пикселей, для противостояния скрытой идентификации по особенностям отрисовки;
    • «—max-connections-per-host» — задаёт лимит на число одновременных соединений с хостом;
    • «—set-ipv6-probe-false» — отключает проверку IPv6.

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

Выпуск свободных видеоредакторов OpenShot 2.4.3 и Shotcut 18.09

Подготовлен выпуск свободной системы нелинейного видеомонтажа OpenShot 2.4.3. Код проекта поставляется под лицензией GPLv3: интерфейс написан на Python и PyQt5, ядро обработки видео (libopenshot) написано на C++ и использует возможности пакета FFmpeg, интерактивная шкала времени написана с использованием HTML5, JavaScript и AngularJS. Для пользователей Ubuntu пакеты с последним выпуском OpenShot доступны через специально подготовленный PPA-репозиторий, для остальных дистрибутивов сформирована самодостаточная сборка в формате AppImage. Имеются сборки для Windows и macOS.

Редактор отличается удобным и интуитивно понятным пользовательским интерфейсом, позволяющим редактировать видео даже начинающим пользователям. Программа поддерживает несколько десятков визуальных эффектов, дает возможность работы с многотрековыми монтажными шкалами с возможностью перемещения мышью элементов между ними, позволяет масштабировать, кадрировать, осуществлять слияние блоков видео, обеспечивать плавное перетекание из одного ролика в другой, производить наложение полупрозрачных областей и т.п. Имеется возможность перекодирования видео с предварительным просмотром изменений на лету. Благодаря задействованию библиотек проекта FFmpeg OpenShot поддерживает огромное количество форматов видео, звука и изображений (включая полную поддержку SVG).

В новой версии:

  • Инструменты наложения маски и переходные эффекты теперь могут изменяться в любой момент времени и использовать изображения и видео. В качестве основы для маски к эффектам может быть использовано представление каждого кадра в оттенках серого. Для анимированных масок реализовано новое свойство «reader», применяемое в эффектах для изменения изображения и видео;
  • Улучшено разделение операций по разным потокам, что позволяет увеличить производительность на многоядерных системах и защититься от крахов при сбое наложения эффектов, включая применение масок и переходных эффектов. Для увеличения надёжности обеспечено отключение распараллеливания операций во время выполнения экспорта;
  • Добавлена кнопка сохранения кадра для быстрого сохранения результата предпросмотра текущего кадра;
  • Представлена новая инфраструктура для поддержания перевода интерфейса на разные языки;
  • Добавлены преднастройки для Instagram и Twitter;
  • Добавлены метаданные в формате AppStream;
  • Добавлена поддержка FFmpeg 3 и 4.

Кроме того, доступен релиз видеоредактора Shotcut 18.08, который развивается автором проекта MLT и использует данный фреймворк для организации редактирования видео. Поддержка форматов видео и звука реализована через FFmpeg. Возможно использование плагинов с реализацией видео и аудио эффектов, совместимых с Frei0r и LADSPA. Из особенностей Shotcut можно отметить возможность многотрекового редактирования с компоновкой видео из фрагментов в различных исходных форматах, без необходимости их предварительного импортирования или перекодирования. Имеются встроенные средства для создания скринкастов, обработки изображения с web-камеры и приёма потокового видео. Для построения интерфейса применяется Qt5. Код написан на C++ и распространяется под лицензией GPLv3.

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

  • В диалог «Open Other» добавлена поддержка текстовых клипов, созданных при помощи фильтра Text;
  • Улучшены возможности для привязки к позициям на шкале времени;
  • Добавлены преднастройки для экспорта в форматах WebM VP8 и VP9 с прозрачностью.
  • В меню настройки свойств добавлена операция для извлечения субклипа для аудио и видео клипов;
  • Добавлен новый видеофильтр «Timer»;
  • В фильтры вращения и масштабирования добавлена поддержка отрицательного значения показателя вращения;
  • В фильтр «Размер и позиция» добавлены режимы тряски содержимого (Shake 1 Second — Scaled и Shake 1 Second — Unscaled);
  • На шкалу времени добавлен режим «Ripple» для перемещения клипов со сдвигом всего трека. При включении данного режима при перемещения клипа вправо, автоматически вправо сдвигаются все остальные клипы, вместо применения перехода.

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

Зафиксирована массовая атака на сайты с необновлённым движком WordPress

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

В ходе атаки в JavaScript-файлы c разрешением .js, в php-файлы с темами и плагинами WordPress, а также в записи из таблицы wp_posts в БД WordPress осуществляется подстановка вредоносной вставки. Код подставляется как в открытом виде, так и форме вызова «eval(String.fromCharCode(….))» с хаотичным набором цифр. При выполнении данного блока на выходе выдаётся код загрузки скрипта (ad.js, main.js, stat.js или mp3.js) с сайтов ads.voipnewswire.net, examhome.net, cdn.allyouwant.online, uustoughtonma.org, ejyoklygase.tk или mp3menu.org. Всем пользователям WordPress рекомендуется убедиться, что движок сайта и установленные плагины обновлены до самой свежей версии.

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

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

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

В Firefox добавлено системное дополнение, передающее данные о выключении телеметрии

Mozilla начала распространение системного дополнения «Telemetry coverage«, которое обеспечивает сбор данных о числе пользователей, отключивших в настройках отправку телеметрии. Дополнение активировано примерно у 1% пользователей Firefox и отправляет сведения даже при отключении в настройках отправки статистики и отказе от участия в исследованиях Mozilla. Дополнение активируется без спроса пользователя и без предварительного публичного информирования сообщества о проведении эксперимента (месяц назад упоминалась лишь необходимость провести подобное измерение).

Сведения отправляются на хост https://telemetry-coverage.mozilla.org и включают информацию о версии браузера, операционной системе и состоянии настроек отправки телеметрии. В составе блока данных не передаётся UUID-идентификатор системы пользователя, но в качестве идентификатора может использоваться IP-адрес с которого отправляются данные.

Для отключения дополнения в about:config предусмотрена настройка «toolkit.telemetry.coverage.opt-out», которую следует создать вручную (при поиске не показывается) и установить значение «true». Тем не менее, настройка имеет смысл только как превентивная мера отключения, так как данные передаются сразу после автоматической установки дополнения, а предотвратить такую установку проблематично. Узнать о появлении нового системного дополнения можно на странице «about:support» в разделе «Firefox Features». Посмотреть состояние отправки телеметрии можно на странице «about:telemetry».

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

Доступен дисплейный сервер Mir 1.0

Представлен релиз дисплейного сервера Mir 1.0, разработка которого продолжается компанией Canonical, несмотря на отказ от развития оболочки Unity и редакции Ubuntu для смартфонов. Mir остаётся востребован в проектах Canonical и теперь позиционируется как решение для встраиваемых устройств и интернета вещей (IoT). Пакеты для установки подготовлены для Ubuntu 16.04/18.04/18.10 (PPA) и Fedora 27/28/29.

В новой версии основное внимание уделено стабилизации средств для запуска Wayland-приложений в окружении Mir, используя Mir в качестве композитного сервера для Wayland. Любые приложения, использующие Wayland (например, собранные с GTK3/4, Qt5 или SDL2), будут работать и в Mir. Стабилизирована поддержка Wayland-расширения xdg-shell с реализацией протокола, определяющего общие для всех окружений рабочих столов операции с окнами, пиктограммами, меню и указателями. Добавлена директива для настройки подключения дополнительных расширений Wayland (например, «wayland_extensions=wl_shell:xdg_wm_base:xdg_shell_v6»). Реализована экспериментальная поддержка запуска X11-приложений при помощи компонента XWayland (включается через настройку «x11-display-experimental=1»).

Из не связанных с Wayland улучшений выделяется новый файл конфигурации «.display» для настройки раскладки экранов при подключении нескольких мониторов. Например, указанная возможность может оказаться полезной для разбивки виртуального экрана на части при создании «видеостен», в которых изображение большого размера формируется из большого числа отдельных мониторов. Настройка раскладки экранов реализована через прослойку MirAL (Mir Abstraction Layer), абстрагирующую доступ к ABI Mir через библиотеку libmiral.

В текущем виде Mir представляет собой набор библиотек с реализацией графического стека, на основе которого подготовлена минималистичная оболочка mir-kiosk. Оболочка нацелена на обособленный запуск отдельных приложений в режиме интернет-киоска (интерфейс ограничен одним приложением), что может оказаться полезным для создания демонстрационных стендов, электронных вывесок, терминалов самообслуживания, автомобильных информационно-развлекальных приложений, умных счётчиков и экранов-индикаторов для бытовой техники. Mir-kiosk поставляется в виде snap-пакета и уже адаптирован для использования Mir 1.0. Разработчиками Mir подготовлена инструкция по созданию загружаемого образа для запуска произвольного Qt-приложения с использованием Mir-kiosk и системного окружения Ubuntu Core.

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

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

Критическая уязвимость в Bitcoin Core

Опубликованы корректирующие выпуски пакета Bitcoin Core 0.14.3, 0.15.2 и 0.16.3, а также ответвления Bitcoin Knots 0.16.3, в которых устранена удалённая DoS-уязвимость (CVE-2018-17144), способная вызвать крах Bitcoin-клиентов bitcoind и Bitcoin-Qt (дополнение: при подготовке исправления в ветках 0.15 и 0.16 всплыла критическая инфляционная уязвимость, которая может привести к двойной трате средств). Проблема возникает при обработке полученного от майнера блока, включающего транзакцию, которая пытается дважды провести одни и те же входные данные.

Эксплуатация уязвимости достаточно затратна, так как приводящие к краху блоки являются некорректными и могут быть созданы только майнером, готовым пожертвовать доходом от создания блока как минимум на сумму 12.5 BTC (около 80 тысяч долларов). Кроме Bitcoin Core, проблема также проявляется в Litecoin и других ответвившихся от Bitcoin проектах. Потенциально уязвимость может быть использована для организации масштабной атаки на криптовалюты для массового вывода из строя узлов сети с целью достижения контроля за 51% мощности расчёта хэшей, необходимого для проведения атаки по двойной трате средств.

Дополнение:

Опубликованы новые подробности об уязвимости. В процессе создания исправления разработчики определили, что кроме отказа в обслуживании в ветках 0.15 и 0.16 проблема также имеет характер критической инфляционной уязвимости, которая может привести к двойной трате средств. После того как обладатели половины всех мощностей сети обновили версию Bitcoin Core и один из сторонних разработчиков независимо выявил новый вектор атаки, принято решение о раскртии сведений о наличии и критической проблемы, информация о которой в примечании к новым выпускам Bitcoin Core была пропущена. Всем пользователям Bitcoin рекомендуется срочно установить обновление, чтобы блокировать попытки майнинга некорректных блоков и не допустить принятие недействительных транзакций.

Проблема изначально появилась в ветке Bitcoin Core 0.14 и была вызвана ошибкой в реализации оптимизации, позволяющей на этапе начальной обработки блока избавиться от ресурсоёмкой проверки на предмет вхождения в блок транзакций с повторяющимися операциями, тратящими одни средства дважды. Подобная проверка проводится при последующей обработке блока, но в случае выявления операций двойной траты, проводимых внутри блока в одной транзакции, генерируется исключение (assert), а не вызывается полноценный обработчик ошибок. В итоге в Bitcoin Core 0.14 при возникновении в блоке упомянутых транзакций происходит крах процесса.

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

Таким образом, в Bitcoin Core 0.15 и 0.16 попытки проведения транзакций с двойной тратой средств в текущем блоке по-прежнему приводят к генерации исключения. Но если операция двойной траты включена в предыдущий блок исключение не генерируется, так как запись остаётся в структуре CCoin с флагом DIRTY и меткой о состоявшейся трате средств. Подобная особенность позволяет недобросовестному майнеру сформировать блок со средствами, потраченными дважды.

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

Для ядра Linux предложен механизм раздельного учёта времени в контейнерах

Для обсуждения в списке рассылки разработчиков ядра Linux предложен набор патчей с реализацией пространства имён для времени. После завершения разработки обсуждаемый механизм позволит раздельно управлять временем в каждом контейнере, давая возможность выставлять своё дату/время, синхронизировать время независимо от базового окружения и корректно возобновлять показания таймеров при восстановления контейнера после заморозки.

В текущем виде ядро Linux предоставляет общие счётчики всех видов времени для контейнеров, что создаёт трудности при миграции контейнеров между узлами и восстановлении после заморозки их состояния. При восстановлении остановленного на какое-то время контейнера важно не столько изменение показания календарного времени (CLOCK_REALTIME), сколько правильность восстановления значений монотонных часов (CLOCK_MONOTONIC) и часов времени после загрузки (CLOCK_BOOTTIME).

Монотонные часы отражают неразрывно увеличивающееся время, прошедшее с момента определённого события в прошлом, т.е. если контейнер был заморожен, то показания монотонных часов должны восстановить значение на момент заморозки, пропустив интервал времени, в котором контейнер находился в состоянии заморозки или сна. Аналогичная ситуация возникает при восстановлении времени с момента загрузки (в современных ядрах Linux значения CLOCK_MONOTONIC и CLOCK_BOOTTIME совпадают).

Суть предложенных изменений в добавлении для каждого пространства имён дополнительных смещений к базовым значениям системных часов. При обращении процесса, находящегося в некорневом пространстве имён, к системным вызовам, связанным с манипуляцией временем, указанные смещения будут суммироваться c базовыми показаниями времени. В представленном на рассмотрение наборе изменений смещение пока реализованы только для таймеров CLOCK_MONOTONIC и CLOCK_BOOTTIME. Для CLOCK_REALTIME детали реализации пока находятся на стадии обсуждения и непонятно, достаточно ли будет смещения, как поступать при смене времени в хост-окружении и есть ли необходимость в корректировке времени, используемом для отражения момента создания или изменения файлов в VFS.

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

Представлен первый выпуск Firefox для устройств виртуальной реальности

Компания Mozilla опубликовала первый выпуск Firefox Reality, специализированного браузера для систем виртуальной реальности. Предложенный браузер предоставляет трёхмерный интерфейс пользователя для навигации по сайтам внутри виртуального мира или в составе систем дополненной реальности. Браузер оформлен в виде приложения для платформы Android и требуется для сборки Android NDK r17b. Поддерживается использование 3D-шлемов Samsung Gear VR, Oculus Go, Qualcomm & ODG, VIVE Focus, Google Daydream. Для тестирования без 3D-шлема браузер может быть запущен на обычном смартфоне на базе Android. Сборки Firefox Reality размещены в каталогах приложений Oculus, Daydream и Viveport.

Кроме предназначенного для управления через 3D-шлем интерфейса, позволяющего просматривать традиционные двумерные страницы, браузер предлагает web-разработчикам API Web VR с VR-расширениями для WebGL и CSS. Web VR даёт возможность создавать специализированные трехмерные web-приложения для взаимодействия в виртуальном пространстве и воплощать в жизнь новые методы 3D-навигации, механизмы ввода информации и интерфейсы для поиска информации.

В том числе возможно размещение DOM-элементов внутри сцены виртуальной реальности, например можно организовать отображение плоского 2D-контента в форме цилиндра, окружающего пользователя. Из поддерживаемых браузером расширенных механизмов взаимодействия с пользователем также отмечается система голосового ввода, которая позволяет заполнять формы и отправлять поисковые запросы с использованием развиваемого в Mozilla движка для распознавания речи.

В качестве стартовой страницы браузер предоставляет интерфейс для доступа к избранному контенту и навигации по коллекции адаптированных для 3D-шлемов игр, web-приложений, 3D-моделей и пространственных видео.

Как и в новых выпусках Firefox в Firefox Reality задействованы наработки проекта Quantum и полноценный браузерный движок, но связанный с реализацией интерфейса пользователя код не пересекается. Продукт пока находится на начальном этапе развития и существенно отстаёт по функциональности от обычного Firefox. Например, пока отсутствует система закладок, возможность просмотра пространственного видео (режим 360 градусов) и система синхронизации в привязке к учётной записи. Тем не менее, уже доступен режим приватного просмотра.

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

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

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

Из новых возможностей LLVM 7.0 отмечается возможность мультиверсионирования функций в Clang, улучшение поддержки предкомпилированных заголовков PCH в clang-cl, предварительная поддержка формата отладочной информации DWARF v5, начальная поддержка NVIDIA PTX для ускорения вычислений в OpenMP 4.5, поддержка OpenCL C++, поддержка MSan, X-Ray и libFuzzer во FreeBSD, начальная поддержка UBSan, X-Ray и libFuzzer в OpenBSD, реализация проверки неявных преобразований в UBSan, решение многих проблем с совместимостью в компоновщике lld, новые инструменты llvm-exegesis, llvm-mca и diagtool, дополнительные оптимизации и средства диагностики.

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

  • В UBSan (Undefined Behavior Sanitizer), детекторе неопределенного поведения, добавлен режим проверки неявных преобразований («-fsanitize=implicit-conversion»), который пока ограничен выявлением неявных усечений целых значений;
  • Доступна экспериментальная поддержка отладочной информации в формате DWARF v5 (включается «-gdwarf-5 -O0»), в том числе новых таблиц «.debug_names»;
  • Добавлена поддержка мультиверсионирования функций, техники для включения в результирующий исполняемый файл нескольких реализаций функции, использующих разные специализированные расширенные наборы инструкций. Разные варианты функций определяются при помощи атрибута «target«, реализация которого совместима с GCC. Например, выражение ‘__attribute__((target(«arch=atom»)))’ позволяет определить отдельный вариант функции, который будет использован на процессорах Atom. Мультиверсионирование пока доступно только для исполняемых файлов ELF и для архитектур x86 и x86-64;
  • В clang-cl, альтернативном интерфейсе командной строки, обеспечивающем совместимость на уровне опций с компилятором cl.exe из состава Visual Studio, значительно улучшена поддержка предкомпилированных заголовочных файлов в формате PCH. При использовании файла PCH теперь не генерируются inline-методы, которые уже присутствуют в объектах, собранных вместе с PCH-файлом, что позволяет ускорить сборку с применением PCH примерно на 30%. Также добавлена возможность использования предкомпилированных заголовков для заголовочного файла stdafx.h, предлагаемого по умолчанию в Visual Studio;
  • Исполняемый файл компилятора и библиотеки теперь включают только номер значительной версии, т.е. вместо исполняемого файла clang-7.0 предлагается clang-7;
  • В состав включена вспомогательная утилита diagtool для манипуляции со средствами диагностики clang, например, для определения иерархии предупреждений и оценки какие из элементов этой иерархии включены по умолчанию или применяются для конкретного вызова компилятора;
  • Добавлены новые диагностические опции «-Wc++98-compat-extra-semi», «-Wextra-semi», «-Wself-assign» и «-Wself-assign-field»;
  • Добавлены новые флаги компилятора: «-fstrict-float-cast-overflow» и «-fno-strict-float-cast-overflow» для управления поведением при преобразовании вещественного значения в целое; «-fforce-emit-vtables» и «-fno-force-emit-vtables» для включения/выключения обязательного inline-развёртывания функций с использованием vtables; «-mcrc» и «-mno-crc» для управления применением MIPS инструкций CRC (Cyclic Redundancy Check); «-mvirt» и «-mno-virt» для управления применением MIPS-расширений виртуализации; «-mginv» и «-mno-ginv» для для управления применением MIPS инструкций GINV (Global INValidate);
  • Расширены возможности, связанные с поддержкой OpenCL, OpenMP и CUDA. В том числе в OpenCL реализовано расширение cles_khr_int64 и добавлена опция «-cl-uniform-work-group-size» для применения дополнительной оптимизации на этапе компиляции. Началась реализация поддержки OpenCL C++, добавлены флаги «-std/-cl-std=c++» и поддержка ключевых слов. Добавлена возможность использования OpenMP 4.5 для ускорения вычислений за счёт выноса операций (offloading) на чипы с поддержкой псевдоязыка NVIDIA PTX (Parallel Thread Execution);
  • В статический анализатор добавлен новый режим проверки MmapWriteExec для определения попыток маппинга страниц памяти одновременно для записи и исполнения;
  • В linter clang-tidy добавлена большая порция новых проверок. Добавлена возможность сохранения результатов в формате JSON для интеграции с внешними системами анализа кода. В состав включены новые модули abseil (для проверки библиотеки Abseil), portability и zircon (для проверки ядра ОС Fuchsia).

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

  • В компоновщике LLD обеспечена готовая для повсеместного использования поддержка форматов ELF (Unix), COFF (Windows) и MinGW. Например, lld/ELF пригоден для компоновки всех компонентов FreeBSD для архитектур AMD64 и ARMv7, и будет применяться в качестве компоновщика по умолчанию в следующей версии FreeBSD. lld/COFF уже применяется для формирования официальных сборок Chrome и Firefox. Форматы Mach-O (macOS) и WebAssembly пока остаются в категории экспериментальных;
  • В UBsan, инструментарии X-Ray и библиотеке libFuzzer реализована начальная поддержка OpenBSD (x86 и x86_64);
  • В MSan (x86_64), инструментарии X-Ray и libFuzzer (x86 и x86_64) обеспечена поддержка FreeBSD;
  • Из установочного пакета для Windows исключены компоненты для интеграции с Visual Studio, которые вынесены в отдельное расширение «LLVM Compiler Toolchain Visual Studio», размещённое в каталоге приложений Visual Studio Marketplace;
  • Добавлена новая утилита llvm-exegesis для автоматического измерения производительности выполнения машинных инструкций;
  • Добавлена новая утилита llvm-mca для прогнозирования производительности машинного кода для указанного CPU;
  • Проведена оптимизация преобразования вещественных чисел в значения других типов;
  • Реализована возможность профилирования кода, оптимизированного при помощи JIT, при помощи утилиты perf;
  • Внесены многочисленные улучшения в бэкенды для архитектур X86, AArch64, ARM, SystemZ, Hexagon, MIPS и PowerPC.

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

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

Подготовлен релиз платформы Electron 3.0.0, которая предоставляет самодостаточный фреймворк для разработки многоплатформенных пользовательских приложений, использующий в качестве основы компоненты Chromium, V8 и Node.js.

Значительное изменение номера версии связано с обновлением до кодовой базы Chromium 66, платформы Node.js 10.2.0 и JavaScript-движка V8 6.6. Другие изменения:

  • Добавлены новые API для кастомизации текстовых полей (TextField API) и кнопок (Button API), а также для динамического управления ведением логов (netLog API).
  • Ранее доступеные API дополнены новыми вызовами: app.isPackaged, app.whenReady(), process.getHeapStatistics(), win.moveTop().
  • Обеспечена возможность использования webview в режиме sandbox-изоляции.
  • Для node.js добавлены прослойки для доступа к реальным файловым путям (fs.realpathSync.native и fs.realpath.native).
  • Вызов fs.readSync адаптирован для синхронизации большого числа файлов.
  • Проведена чистка устаревших API и выполнен рефакторинг вызовов NativeWindow и menu.popup(). API api::Window переименован в api::BrowserWindow, а команда media-play_pause в media-play-pause;

Напомним, что 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 и Discord. Всего в каталоге программ Electron представлено 631 приложение. Для упрощения разработки новых приложений подготовлен набор типовых демонстрационных приложений, включающих примеры кода для решения различных задач.

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

Релиз Chrome OS 69 с обновлённым интерфейсом и поддержкой Linux

Компания Google представила релиз операционной системы Chrome OS 69, основанной на ядре Linux, системном менеджере upstart, сборочном инструментарии ebuild/portage, открытых компонентах и web-браузере Chrome 69. Пользовательское окружение Chrome OS ограничивается web-браузером, а вместо стандартных программ задействованы web-приложения, тем не менее, Chrome OS включает в себя полноценный многооконный интерфейс, рабочий стол и панель задач. Сборка Chrome OS 69 доступна для большинства актуальных моделей Chromebook. Энтузиастами сформированы неофициальные сборки для обычных компьютеров с процессорами x86, x86_64 и ARM. Исходные тексты распространяются под свободной лицензией Apache 2.0.

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

  • Задействован по умолчанию новый интерфейс пользователя, оформленный в стиле Material Design и оптимизированный для устройств с сенсорными экранами. Изменено оформление системного меню;
  • Добавлена возможность центровки пиктограмм приложений на панели с размещением закреплённых приложений в левой части списка, а запущенных приложений — в правой. Режим включается при помощи опции «chrome://flags/#shelf-new-ui»;
  • Переведена в разряд штатных возможностей поддержка запуска Linux-приложений. Число моделей Chromebook, на которых возможен запуск виртуального окружения для запуска обычных Linux-приложений, ограничено необходимостью поставки в прошивке свежих версий ядра Linux и поддержки в CPU технологий виртуализации VT-x и VMX. Подсистема «Linux for Chromebooks» включается в настройках в секции «Settings > Linux» (переход в режим разработчика теперь не требуется). После активации настройки следует нажать кнопку «Install», после чего в списке приложений появится приложение «Terminal» с Linux-окружением, в котором можно выполнять произвольные команды. Доступ к файлам Linux-окружения можно получить из файлового менеджера.

    Возможность запуска Linux-приложений подтверждена для следующих устройств:

    • Google Pixelbook;
    • Acer Chromebook Spin 11 R751T, CP311-1H, CP311-1HN, 15″ CB515-1HT/1H, 11″ C732, 11″ C732T, 11″ C732L, 11″ C732LT, 11″ CB311-8H и 11″ CB311-8HT;
    • Asus Chromebook Flip C101PA;
    • HP Chromebook x360 11 G1 EE и x2;
    • Lenovo Chromebook Thinkpad серии 11e (Yoga 11e);
    • Samsung Chromebook Plus (v2).

    Запуск Linux-приложений основан на подсистеме CrosVM и организован через запуск виртуальной машины с Linux при помощи гипервизора KVM. Внутри базовой виртуальной машины запускаются отдельные контейнеры с программами, которые можно устанавливать как обычные приложения для Chrome OS. При установке графических Linux-приложений в виртуальной машине, они запускаются по аналогии с Android-приложениями в Chrome OS c отображением пиктограмм в ланчере.

    В виртуальной машине можно вручную создавать дополнительные контейнеры (используется LXC) и запускать такие приложения как Steam и Firefox. Для функционирования графических приложений CrosVM предоставляет встроенную поддержку Wayland-клиентов (virtio-wayland) с выполнением на стороне основного хоста композитного сервера Sommelier. Поддерживается как запуск приложений на базе Wayland, так и обычных X-программ (используется прослойка XWayland). Из ограничений текущей реализации отмечается отсутствие поддержки звука, внешних устройств (USB, Bluetooth), аппаратного ускорения обработки графики и видео, настройки методов ввода (IME);

  • Переработан интерфейс файлового менеджера. Добавлена возможность доступа к совместному хранилищу Google Team Drives (в отличие от Google Drive, файлы в Team Drive привязаны к группе, а не отдельному пользователю).

    В файловом менеджере добавлена новая секция «Мои файлы» (My Files), предоставляющая доступ к загруженным файлам, включая файлы, загруженные в Android- и Linux-окружениях. Содержимое боковой панели теперь включает сгруппированные секции:

    • Недавно открытые файлы;
    • Мультимедийные файлы (изображения, видео, музыка);
    • Ярлыки;
    • «Мои файлы»: загрузки, файлы Android-окружения, файлы Linux-окружения;
    • Другие разделы (zip-архивы, usb-накопители и т.п.);
    • Файлы в хранилище Google Drive;
    • Другие файловые системы;

    Появилась поддержка обращения к файлам Google Play. В том числе в файловом менеджере теперь можно читать и сохранять файлы Android-окружения ARC++ (App Runtime for Chrome, прослойка для запуска Android-приложений в Chrome OS). При активной настройке «chrome://flags#show-android-files-in-files-app» в файловом менеджере появляется новая секция «Android Files», в которой показываются все файлы Android-окружения, сохранённые в эмулируемом внешнем хранилище. При необходимости любой файл может быть скопирован в каталог «Downloads»;

  • Для Android-приложения реализована возможность создания ярлыков для быстрого запуска типовых задач. Закрепление ярлыка в панели задач (Shelf) и ланчере производится через контекстное меню, показываемое при клике правой кнопкой мыши на Android-приложении;
  • В консоли администратора теперь можно разрешить запуск установленных на устройстве Android-приложений в гостевом сеансе, без привязки к учётной записи;
  • В режиме для людей с ограниченными возможностями появилась функция голосового заполнения любых полей ввода текста. Новая возможность примечательна отделением функций голосового ввода от экранной клавиатуры. При нахождении курсора в поле ввода для начала диктовки содержимого необходимо кликнуть на символ с микрофоном в панели или нажать клавиатурную комбинацию «Search + D». Включение режима диктовки производится в настройках «Accessibility > Manage accessibility» через опцию «Enable Dictation (select to type)»;
  • В секцию Accessibility добавлен отдельный блок настроек для конфигурирования синтезатора речи. Пользователь может выбрать голос, язык, темп произношения и размер пауз между словами;
  • В приложениях, запускаемых в режиме интернет-киосков (ограничение интерфейса одним обособленным приложением), теперь выводятся предупреждения о низком заряде аккумулятора;
  • Реализован режим ночной подсветки, при которой уменьшается интенсивность синего цвета для снижения утомляемости;
  • Добавлен новый интерфейс для быстрого доступа к Emoji. В контекстных меню, показываемых для форм ввода, появился пункт Emoji, при помощи которых можно вызвать виртуальную клавиатуру для ввода специмволов;
  • Визуально обновлён OOBE (Out of the Box Experience), режим входа для получения доступа к расширенной функциональности для разработчиков;
  • При обзоре открытых приложений на устройствах с сенсорным экраном теперь можно закрывать приложения жестом, смещая эскиз за край экрана;
  • Унифицировано поведение в режиме для планшетных ПК. Для смены обоев рабочего стола на сенсорном экране теперь можно использовать жест «перелистывание»;
  • Добавлен сервис для захвата видео;
  • Устранена группа уязвимостей L1TF (Foreshadow) в механизме спекулятивного выполнения CPU Intel.

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

Компания Versity открыла исходные тексты файловой системы ScoutFS

Компания Versity объявила об открытии исходных текстов специализированной файловой системы ScoutFS, оптимизированной для хранения архивных данных. Утверждается, что ScoutFS стала первой открытой файловой системой для архивирования, нацеленной на предоставление промышленного уровня надёжности и масштабирования при хранении огромного числа файлов. Код опубликован под свободной лицензией GPLv2, что позволяет в будущем включить его в основной состав ядра Linux. В настоящее время ScoutFS распространяется в виде внешнего модуля для ядра Linux из состава RHEL/CentOS 7.x.

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

ScoutFS существенно расширяет возможности традиционных ФС по числу хранимых файлов в одном пространстве имён, позволяя хранить в одной ФС до триллиона файлов. ФС также рассчитана на высокую интенсивность поступления данных и может обрабатывать большое число одновременных запросов на создание файлов. Работа с ScoutFS напоминает традиционные ФС — семантика соответствует требованиям POSIX, а хранилище разворачивается поверх общего для всех узлов блочного устройства, на котором создаётся ФС и монтируется на всех узлах кластера.

Ключевые особенности ScoutFS:

  • Интегрированный движок индексации данных, ускоряющий операции обслуживания архива. Индексация позволяет сразу отслеживать все изменения данных и атрибутов файлов. Для обращения к индексу предоставляется специальный интерфейс для формирования запросов AQI (Accelerated Query Interface);

  • Применение совместно используемого на разных узлах индекса. Индекс построен на базе LSM-дерева (Log-structured merge-tree), обеспечивающего высокую производительность в условиях интенсивного добавления новых данных;
  • Благодаря индексации время поиска файлов практически не зависит от числа файлов в ФС. Сравнение ScoutFS и XFS:
  • Сокращение конкурирующих операций, благодаря отделению логических блокировок от операций сериализированной записи на устройство;
  • Поддержка различных ресурсов для конечного хранения данных, включая ленточные накопители, диски, хранилища объектов и облачные системы;
  • Обеспечение отказоустойчивости: узлы могут на лету отключаться и подключаться без нарушения работы ФС и потери сохраняемых данных;
  • Полное соответствие единой семантике POSIX на разных узлах;
  • Контроль целостности метаданных и ссылок на данные;
  • Автоматические транзакции для поддержания согласованности постоянных структур;
  • Реализация в виде оптимизированного модуля ядра, обеспечивающего минимальные задержки и высокую производительность.

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