[Перевод] Microsoft добавит поддержку компилятора Clang в ноябрьском обновлении Visual Studio 2015
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).