Сразу хочу заметить, что всё, что касается C++11 переводить сложно, так как устоявшихся русскоязычных терминов нет (их и на английском недавно придумали!)
Шаблоны запрещены — прощай стандартная библиотека? C++-style casts запрещены, так пусть у нас везде будет reinterpret_cast? Плохо когда ограничения не имеют смысла.
А когда вы пишете на Си то вы заставляете разработчиков называть все переменные только идентификаторами с чётным числом символов? Откуда это необоснованное желание писать на каком-то вымышленном подмножестве языка?
Если бы вы действительно были заинтересованы в улучшении ситуации, вы бы взяли и написали патч. А рассказывать как там всё плохо где-либо кроме списка рассылки разработчиков — д'Артаньянство. Кроме того, ваша «реализация» с нуля да ещё и неопубликованная — типичный синдром NIH. Если бы вы хоть немного ценили своё время, вы опять таки бы написали патч, а не писали с нуля, и кроме того — опубликовали бы сразу.
> Стандартная реализация красно-черных деревьев в STL кривая (GNU, HP, Microsoft и смотрел много других, правильной не встречал, может правда уже и есть).
Все !@#$^%, один я д’Артаньян. Я сомневаюсь что сотни не самых глупых инженеров так и не смогли написать хоть одно нормальное RB дерево.
MSVC ABI немного умеет, но поддержка очнеь неполная. Стандартную библиотеку C++ от MS использовать, IIRC, нельзя.
Исключения на Windows — не знаю, зайдите в IRC спросите.
Кросс-компилировать — да. Clang — это принципиально кросс-компилятор, ему вообще всё равно какой у вас хост. Просто дефолтный таргет драйвером выставляется в хост, если есть соответствующий бекенд.
> Open source software — это узкая протоптанная тропинка в дремучем лесу.
Я не понимаю при чём тут опенсорсность. Была бы это программа с закрытыми исходными кодами — что было бы по-другому? (Подсказываю: были бы бинарники под поддерживаемые платформы и всё, точка.)
Насчёт релиза — это просто чуть более протестированная версия, чем trunk. Но фиксов после заморозки в релиз обычно входит очень мало — очень мало заинтересованных. Все заинтересованные сидят на SVN версии. Поэтому могу посоветовать тоже брать версию из SVN.
И ещё нет самого важного — прогона тестов. Без прогона тестов можно собрать всё что угодно, но не компилятор. make check-all.
> Проверяем версию gcc — для llvm 3.2 подойдет gcc не новее 4.6.2 (с 4.7.2 у меня он сам себя не смог собрать, но и слишком старый тоже нельзя).
Это какая-то Windows-специфичная проблема (?). Зарепортите баг? Под Debian gcc 4.7.2 собирает нормально.
Про STL — во-первых, не STL, а стандартная библиотека, а во-вторых, в Linux вы получите по умолчанию одинаковую стандартную библиотеку и в gcc, и в Clang (GNU libstdc++), а на Mac OS X получите libc++, в которой всё есть.
А где параллельные и кластерные файловые системы? А где обсуждение интерконнекта?
Вредная статья, в общем.
Перевод этой книги www.artima.com/shop/overview_of_the_new_cpp тоже интересен.
Эта строка демонстрирует undefined behavior, а не то что вы написали.
Все !@#$^%, один я д’Артаньян. Я сомневаюсь что сотни не самых глупых инженеров так и не смогли написать хоть одно нормальное RB дерево.
$ clang -std=c++11 /tmp/zzz.cc
/tmp/zzz.cc:3:14: error: constructor for 'A' creates a delegation cycle [-Wdelegating-ctor-cycles]
A(int _a=5): A{_a} {};
^
1 error generated.
Эмм, разве? Только для проверки, и то по умолчанию отключено:
lib/AST/ItaniumMangle.cpp:
Для линковки — да, нужен подходящий ld. Но это для линковки. А для компиляции — нет.
llvm.org/bugs/show_bug.cgi?id=15106
Исключения на Windows — не знаю, зайдите в IRC спросите.
Кросс-компилировать — да. Clang — это принципиально кросс-компилятор, ему вообще всё равно какой у вас хост. Просто дефолтный таргет драйвером выставляется в хост, если есть соответствующий бекенд.
Я не понимаю при чём тут опенсорсность. Была бы это программа с закрытыми исходными кодами — что было бы по-другому? (Подсказываю: были бы бинарники под поддерживаемые платформы и всё, точка.)
Насчёт релиза — это просто чуть более протестированная версия, чем trunk. Но фиксов после заморозки в релиз обычно входит очень мало — очень мало заинтересованных. Все заинтересованные сидят на SVN версии. Поэтому могу посоветовать тоже брать версию из SVN.
И ещё нет самого важного — прогона тестов. Без прогона тестов можно собрать всё что угодно, но не компилятор. make check-all.
> Проверяем версию gcc — для llvm 3.2 подойдет gcc не новее 4.6.2 (с 4.7.2 у меня он сам себя не смог собрать, но и слишком старый тоже нельзя).
Это какая-то Windows-специфичная проблема (?). Зарепортите баг? Под Debian gcc 4.7.2 собирает нормально.
Про STL — во-первых, не STL, а стандартная библиотека, а во-вторых, в Linux вы получите по умолчанию одинаковую стандартную библиотеку и в gcc, и в Clang (GNU libstdc++), а на Mac OS X получите libc++, в которой всё есть.
Про статическую линковку — не знаю о такой проблеме. Во-первых, сегодня никто не линкует статически, а во-вторых, какая проблема возникает?