вторник, 21 февраля 2012 г.

Второй - пошёл! Add support for C++11 range-based 'for' loops

Второй коммит (поддержка range-based for loops) лёг в апстрим QtC.

C++: Add support for C++11 range-based 'for' loops:

In qt-creator/qt-creator.git:master


А вот с лямбдами будет сложнее. Основной косяк в том, что автоформатирование для них не работает.

понедельник, 20 февраля 2012 г.

C++11 и light-weight парсеры

Нда. Грамматика нового C++ стала настолько сложной, что lightweigh-парсерам с ней справиться становится всё сложнее и сложнее. Взять те же лямбды. Последовательно (без возвратов) анализируя поток токенов, получаемый от лексического анализатора, сложно (точнее, почти невозможно) надёжно отличить операцию индексирования от lambda introducer. Или тело lambda-функции от initializer list. Натолкнулся на это в процессе изучения исходников Qt Creator'а (той их части, которая отвечает за форматирование C++-текста). Форматтер опирается не на предварительно разобранную AST, а содержит в себе свою собственною стейт-машину, реализующую упрощённый вариант C++-грамматики, которая реагирует (в основном) на ключевые слова и знаки пунктуации/операций. Допилить её до состояния, чтобы нормально обрабатывались лямбды, списки инициализации (в аргументах методов) и т. п., но так, чтобы при этом не поломать уже имеющиеся кейсы - хорошая разминка для ума.

среда, 1 февраля 2012 г.

Qt Software / Параллельная компиляция Qt в Windows

Полезная статья с харбра по поводу тонкостей параллельной сборки в Qt Creator.

Qt Software / Параллельная компиляция Qt в Windows:
Параллельная компиляция Qt-проектов под Windows с использованием QtCreator — зверь загадочный и очень привередливый. В этой небольшой статье я расскажу, как же все-таки его приручить. Параллельная компиляция может быть выполнена достаточно просто в теории, на практике дела обстоят не совсем гладко, чему в подтверждение бесконечное число тем на форумах, где предлагаются всевозможные решения. Ни одно из них, к сожалению, нам не помогло.


Как я контрибьютил в Qt Creator

Собственно, это наконец то свершилось. Мой фикс попал в апстрим Qt Creator'а:

C++: Type deduction for auto-declared variables implemented:

In qt-creator/qt-creator.git:master