После 6 месяцев разработки выпущена (http://lists.cs.uiuc.edu/pipermail/llvm-announce/2010-April/...) новая версия 2.7 проекта LLVM (http://llvm.org/releases/2.7/docs/ReleaseNotes.html) (Low Level Virtual Machine) - GCC совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный байткод RISC подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации). Сгенерированный платформонезависимый псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.В новом релизе существенно улучшилось качество генерируемого кода, расширен состав генерируемой информации для отладчиков, а также сделано большое количестве изменений в инфраструктуре, самая важная из которых - это то, что Clang теперь может (http://www.opennet.me/opennews/art.shtml?num=25305) успешно компилировать свои собственные исходные тексты, что в случ...
URL: http://lists.cs.uiuc.edu/pipermail/llvm-announce/2010-April/...
Новость: http://www.opennet.me/opennews/art.shtml?num=26404
Есть с октября 2009 регулярно обновляемый порт LLVM 2.7 в FreeBSD: http://www.freshports.org/devel/llvm-devel/
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
В любой другой операционной системе.
Когда уже сделают поддержку исключений в Windows? Единственное, что мешает полноценному кросс-платформенному использованию.
Patches are welcome (c) :)
>Когда уже сделают поддержку исключений в Windows?Кому нужен этот кривой Windows, тот пускай и делает :-)
Скажи это всем клиентам. Сними розовые очки.
>Скажи это всем клиентам. Сними розовые очки.То есть _твоим клиентам надо, а сделать -- "пусть скорее уж" кто-нибудь другой, я правильно уловил твою мысль? Бизнес процветает, малацца! Вот это всё и расскажи этим самым "клиетам", выствляя счёт.
Эта задача очень нетривиальна, я знаю пару человек которые начинали делать но особо не продвинулись(люди очень грамотные). Не сделают разработчики, буду пользоваться другим, что поделать. Я просто выразил мнение о фиче, которой лично мне не хватает в llvm. Вы сами много исправляли багов/реализовали фич в компиляторе которым пользуетесь(если пользуетесь), а также операционной системе и приложениях?
Да и вообще речь шла о Windows. Он хоть и кривой, но люди для которых пишется ПО как ни странно сидять под виндой. Поэтому я изначально думаю над тем, чтобы софт был кросс-платформенный.
Ух какие качественные и тонкие Micro Тролли сегодня на опен нете
А можно в Clang компилировать код для Linux в Windows и наоборот? Т.е. возможна ли кросскомпиляция, в том числе для разных процессоров?
А зачем ? :-)
>А можно в Clang компилировать код для Linux в Windows и наоборот?
>Т.е. возможна ли кросскомпиляция, в том числе для разных процессоров?Да. Хотя надеюсь Вы понимаете отличия компиляции программы в код от линковки с динамическими/статичесикими библиотеками. Если первое - на ура, то второе - только в полном окружении пусть и на другой системе.
PS: В этом смысле жгут NetBSD-шники. У них система собирается на любом другом юниксе и не требует наличие чего-либо - само всё бутстрапит из шелла.
Можно ли с помощью Clang в Windows скопилировать код для Linux Microblaze или просто двоичный код для некоторой функции, который потом динамически загрузить Microblaz'ом?
>Можно ли с помощью Clang в Windows скопилировать код для Linux Microblaze
>или просто двоичный код для некоторой функции, который потом динамически загрузить
>Microblaz'ом?Да. На самом clang умеет делать универсальные бинарники для нескольких архитектур сразу.
Но вы учитывайте, что бинарный файл имеет определённый формат который обеспечивает существование нескольких файлов в универсальном архиве, и, например mach-o это умеет, а elf или pe - нет. И любой файл слинкован с динамическими либами, которых может не быть на целевой системе, например в linux вообще отсутствует понятие framework, и загрузчик не умеет с ними работать. Кросскомпиляция без проблем используется, если у вас одна система на нескольких разных машинах, как например Mac OS X. Хотя, если использовать кроссплатформенное окружение (OpenStep), то почему нет.
1) Можно ли с помощью Clang скомпилировать машинный код для некоторой функции (без всяких обёрток в виде dll/so), который потом динамически загрузить?
2) Можно ли с помощью Clang скомпилировать промежуточный байт-код для некоторой функции, который потом скомпилировать при загрузке в машинный код и использовать скомпилированную функцию в программе?
1
Насколько я знаю, компилируются единицы трансляции, т е файлы, из которых вы можете её экспортировать, если она с внешней линковкой, мне не ясен ваш вопрос,2
о загрузке см. 1, скомпилировать в IR и затем исполнять на виртуальной машине llvm можно, это называется jit,clang file.c -c -emit-llvm -o file.bc
lli file.bc
>1
>Насколько я знаю, компилируются единицы трансляции, т е файлы, из которых вы
>можете её экспортировать, если она с внешней линковкой, мне не ясен
>ваш вопрос,Например, llvm позволяет во время выполнения программы конструировать функцию в памяти в виде IR, потом компилировать IR в машинный код, а затем через указатель на блок памяти, содержащий этот машинный код, вызывать функцию, как любую другую функцию вашей программы. У меня вопрос: позволяет ли подобное делать Clang, т.е. компилировать функцию Си/С++ в IR (подобно ручному конструированию IR в llvm) в память во время выполнения программы? Если да, то как примерно это делается?
>2
>о загрузке см. 1, скомпилировать в IR и затем исполнять на виртуальной
>машине llvm можно, это называется jit,
>
>clang file.c -c -emit-llvm -o file.bc
>lli file.bcСпасибо за наводку, документацию на clang пока не читал.
Не знаю, я не работал с IR, смотрите документацию в комплекте clang, или лучше спросите llvm mailing list.
А можно ли компилировать ядро?
:-)
>А можно ли компилировать ядро?
>:-)FreeBSD'шники уже всю систему компилируют. http://wiki.freebsd.org/BuildingFreeBSDWithClang
Логотип у них какой-то грозный... Всем бояться! :)
Логотип спонсировал Apple. Как и всё остальное.
Как этой штукой компилить код, поддерживающий OpenCL? Есть какие-то плагины?
Но нигде не нашел ни статьи ни примеров, как это делать...
...есть только некоторые упоминания об этом...
Спасибо, отличная новость во всех смыслах :)
жду не дождусь, пока оно станет в продакшн. вкусные плюхи однако там есть.