Закон Сегала

Человек, имеющий одни часы, твердо знает который час.

Человек, имеющий несколько часов, ни в чем не уверен.

Сын торчит в интернете. Мать: - Сынок, иди кушать! ...

В Firefox 62 модернизирован поиск на странице открытия новой вкладки
Mon, 20 Aug 2018 09:45:45 +0300

Debian GNU/Linux исполнилось 25 лет
Thu, 16 Aug 2018 07:51:55 +0300

Выявлены следы работы Valve над инструментарием для запуска Windows игр в Linux
Thu, 16 Aug 2018 07:42:23 +0300

Опубликован RFC для TLS 1.3
Mon, 13 Aug 2018 20:41:22 +0300

Компания Tesla намерена открыть код систем обеспечения безопасности
Mon, 13 Aug 2018 07:13:08 +0300

Представлен порт Qt 1 для современных систем
Mon, 13 Aug 2018 07:06:50 +0300

Dropbox прекращает поддержку всех ФС в Linux, за исключением Ext4
Sun, 12 Aug 2018 08:45:31 +0300

Инициатива по развитию открытого ПО для киноиндустрии
Fri, 10 Aug 2018 23:12:43 +0300

Разработчики bzip2 потеряли контроль над доменом bzip.org
Fri, 10 Aug 2018 10:00:02 +0300

Google назвал нового руководителя Android Open Source Project
Wed, 08 Aug 2018 23:28:27 +0300

Компания Lenovo подключилась к инициативе доставки обновлений прошивок для Linux
Tue, 07 Aug 2018 22:38:07 +0300

Выпуск языка программирования Dart 2.0
Tue, 07 Aug 2018 20:39:46 +0300

Доверие к Let's Encrypt обеспечено во всех списках корневых сертификатов
Mon, 06 Aug 2018 23:46:28 +0300

Тенденция "Bullshit Web"
Sun, 05 Aug 2018 08:30:14 +0300

Mozilla включает телеметрию для вкладок в режиме приватного просмотра
Sat, 04 Aug 2018 08:32:50 +0300

Новости OPENNET
Новости

Компания Google перешла на использование свободного компилятора Clang при формировании сборок браузера Chrome для платформы Windows, вместо ранее применявшегося компилятора Microsoft's Visual C++ (MSVC). Таким образом, начиная с Chrome 64 компилятор Clang теперь применяется для всех поддерживаемых платформ - macOS, iOS, Linux, Chrome OS, Android и Windows.

Из привлекательных сторон Clang для сборки Windows-приложений выделяется возможность сохранения совместимости с MSVC на уровне ABI, что позволяет собрать какую-то часть программы при помощи

MSVC, а другую часть при помощи Clang и затем скомпоновать их в один исполняемый файл при помощи компоновщика MSVC или LLD. Что касается сборки Chrome, то данный процесс полностью не избавлен от зависимости от Visual Studio и даже после перехода на Clang продолжает использовать заголовочные файлы и библиотеки Microsoft, а также применяет некоторые утилиты из SDK, такие как midl.exe и mc.exe. Также сохранена возможность разработки и отладки кода Chrome в среде Visual Studio IDE.

В своё время перевод Linux-сборок Chrome на Clang в 2014 году позволил сократить размер исполняемого файла на 8% при сохранении производительности на том же уровне. Перевод Windows-сборок на Clang отразился в снижении размера установщика для 64-разрядных систем на 6.33%, но размер 32-разрядных сборок немного увеличился (на 0.04%). Например, итоговый размер mini_installer.exe для 64-разрядных систем при сборке при помощи Clang составил 46.27 MB, а при сборке в MSVC - 49.4 MB. При сборке в Clang размер chrome.dll уменьшился на 5.1%, а chrome.exe на 1.2%, но размер chrome_child.dll увеличился на 10.8%.

При включении оптимизаций на этапе генерации кода (LTCG) и учёта данных профилирования (PGO), Clang генерировал код немного большего размера для 64-разрядных систем при установке режима оптимизации "/O2". При выборе режиме "/Os" наоборот, код Clang получался более компактным, чем MSVC. При этом результат сборки в Clang лучше поддавался сжатию LZMA. При измерении производительности код, собранный в Clang и MSVC, показал примерно одинаковые результаты. В отдельных тестах наблюдалось расхождение на уровне 5%, где-то выигрывал Clang, а где-то MSVC.

