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 ()

opennet: Эксперимент по пересборке Debian с использованием Clang показал неожиданно хорошие результаты lor: Debian: clang способен заменить gcc

в заголовке нвовости не хватает слов: сенсация!!!111, ты не поверишь!!!

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

Кроме ADA и перечисленных там ещё другие поддерживаемые языки есть.

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

Паскаль на GCC практически не используют, да. А вот фортран - вовсю.

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

Только как компилятор C. Просто не надо забывать, сто clang - это всего лишь компилятор и не более того. GCC - это целая среда с бэкендами. Коллекция компиляторов. Для GCC можно написать бэкенд. Для Clang - фигушки, так как это только компилятор.

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

Паскаль (именно как таковой, а не дельыёвый) иногда и как встраиваемый язык применяется. Яркий пример - Inno Setup.

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

Buy> Ну так пусть меняют, что стоит сделать еще одну официальную сборку и реп с clang? Не плохой эксперимент.

Ничто. Просто нужны люди, которые будут этим по собственной воле заниматься.

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

Stalin> Только в новостях на главной ни разу не читал про то, чем же отвечают авторы гцц? Какие кардинальные фичи добавляют, чтобы через пару лет не начался массовый уход на кланг?

Кардинальные фичи не нужны. Сейчас для проекта GCC важна оптимизация с причёсыванием кода для оптимизации разработки и отлавливания багов, в частности надо подстраиваться под современные реалии типа многопоточных вычислений. Clang пока догоняющий - для мелких проектов сойдёт, но не более того.

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

franchukroman> Это же традиционно для ЛОРа. Я не хочу закопать GCC, но архитектура clang/llvm выглядит намного адекватнее.

Микроядра тоже красиво выглядели. Но единственной жизнеспособной реализацией оказалась QNX. А гибридных жизнеспособных реализаций ОС оказалось куда больше. Эстетика любых уровней не подразумевает применимость.

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

fang> Расскажи это профессиональным разработчикам, которые компилируют большие программы туеву хучу раз на дню

Опять же - если проект небольшой, то clang подойдёт. Если проект большой и крупный - то есть и билдсерверы, и системы контроля версий, а то и системы непрерывной интеграции с ночными сборками. Там clang никоим боком не лучше GCC. А если программа под несколько платформ - то clang жёстко сливает в тех случаях. Другое дело, что отдельные кусочки кода можно писать и тестировать сначала в clang, а потом заливает результат в общий репозиторий кода и оставляем собираться на билдсервере. Но и тут GCC намного медленнее себя не покажет.

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

f2c

Упоролся, чтоле? Хоть для чего он знаешь?

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

Микроядра тоже красиво выглядели. Но единственной жизнеспособной реализацией оказалась QNX.

о как, а что насчёт macos и windows?

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

clang - это всего лишь компилятор и не более того. GCC - это целая среда с бэкендами. Коллекция компиляторов. Для GCC можно написать бэкенд. Для Clang - фигушки, так как это только компилятор.

ты там ничего не попутал, не?

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

кто действительно использует фортран, тот конпелирует его Intel'овским продуктом

...или сано-оракловским: у интеля пока 128-разрядной плавающей арифметики нет, и соответсвие стандартам языка у санстудии лучше. Ну, санстудии для вендов нету, ну дак кто же расчётные задачи под вендами гоняет?

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

Не знаю никого кто бы писал на фортране новый код.

Ну, сейчас у мышей популярно жрать кактусы.

И да, фортрановский код экспортируется Mathematic'ой от вольфрама.

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

Быстрая сборка нужна разработчикам программных продуктов и тестерам. Быстрая пересборка ПО из изменяемых исходников позволяет сократить время на отладку и анализ проблем компиляции, за то же время сделать больше циклов правка-компиляция-запуск-разбор результатов.

Fast-to-market, блжд. Больше говновендозного быдлоговнокода за час работы, вычислительные мосчности счас дешевле человеческого труда.

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

Неа, последнее годы в основном на Си пишут, а некоторые даже на Си++.

