EDG открывает исходники своего компилятора C/C++ и сворачивает деятельность

· Linux и open source
Edison Design Group объявила о прекращении работы и публикации своего фронтенда C/C++ — того самого, что стоит за IntelliSense в Visual Studio. Код выложен на GitHub.

cover.svg

На ноябрьском заседании комитета по стандартизации C++ в 2025 году компания Edison Design Group (EDG) объявила о том, что сворачивает деятельность и открывает исходный код своего фронтенда C/C++. Репозиторий уже доступен на GitHub и содержит не только сам фронтенд, но и ряд сопутствующих компонентов.

Что это за фронтенд

Фронтенд EDG — одна из всего четырёх ныне существующих реализаций разбора C++ (наряду с Clang, GCC и MSVC). Его ключевые достоинства — высокая совместимость при парсинге и даже эмуляция чужих ошибок, чтобы код, собираемый Clang, GCC и MSVC, так же собирался и у EDG. К этому прилагаются подробная документация и крайняя степень настраиваемости: фронтенд специально приспособлен для встраивания в самые разные продукты, ориентированные на C и C++.

Самое известное применение — именно такое встраивание: на EDG построен IntelliSense в Visual Studio. Компилятор Intel тоже использовал этот фронтенд, пока не перешёл на Clang.

Что лежит в репозитории

Помимо собственно фронтенда, проект включает бэкенд, генерирующий код на C (позволяет получать C из программ на C++), бэкенд, генерирующий C++ (полезен для преобразований «из исходника в исходник»), прелинкер для автоматического инстанцирования шаблонов, минимальную библиотеку поддержки времени выполнения (но без «настоящих» библиотек вроде потокового ввода-вывода), утилиты для записи промежуточного языка в файл и его чтения, демаглер имён и набор инструментов для разработки. Документация опубликована на отдельном сайте, там же есть страница с подробностями о самом переходе к открытой модели.

Историческая деталь

У EDG есть любопытная строчка в истории стандарта. Это был единственный фронтенд, реализовавший возможность export для шаблонов из C++98. Полученный опыт впоследствии использовали как аргумент за удаление этой возможности — настолько неудачной она оказалась на практике. В конце концов export-шаблоны убрали в C++11.


Источник: Lobsters

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.