Ну можно время компиляции сократить. А вообще идея хорошая, фреймворки Маковские крайне хороши и удобны для разработки. Достаточно компилятору путь до фреймворка указать и он сам разберется, это удобнее, чем с pkgconfig шаманить.
То есть на линуксах эта хрень явно будет в паре с pkgconfigом работать, а на виндах как всегда через жопу.
Плюс еще непонятно что делать со всякими конструкциями типа
LIB_EXPORT и прочими дефайнами, от которых зависят подключаемые хедеры.
То есть тут определенно надо что-то с линковкой делать. Старый добрый -l напарывается с разбегу на грабли.
Плюс еще непонятно что делать со всякими конструкциями типа LIB_EXPORT и прочими дефайнами, от которых зависят подключаемые хедеры. То есть тут определенно надо что-то с линковкой делать. Старый добрый -l напарывается с разбегу на грабли.
Если cmake научится с этим работать - никаких проблем не будет.
Хороший предкомпилированный заголовок ускоряет повторный разбор в 3-10 раз, а в современных условиях возникли ситуации, когда надо в 100. Инкрементальную компиляцию поцоны пока не осиливают.
Презентация у них относительно неразжёванная, но я могу добавить подробностей. Сейчас XCode и Visual Studio для разбора кода в редакторе используют не какой-то быстро действующий кем-то написанный движок, а непосредственно компилятор - XCode точно использует clang, студия вроде как использует библиотеки msvc, и разбирает код ещё дольше чем XCode. А пару месяцев назад я взял и скачал ветку QtCreator с плагином, использующим clang вместо быстрой, но обречённой быть неточной нативной модели кода. И - тормоза, на i5 уходит в среднем 1 секунда на подсветку и 0,3-0,5 на автокомплит.
Так вот быстрая скорость разбора плюсов нужна как раз для сред разработки, а в будущем - для небольших скриптов на python для рефакторинга, которые будет писать сам программист под свои нужды. Годами на это забивали и впаривали шаблоны + кучу макросни ради оптимизаций и совместимости, пренебрегая возможностями инкрементальной компиляции и т.д., теперь эти времена заканчиваются.
Что касается gcc hello.c -E, clang ещё года 3 назад тестировали на реальных проектах, а не на hello.c - и получили 25% времени на препроцессинг, 25% на парсинг, и около 40-45% на генерацию кода - то есть как у вас с gcc и у меня с clang на файле hello.c. Вот только при использовании clang как тулзы обработки кода, а не как компилятора, нет этапа генерации кода, а скорость парсинга уменьшится многократно. Останется 5-10% от семантического анализа и пара процентиков на препроцессинг и парсинг.
Во-первых они предлагают несколько вариантов реализации, один из которых совместимость не ломает, а фактически даёт компилятору указания, как заголовки превратить в модули. Во-вторых модули предлагались как часть C++ 2011, но не вошли - и детали не додумали, и авторам компиляторов решили не добавлять работы.
Видимо авторы clang решили немного ускорить события и представить публике годную реализацию модулей до стандарта C++ 2017. В принципе оправданно, сейчас компилятора серьёзных осталось только 3, и два из них опенсурсные, модули реализуют без проблем. MS с их лозунгом going native придётся тоже пойти следом за gcc/clang.
Ой, опечатался. Время парсинга уменьшается многократно при использовании модулей - т.к. вместо 100.000 строк придётся разобрать 1-2 тыс., а импортированные модули будут дёргаться уже на этапе семантического анализа из заранее готового кеша.
Они упоролись? модуль по умолчанию у них игнорирует препроцессор стейт перед импортом. А в том же ядре до **пы хедеров которые только макросами и утыканы, которые по разному от этого препроцессор стейт работают (тот же dev_dbg, например). Ждем комментария Линуса.