Фортрана не знают. А на нём производительность при разработке выше, и код более эффективный: сам-то язык давно превратился фактически в клон Алгола-68.

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

о как, а что насчёт macos и windows?

обе гибридные

я бы сказал - не монолитные, сделанные как раз по канонам микроядерной архитектуры в той части где это уместно, так что не надо про «красиво выглядели» и про «ни одной реализации»

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

я бы сказал - не монолитные,

Они гибридные во все поля. В макоси монолит Darwinа поверх ядра, а в винде... там хз что

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

я бы сказал - не монолитные,

Они гибридные во все поля.

это типа противоречащие друг-другу фразы?

В макоси [..] поверх ядра

да пофиг что там поверх ядра, мы про архитектуру ядра говорим

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

Еще двое упоролись с самого утра. 128 арифметика совместима с 1/9000% библиотек. А конпелятор... Еще бы pg вспомнили.

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

Я этот эффективный код всю ночь сношал. Видимо, у авторов производительность разработки была выше производительности отладки.

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

4.2

Если кто в спячке с мезозоя, пора проснуться.

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

Цитату приведи

Смотрим первые строчки таблицы «list of errors»: http://clang.debian.net/status.php?version=3.0&key=UNDEF_REF

1) The most common issue is about the the inline behavior. clang is following by default the C99 standard while gcc promote GNU89.

2) An other issue is that gcc is that gcc optimizes the call to some functions at -O0 (causing -lm to be not necessary)

http://clang.debian.net/status.php?version=3.0&key=USE_OF_UNDECLARED_IDEN...

This problem is that g++ accepts code which should be refused.

И еще по многим пунктам gcc принимает невалидный код - либо расширения, либо невнимательность.

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

128 арифметика совместима с 1/9000% библиотек.

Под санстудию на *спарки* более или менее всё нужное есть. Интеловская (программная) 128-разрядная арифметика у них ни с чем не совместима, да.

А конпелятор...

Вендузятнег детектед. Остальные (в том числе Аргонна) юзают и не шуршат.

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

Я этот эффективный код всю ночь сношал. Видимо, у авторов производительность разработки была выше производительности отладки.

1. Вы о чём?

2. Если о коде самой санстудии, то я Вам в какой-нибудь личной переписке мог бы объяснить, в чём дело.

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

Если о коде самой санстудии, то я Вам в какой-нибудь личной переписке мог бы объяснить, в чём дело.

а почему не тут? мне, например, тоже интересно :)

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

да пофиг что там поверх ядра

А арматуру обмотанную изолентой можно назвать оружием ближнего боя из композитных материалов?

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

После перехода Xcode на llvm я нашел два очень редко появляющихся бага компилятора. Как я долго с этим мучался-пиздец. Gcc куда стабильней

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

Почему все так хотят закопать gcc? Чем это оно так провинилось?
Да не нужно никому его закапывать, альтернатива просто нужна, так как конкуренция пойдёт на пользу gcc.

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

Гнутые сами виноваты. С 4.2.2 поменяли лицензию на GPLv3. Из-за чего эппл отказались от gcc в своём Xcode и стали впиливать clang.
Как вы думаете, из-за какого пункта GPLv3 Apple отказались от gcc?

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

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

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

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

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

g77->gfortran — адъ и погибель. Еще в legacy support санстудио не хватало.

У санстудии, в отличие от жисиси и интела, с соблюдением стандартов фортрана всё хорошо.

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

А фортран?

Отстань от трупа

А паскаль?

FPC, очевидно

А другие языки?

Какие? Простехоспаде, GCJ?

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

На этапе разработки куда важнее иметь адекватный вывод ошибок и скорость пересборки, чтобы тот же eclipse-cdt не заикался на файлах.

Вот тут llvm даст фору всем - адекватное и информативное сообщение об ошибках. GCC до такого далеко. Плюс статический анализатор кода. Плюс возможность создания качественного автокомплита (тот же clang_complete для vim).

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

Вопрос в том, насколько там C++ хорош и сколько надо с++ного рантайма с собой тащить.

В xcode clang является компилятором по умолчанию.

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