LINUX.ORG.RU

Debian: clang способен заменить gcc

 , ,


0

1

Sylvestre Ledru провел эксперимент по сборке репозитория Debian с помощью компилятора clang. Вопреки ожиданиям, результаты оказались обнадеживающими:

На мой взгляд, clang уже стабилен и достаточно хорош для пересборки большинства пакетов Debian, хотя многие из них потребуют незначительных исправлений.

В ближайшие несколько лет, учитывая лучшие инструмены статического анализа кода, clang может заменить gcc/g++ как компилятор C/C++ по умолчанию в дистрибутивах Linux и BSD.

Разработчики clang продвигаются очень быстро: с версией 2.9 не собиралось 14.5% пакетов, а с 3.0 - 8.8%. Сделаны существенные шаги: chromium/chrome собираются по умолчанию с помощью clang, Xcode по умолчанию предоставляет clang, FreeBSD работает над переходом с gcc на clang и т. д.

Однако для Debian важно, чтобы clang справлялся со всеми поддерживаемыми архитектурами (11 официальных, 6 неофициальных).

Собрать не удалось 1381 пакет из 15658. Самая частая причина неудачи - более строгое следование стандартам со стороны clang.

Найденные баги будут отправлены в багтрекер Debian вместе с патчами. Автор исследования продолжит тестировать новые версии clang.

>>> Подробности

★★★★

Проверено: Shaman007 ()

Пора бежать с Debian GNU/Linux на что-нибудь менее «мейнстримовое». пора. И да, никакой вменяемой поддержки генерации не-x86 кода в clang и llvm не наблюдается (не знаю про планы, но сейчас с этим очень и очень плохо, почти одноархитектурное это всё).

powerpc
()
Ответ на: комментарий от anonymous

LLVM поддерживает статическую генерацию кода для x86, x86-64, ARM, PowerPC, SPARC, MIPS, IA-64, Alpha.

Итого 8. Надо 11 как минимум. Эпл будет оплачивать поддержку ещё 3 или 11 экзоплатформ?

yyk ★★★★★
()
Ответ на: комментарий от yyk

Итого 8. Надо 11 как минимум. Эпл будет оплачивать поддержку ещё 3 или 11 экзоплатформ?
Что-то мне подсказывает, что если будет в этом реальная необходимость, то владельцы машин на PA-RISC и ESA/390 вполне в состоянии оплатить поддержку своего железа. Какая там третья архитектура?

RussianNeuroMancer ★★★★★
()
Ответ на: комментарий от powerpc

И да, никакой вменяемой поддержки генерации не-x86 кода в clang и llvm не наблюдается (не знаю про планы, но сейчас с этим очень и очень плохо, почти одноархитектурное это всё).

Ну да, а разрабы и не знают - «An easily retargettable code generator, which currently supports X86, X86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, SystemZ, and XCore.»

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

An easily retargettable code generator, which currently supports X86, X86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, SystemZ, and XCore

И на какой из этих архитектур LLVM является основным компилятором в какой-нибудь системе?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

И на какой из этих архитектур LLVM является основным компилятором в какой-нибудь системе?

Речь была о том, что llvm не поддерживает ничего кроме x86. Я показал, что это не так. А где он там дефольтный, меня не волнует.

andreyu ★★★★★
()
Ответ на: комментарий от tailgunner

И на какой из этих архитектур LLVM является основным компилятором в какой-нибудь системе?

На первых четырех. Но речь шла об опровержении 4.2 «поддержки генерации не-x86 кода в clang и llvm не наблюдается» и «одноархитектурное это всё».

baka-kun ★★★★★
()
Ответ на: комментарий от andreyu

Речь была о том, что llvm не поддерживает ничего кроме x86.

Речь была о том, что «нет вменяемой кодогенерации». «Retargettable code generator» есть в любом современном компиляторе, вопрос в его качестве («вменяемости»).

tailgunner ★★★★★
()
Ответ на: комментарий от baka-kun

currently supports X86, X86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC

И на какой из этих архитектур LLVM является основным компилятором в какой-нибудь системе?

На первых четырех

PowerPC64? Это какая ОС?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

И на какой из этих архитектур LLVM является основным компилятором в какой-нибудь системе?

Очень скоро станет как минимум на i386/AMD64 и, возможно MIPS

yurkis
()
Ответ на: комментарий от yurkis

FreeBSD настолько уверенно чувствует себя на MIPS, что собирается перейти на LLVM там? Почему не на ARM - второй по отработанности платформе для LLVM?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

FreeBSD настолько уверенно чувствует себя на MIPS, что собирается перейти на LLVM там?

У FreeBSD лучше поддержка MIPS чем ARM, INHO. Тут Juniper код подгоняла не так давно. Логично было бы апи наличии clang в базовой системе им и для мипсов собирать (или доделать поддержку mips). Но в mips порт не влазил, поэтому могу ошибаться.

yurkis
()
Ответ на: комментарий от yurkis

У FreeBSD лучше поддержка MIPS чем ARM, INHO. Тут Juniper код подгоняла не так давно.

Тогда понятно, спасибо.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

PowerPC64? Это какая ОС?

Все так быстро забыли о Power Mac G5 и Xserve G5? Шести лет ещё не прошло, как последние покупали, пашут как миленькие.

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

PowerPC64? Это какая ОС?

Все так быстро забыли о Power Mac G5 и Xserve G5?

Все забыли (а кое-то и не знал), что покойники были 64-битовыми и на Clang.

tailgunner ★★★★★
()
Ответ на: комментарий от baka-kun

Все так быстро забыли о Power Mac G5 и Xserve G5? Шести лет ещё не прошло, как последние покупали, пашут как миленькие.

и с чего там «LLVM является основным компилятором»? там и Xcode четвертый c llvm уже не встанет - Apple официально забила на PPC

vaino
()
Ответ на: комментарий от vaino

и с чего там «LLVM является основным компилятором»? там и Xcode четвертый c llvm уже не встанет

Я когда Xcode 3.2.5 перестал быть «с llvm»?

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

Я когда Xcode 3.2.5 перестал быть «с llvm»?

ага, посмотри его системные требования - внезапно обнаружишь Mac OS X 10.6, которые ни разу на PPC не встанет

vaino
()
Ответ на: комментарий от vaino

ага, посмотри его системные требования - внезапно обнаружишь Mac OS X 10.6, которые ни разу на PPC не встанет

Ты это мне рассказываешь, КО?

Просто 3.2.5 — последняя версия, которая официально позволяет создавать UB. Или ты думаешь, что собирать PowerPC бинарник обязательно на том же процессоре? :)

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

Или ты думаешь, что собирать PowerPC бинарник обязательно на том же процессоре? :)

нет, но даже если кросскомпиляцию принять за основной метод разработки под платформу, которая недавно была самостоятельной, - llvm там не основной компилятор, а экспериментальный

vaino
()
Ответ на: комментарий от tailgunner

От чего?

А от чего освобождает? :)

Или, «in multa sapi­entia mul­tus sit mae­ror»?

baka-kun ★★★★★
()
Ответ на: комментарий от tailgunner

Речь была о том, что «нет вменяемой кодогенерации». «Retargettable code generator» есть в любом современном компиляторе, вопрос в его качестве («вменяемости»).

Про качество не знаю, желающие могут проверить сами. Но для armv6 и armv7 все хорошо.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Речь была о том, что «нет вменяемой кодогенерации». «Retargettable code generator» есть в любом современном компиляторе, вопрос в его качестве («вменяемости»).

Про качество не знаю

То есть вменяемой кодогенерации под неинтересные ябблу платформы может и не быть.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

То есть вменяемой кодогенерации под неинтересные ябблу платформы может и не быть.

Может быть, а может и не быть. Мне не интересно гадать.

andreyu ★★★★★
()
Ответ на: комментарий от tailgunner

В их списке рассылки участвуют также люди из Intel и AMD. Плюс многие используют Linux, в качестве основной платформы.

Я бы сказал, что и в GCC не было поддержки многих платформ, если бы они не были кому-нибудь нужны. В таком случае, они нужны будут напишут и включат в основную ветку.

anonymous
()
Ответ на: комментарий от anonymous

В их списке рассылки участвуют также люди из Intel и AMD. Плюс многие используют Linux, в качестве основной платформы.

Про Linux и платформу x86 всё понятно.

и в GCC не было поддержки многих платформ, если бы они не были кому-нибудь нужны. В таком случае, они нужны будут напишут

Вот как раз насчет «напишут и включат» есть сомнения. Компилятор под BSD-лицензией, так что написать (и выложить в открытый доступ) бэкенд может либо университет, либо крупная компания. Apple так и сделала. Но кто будет следующим?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

LLVM пилят и люди из Google, для NaCl, еще в основной ветке уже присутствует такая хитрая архитектура как XCore.

Qualcomm пока пилит, как GCC так и LLMV и думают полностью переключаться на него, после того как выведут его на сравнимый уровень производительности (на последней конференции говорили о 90%, по сравнению c GCC).

anonymous
()
Ответ на: комментарий от anonymous

LLVM пилят и люди из Google, для NaCl

NaCl разве не x86-only?

Qualcomm пока пилит, как GCC так и LLMV и думают полностью переключаться на него

Это печально.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.