Так как режимы оптимизации LTCG и PGO использовались MSVC, но пока не используются при сборке релизов Chrome в Clang, имеется определённый задел для дальнейшего улучшения сборок на базе Clang. Различий в стабильности работы сборок в Clang и MSVC не выявлено. По времени локальной сборки Clang отстаёт от MSVC примерно на 15%, но сборка с отладочной информацией в распределённом сборочном сервисе Goma производится быстрее.

Проект перевода Windows-сборок Chrome на Clang начался в 2013 году и привёл к существенному улучшению в Clang поддержки Windows. Ключевым мотивом перехода на Clang стало желание задействовать единый компилятор для всех поддерживаемых платформ и унифицировать сборочный инструментарий. Доводы в пользу единого компилятора:

  • Использование при разработке Chrome многочисленных сопутствующих инструментов (ASan, CFI, ClusterFuzz), которые поддерживаются в Clang, но не сочетаются с MSVC;
  • Возможность написания плагинов к Clang для добавления специфичных для кодовой базы Chromium проверок и предупреждений;
  • Возможность применения инструментов Clang для рефакторинга кода;
  • Включение в систему поиска по исходным текстам Chromium кода, специфичного для Windiows;
  • Желание использовать открытый инструментарий для сборки открытого проекта Chromium;
  • Унификация сборочного инструментария, Chrome поддерживает 6 платформ, но большинство разработчиков знакомы с 1-3 платформами, что может создавать проблемы с компиляцией патчей на незнакомых платформах и воспроизведением специфичных для иных сборочных инструментариев ошибок в своём окружении;
  • Возможность использования специфичных для компилятора микро-оптимизаций для всех платформ;
  • Упрощение кросс-компиляции - работая в Linux, можно работать с кодом, специфичным для Windows;
  • Оперативное выявление проблем через обеспечение непрерывных сборок текущей экспериментальной ветки Chrome при помощи текущей экспериментельной ветки (trunk) Clang. Использование непрерывных сборок позволяет быстро переходить на новые версии компилятора, в то время как переход на новую версию MSVC занимал год или больше из-за длительного процесса выявления регрессий и согласования исправления выявленных в компиляторе ошибок;
  • Трудность перехода на новые версии стандарта C++ при применении разных компиляторов;
  • Возможность приоритетного развития определённых возможностей в компиляторе, не дожидаясь когда эти возможности будут готовы реализовать разработчики MSVC.

Плюсы использования Clang вместо Visual C++:

  • Поддержка 64-разрядных ассемблерных inline-вставок в Clang, которые активно используется в коде библиотеки libyuv для оптимизации декодирования форматов видео;
  • Возможность применения единого компилятора на разных платформах. Сборка разными компиляторами может способствовать выявлению дополнительных ошибок, но по мнению разработчиков Chrome средств диагностики Clang достаточно для выявления большинства проблем, а если появятся новые методы диагностики, то их можно перенести в Clang;
  • Возможность использования Address Sanitizer для выявления проблем при работе с памятью;
  • Clang может генерировать более быстрый код, если не используются оптимизации LTCG и PGO;
  • Широкие средства диагностики в Clang с рекомендациями по устранению ошибок.

Минусы перевода проектов на Clang:

  • Отсутствие в Clang поддержки расширений C++/CX и конструкции #import "foo.dll";
  • Наличие платной поддержки MSVC, в то время как патчи к Clang нужно писать самостоятельно или привлекать представителей из сообщества;
  • В Clang отсутствуют некоторые расширенные возможности отладки, такие как "Edit & Continue".

66.8757 76.1848 0.6041 9.7188

НОВОСТИ: Microsoft Research открыл код быстрого хранилища в формате ключ/ ... Sat, 18 Aug 2018 12:04:32 +0300

Исследовательское подразделение компании Microsoft опубликовало новое открытое хранилище FASTER, манипулирующее данными в формате ключ/значение и ориентированное на обеспечение распараллеливания обработки запросов и очень высокой скорости выборки в условиях большой интенсивности обновления данных. Хранилище оформлено в виде встраиваемой библиотеки, доступной в вариантах для языков C++ и C#, и распространяемой под лицензией MIT.

???????@Mail.ru Opera Firefox INFOBOX - хостинг Google Chrome