157,23
рейтинг
22 октября 2015 в 13:01

Разработка → Microsoft добавит поддержку компилятора Clang в ноябрьском обновлении Visual Studio 2015 перевод tutorial



Microsoft добавит поддержку компилятора Clang в ноябрськом обновлении Visual Studio 2015 — об этом было заявлено на конференции CPPCon 2015, проходящей сейчас в городе Белвью, США.

Clang это компилятор кода на С, С++ и Objective-C, который в связке с LLVM позволяет собирать программы под различные платформы. Visual Studio 2015 уже поддерживает Clang для разработки Android и iOS-приложений. При разработке под Android можно выбирать между GCC и Clang, а для iOS приходится использовать внешний Mac в качестве билд-сервера.

Планируемое обновление принесёт поддержку Clang на качественно новом уровне — теперь им можно будет собирать обычные Windows-приложения.

Компилатор Visual C++ состоит из нескольких частей: фронтенд-часть, отвечающая за генерацию AST (абстрактного синтаксического дерева), соответствующего коду программы и бекенд-часть, которая читает AST и генерирует исполняемый код. Фронтенд-часть называет С1, бекенд-часть называется С2 и над ними работают разные команды.

Clang планируется добавить в качестве замены С1, в то время как С2 и дальше будет использоваться по своему назначению. Как рассказал тимлид бекенд-части Джим Рэдиган, Clang будет создавать промежуточное представление кода, которое затем будет конвертироваться в формат, совместимый со входом С2, который Джим назвал набором кортежей. Далее С2 будет генерировать исполняемый код с помощью универсального компилятора кортежей (Universal Tuple Compiler).

Главной задачей создания связки Clang/C2 является облегчения кросс-платформенной разработки приложения как для самой Microsoft, так и для сторонних разработчиков. Многие приложения могли бы вынести свои невизуальные части в отдельные компоненты, которые бы собирались единообразно, одним и тем же компилятором Clang под различными операционными системами.

В качестве примера был указан Microsoft Office, мобильная версия которого сегодня доступна под Android, iOS и Windows 10 Universal Windows Platform. При использовании Clang в качестве фронтенд-компилятора общий код всех этих приложений мог бы собираться одинаково, исключая возникновения багов из-за отличий в Clang и C1.

Разработчики должны хорошо принять поддержку Clang из-за его лучшего соответствия последним стандартам С++. Тем ни менее, Microsoft не прекращает поддержку C1, её разработка будет продолжена, поскольку в версии стандарта С++ от Microsft есть некоторые специфические дополнения и тем программам, которые их используют, по-прежнему понадобиться С1 для сборки. Кроме того, скорость сборки кода в уже давно обкатанной комбинации С1\С2 несколько выше.

Джим Рэдиган отметил, что Microsoft не будет делать форк Clang, а сосредоточится на добавлении кода для платформы Windows в его основную ветку. При этом от Clang не будет требоваться делать что-либо особенное для поддержки С2, всё необходимое для совместимости Microsoft сделает на своей стороне.

Планируемое в ноябре обновление с поддержкой Clang будет иметь статус «превью», а основной релиз планируется на февраль 2016-го года.

Кроме поддержки Clang планируются и другие нововведения, к примеру поддержка “await” в соответствии с текущим предложением от Microsoft.

Также будет выпущена новая версия компилятора, позволяющая задействовать связку Clang/C2 из командной строки (без необходимости покупать и устанавливать Visual Studio IDE).
Автор: @tangro Tim Anderson

Похожие публикации

Комментарии (17)

  • 0
    Так вроде ж уже можно использовать clang в msvs: clang.llvm.org/docs/UsersManual.html#id7
    • –1
      Ну раньше надо было всё руками ставить и изолентой клеить, а тут всё будет из коробки работать.
    • –2
      Пока clang-cl не может даже элементарный проект с try/catch собрать и там большая беда с отладочной информацией.

      CppCon 2015: Reid Kleckner "Clang on Windows: a status update"



      Clang — MSVC compatibility
      • +1
        Далеко не всем нужно «элементарый проект с try/catch» собирать — некоторым хватает того, что можно собрать проекты типа того же Chrome.
        • 0
          Да им думаю и старого Clang хватает. Им clang-cl и вряд ли нужен был
          • –1
            * Им clang собирающий код созданный под Visual C++ компилятор вряд ли нужен.
            • –1
              Им нужен был Clang, который может полноценно использовать Windows SDK, так как задача была не «собрать Chrome clang'ом под Windows», а «собрать обычный Chrome под Windows с ASANом». Разводить Cygwin никто не собирался :-)
  • –7
    Это же только front end, как всегда от microsoft -полумеры.
    • +3
      Фронтенд парсит С++ код и в общем отвечает за поддержку всяких фич из стандарта языка (ну все эти лямбды, auto и т.д.), в то время как бекенд лишь оптимизирует AST и генерит бинарник. Clang в качестве фронтенда — совсем не так уж мало.
      • –2
        Это очевидно и об этом сказано в оригинальной статье, странно, что это не попало в перевод:
        «Microsoft Engineering Manager Steve Carroll (from the front-end team), who also spoke at CPPCon, explained that while Microsoft’s support of the C99 and C11 standards is already much improved, Clang/C2 will complete it.»

        Технически бекэнд намного сложнее фронтенда. Просто интересно было бы протестировать полный цикл от разбора кода до постороения бинарника, к слову сказать Clang предоставляет компилятор под Windows llvm.org/builds вот только как это сделано у них…
        • 0
          • 0
            официальный ресурс здесь
            llvm.org/releases/download.html
            • 0
              Ну да, я знаю где официальный ресурс. Так что если вам интересно было бы потестировать, вы можете потестировать — в официальных билдах уже есть интеграция с msvc ;)

              К слову по мне так интеграция Frontend Clang с Backend MSVC гораздо интересней полной интеграции CLang, сделанной Микрософт — зачем дважды одну и ту же работу делать?
  • +2
    CppCon 2015: James Radigan “CLANG + C2 — Engineering/Futures/Measurements"
  • 0
    Планируется ли до февраля выпустить фиксы для множества уже найденных багов в VS2015?
    • 0
      В ноябре же апдейт выходит.
      • 0
        Т.е. само обновление в ноябре релизное, но содержание Clang-части его Preview? Странно как-то.

        Планируемое в ноябре обновление с поддержкой Clang будет иметь статус «превью», а основной релиз планируется на февраль 2016-го года.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка