Pull to refresh
23
0
Андрей Боханко @andreybokhanko

Director of Advanced Software Technology Lab

Send message

Ясно, спасибо!

quasilyte Спасибо за подробный анализ!


Подскажите, были ли оформлены результаты в виде тикетов для gc?

Да, имелось в виду второе.


Сорри, если не совсем понятно выразился. :(

Равно как и в LLVM community нужно делать всё перечисленное.


Конечно, если основатель community твой сотрудник, то делать это сильно проще.

Я бы не стал говорить, что Clang / Apache 2.0 "лучше" или "хуже" GCC / GPLv3.


Лицензии отталкиваются от разных философских принципов. Результат в мире компиляторов — такой, что я описал. К сожалению, GPL явно тормозит дальнейшее развитие GCC. "Принципы важнее"? © Ричард Столман — возможно, не берусь судить. Это уж точно вопрос политический.

Думаю, точные причины менеджеров Apple могут знать только они сами — да и то может забыли за давностью лет. :-)


То, что я написал (про "секретное железо") я лично слышал от людей из Apple на встрече по GCC в 2007 году. Так что я как чукча — что вижу, то и пою.

Есть флаг -S, который поддерживают абсолютно все компиляторы. И нет, он точно не "отсохнет". :-)


Что касается бинарного кода — не забывайте, что исполняемый файл создаёт не компилятор, а линкер. И он ещё как может поменять бинарий! — вплоть до замены инструкций (например, длинные переходы / вызовы на короткие).

Если честно, я немного затрудняюсь с ответом… Что именно нужно пояснить?


Про особенности GPL можно почитать здесь.

Вот про TensorFlow (есть и видео — поищите на youtube)

Проще всего внутри цикла сделать что-то полезное (а иначе зачем он вообще нужен?)


Если нужен пустой бесконечный цикл — действительно есть смысл прочитать хабрапост tyomitch.

На эту тему написаны тонны сообщений, но в общем-то не думаю.

valexey, спасибо за дополнение! Хотя, конечно, Ada в 2020 не модный и не хипстерский. :)
Это при использовании достаточно старого clang (6.0). В новых версиях может быть всё по-другому. Как бы там ни было, полагаться на неопределённое поведение — ошибка!
Если использовать gcc, то программа напечатает «begin» и войдёт в бесконечный цикл.

Если использовать clang, то программа напечатает «begin» дважды (!) и дальше упадёт в кору. Не спрашивайте. Хорошо хоть демоны не появились…
Наверное, говорить «лучше» всё же некорректно (зря я использовал это слово… оно в принципе очень скользкое).

Думаю, правильней было бы привести те же аргументы, что я привёл в самом начале раздела «LLVM против GCC». Благодаря «либеральной» лицензии, интерес к LLVM версии OpenMP библиотеки (libomp) сейчас явно больше, чем к GNU версии (libgomp) — и её проще использовать в проектах с частично закрытым кодом, в том числе для поддержки акселераторов при гетерогенных вычислениях. Соответственно, в libomp больше инвестиций — со всеми вытекающими.
Да, Вы правы — исправил. Спасибо за багфикс! :)
Спасибо Yermack за дополнение! — компилятор Julia тоже сделан на основе LLVM.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity