После года разработки опубликован релиз свободного набора компиляторов GCC 10.1, первый значительный выпуск в новой ветке GCC 10.x. В соответствии с новой схемой нумерации выпусков, версия 10.0 использовалась в процессе разработки, а незадолго до выхода GCC 10.1 уже ответвилась ветка GCC 11.0, на базе которой будет сформирован следующий значительный релиз GCC 11.1...Подробнее: https://www.opennet.me/opennews/art.shtml?num=52903
А я еще на седьмой версии сижу, пора наверное переходить
9 очень здоровская, особенно если ты используешь pgo и lto -- любую программу можно оптимизировать более эффективно, чем это потенциально сделает O3 со всякими ручными unroll-all-loops (их надо подбирать вручную и отключать векторизацию тоже вручную, иначе будут сплошные просадки относительно O2). Я бы подождал багфиксов в 10 на твоём месте.
LTO работает даже в 6-й версии. PGO - с ним канители многовато. А вот LTO и правда вещь: код и меньше, а в лучшем случае и быстрее. Выкидывает эдак четверть объема кода на ровном месте - без потерь в чем либо вообще.
Для pgo в 9 надо просто 1 раз скомпилировать медленный билд, запустить его и прогнать по всему коду, после чего перекомпилировать 2 раз заменив profile-generate на profile-use получив быстрый билд. Куда уж проще? Именно PGO даёт всё это "десяситысячекратное" ускорение и эффективную оптимизацию (level-3 оптимизации применяются только там, где они нужны). До 9 получить результат было сложнее (или у меня не получилось с 8 почему-то, я уже собирал иначе, но это было ещё раньше). Lto больше интересен для плюсовых программ в силу специфики. Кроме того, нужно учитывать, что и lto постоянно совершенствуется, однако при этом (скорее даже благодаря) там регулярно случаются баги и регрессии (они случались всегда).
все уже давно на clang +llvm перешли
Все модно-стильно-молодёжные.
если за модой то рекоменду радикальную альтернативу - 8c, tcc.
Что ни коммент этого "эксперта", то просто праздник какой-то.
Иногда даже вычищать жалко.
> перешлиДля хорошего кода без разницы.
Все - это кто? Эппл и 0.01% любителей freebsd?
Это местные эксперты так шутят просто.
Маня, открою тебе тайну - clang не состоялся как компилятор. И котируют его за компилятор, только всякие бездарные рабы(типа бздюнов), школиё и те, у кого нет выбора.
Это тормозное убогое поделие уже с третьей ветки разваливается на части. Развития ноль, деградация в каждом новом релизе. Оно уже более чем в 2раза тормознее гцц, оно генерирует мусор, оно не может в язык. Оно постоянно сегфолтится. Тормоза constexpr там чинит какой-то левый студент форфан. Концепты ваяет левый индус. libcxx в дерьме. Сообщения об ошибках, на чём оно хайпилось, там настолько дерьмо, что читать их в принципе невозможно.Когда у меня что-то происходит и шланг мне пишет ошибку, которую я сам не понимаю и приходится читать сообщение - это сделать невозможно. Приходится собирать гцц и читать нормальное сообщение, а не мусор бездарный.
Ключевое тут то, что гцц развивается. Всё больше и лучше. В шланге за пару лет не поменялось ничего. Какое-то примитивное минорное дерьмо.
Поэтому clnag - это только языковые сервисы. Но никак не компилятор. Хотя даже там, если так пойдёт и дальше - оно сдохнет. Конкуренции нет, гцц декларируется только как компилятор.
Но в вендорам похрен. Гугл там собирает своё легаси-дерьмо и ему нормально. Из ведра уже давно всё нативное выпиливается и гугл говорит явно "не дадим писать на С++ под ведро - страдайте".У эпла тоже самое. objc выпиливается, как и любая другая нативщина. В xcode и поддержка С/С++ нахрен не упала, только для кого-то легаси дерьма.
Ни первому ни второму что-то за пределами aarch не нужно.
Сатический анализатор шлага мне помогает не один год. А в gcc его только-только завезли. Но в gcc 10.1 баг в линкере, так что мне он пока подходит.
Это с каких это пор линкер стал входить в пакет GCC? Что-то подсказывает, что линкер в составе binutils.
лови хипстора, gcc 4.9 форевер
Почему не 2.7.2.3, еретик?!
2.96 RedHat Edition :)
Не конает, поелику kgcc!
egcs же.
> Добавлен экспериментальный режим статического анализаСтранно, в clang это уже лет шесть-семь как есть.
Странно, что проблему в openssl нашёл PoC анализатор в gcc, и не нашёл 6-7 летний анализатор шланга. А, нет, не странно.
странно, что за 6-7 лет анализатог шланга нашёл игого сколько проблем, а gcc одну. а нет, не странно
Понимаешь, решить проблему с кормлением хомячка в домашних условиях и решить проблему со строительством небоскрёба - это немножко два разных уровня проблем.
Действительно, Вы правы. Если кормить дельфинов - то они ответят тебе взаимностью и будут катать вас как на лыжах. А если кормить акул - то они будут сыты и не будут жрать дельфинов.Надеюсь, правильно понял вашу аллегорию?
>А если кормить акул - то они будут сыты и не будут жрать дельфинов.Деточка, это дельфины жрут акул. Учи мат.часть.
> Деточка, это дельфины жрут акул. Учи мат.часть.Поколение пепси и LLVM подросло.
Иди соси своё пепсиhttps://zen.yandex.ru/media/different_angle/pochemu-akuly-bo...
https://otvetprost.com/834-pochemu-akuly-boyatsya-delfinov.html
> Реализована возможность прямого указания расширенных символов в идентификаторахА как это теперь чистить/детектить?
Так же, как ты чистишь код от циклов while().
@item -fextended-identifiers
@opindex fextended-identifiers
-Accept universal character names in identifiers. This option is
-enabled by default for C99 (and later C standard versions) and C++.
+Accept universal character names and extended characters in
+identifiers. This option is enabled by default for C99 (and later C
+standard versions) and C++.https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff;f=gcc/doc/cppo...
A long time ago, in a galaxy far, far away…Ситрипио: О, это С++ исходники на древнеситхском, боюсь тут я вам помочь не могу.
По Дамерон: Как так-то, ты же знаешь 9 млн. языков?... =)
Самое важное изменение не написали - наконец-то примитивы стандартной библиотеки нечувствительны к переводу часов и используют MONOTONIC_CLOCK. Бесило жуть.
> Бесило жуть.неа
Vim компилируется?
Слышал в десяточке изменилось UB на которое был завязан Vim
electron компилируется, остальное не нужно. там тебе и редакторы, и сообщения, и браузеры, чё хочешь
Electron и бибикать научился?
Не только бибикать, но и голос твой записывать и распознавать в скаепе
Откуда? Конечно нет. Тебе надо. Тебе надо 15 разных плагинов поставить конфликтующих друг с другом. Потом написать километр json лапши чтобы это настроить. Тогда да, может и заработает. Хотя без облака врятли.
Когда Emacs превратился в Electron?
И куда потеряли недостающее звено -- Emactron?
Надеюсь, RMS тщательно выбирал человека, которому передал бразды управления Emacs.
https://github.com/vim/vim/pull/5580
:version
VIM - Vi IMproved 8.2 (2019 Dec 12, собрано May 4 2020 00:00:00)
Заплатки: 1-694
С изменениями, внесёнными <bugzilla@redhat.com>
Скомпилировано: <bugzilla@redhat.com>
...
Параметры компиляции: gcc -c -I. -Iproto -DHAVE_CONFIG_H -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_GLIBCXX_ASSERTIONS -fexceptio
ns -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-c
c1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY
_SOURCE -D_FORTIFY_SOURCE=1
gcc версия 10.1.1 20200507 (Red Hat 10.1.1-1) (GCC)(хотя собирали, конечно, 10.0)
Интересно кто то пробовал новые фишки с++ concepts, ranges. Последние рельно могут стать полезной фитчей для повседневного использования, но сейчас я убил кучу времени на элементарные вещи типа
vector<int>v{1,8,2};
ranges::sort(v);
auto x = v | ranges::transform([](int i){return std::to_string(++i);});
Вообщем это типа linq в C# только пока то еще темник.
> я убил кучу времени на элементарные вещиЕсли есть, кому за него платить, Вам повезло.
Не знаю, при чём тут linq, но эти ranges - это утянутое в плюсы творение Александреску и для красивой реализации требуют несколько более мощную и осмысленную шаблонную систему, чем в плюсах. Собственно, примерно поэтому он в D и сбежал (тогда, правда, в плюсах совсем плохо в этом плане было). В общем, не думаю, что в плюсах оно полечится
Круто, а я всё еще юзаю~$ gcc -v
gcc version 8.3.0 (Ubuntu 8.3.0-6ubuntu1~18.10.1)
Капец ты ретроград.
что ж мне тогда делать с 4.5 и 2.95... (
А где вы версию 2.95 нашли то?
Чего только не придумают лишь бы msvc не использовать.
Он уже научился хотя бы в полноценный C99?
Шито?)
Там и C11 неполноценный, вернее ограниченный:<
Как пропатчить MSVC под FreeBSD?
Сначала установи винду.
На тостер?
Что угодно, только бы не использовать msvc
>Реализована возможность прямого указания расширенных символов
>в идентификаторахНо зачем?!
Если допустить до программирования тех, кто не владеет английским, это позволит снизить цены на рынке труда. Ничего личного, только бизнес.
> кто не владеет английскими по-быстрому переводить для них техническую документацию на родной язык?
сами себе переведут если нужно будет.Если честно, то хорошую документацию на родном языке читать очень приятно. От индусского английского уже блевать тянет.
странная логика получается, если почитать эту ветку: перевести идентификаторы с родного на английский они не в состоянии, зато документацию они сами переведут.>От индусского английского уже блевать тянет.
мой английский не настолько хорош, мне без разницы. И это уж точно лучше, чем россыпь иероглифов
> странная логика получается, если почитать эту ветку: перевести идентификаторы с родного
> на английский они не в состоянии, зато документацию они сами переведут.ну я бы не стал называть тот английский из кода английским. Это скорее какой-то програмистский суржик, ну или код. Если писать на чистом английском (хотя бы названия юнит-тестов), то есть ощущение, что вас просто не поймут.
Поэтому индетификаторы как правило ограничены узким кругом всем понятных слов. Как только начинается шекспировское творчество - беда
Это всё ужасно, да. Но всё равно лучше 1С ))
> Если честно, то хорошую документацию на родном языке читать очень приятно.Ну я и писал http://nightly.altlinux.org/docs/mkimage-profiles.html сразу по-русски. Кому бывало надо и недоставало робоперевода -- тем переводил нужные кусочки.
я уже им все перевел!
> и по-быстрому переводить для них техническую документацию на родной язык?Какая документация? Методичку с основами синтаксиса прочёл - и вперёд, фигак-фигак-фигак в продакшон.
ага, а проблема что никто кроме этих альтернативно-одаренных не может ничего поправить в их коде, потому что у него на клавиатуре нет этих закорючек - вообще не проблема, потому что этот код китайской макаки все равно нельзя исправить, только выбросить и переписать заново (чего вы ждали от человека, неспособного ДАЖЕ переменную назвать латинницей) - кстати, всегда так и делали.
>Если допустить до программирования тех, кто не владеет английским,Translitom peremennye i bez nacional'nyh alfavitov vsegda mozhno bylo.
>>Реализована возможность прямого указания расширенных символов
>>в идентификаторах
> Но зачем?!Что бы специалисты по рогам и копытам не забивали себе голову Питонами и программированием, можно специально для них создать предметно-ориентированный язык (где "рога" и "копыта" - это ключевые слова), который транслируется в Си.
больше всего лулзов словил на символе c написанным кириллицей. на шланге компилится, на гцц - нет. теперь похоже этот символ останется там на веки вечные, если конечно не указать специально опцией.
Мне всегда много лулзов (часы лулзов) доставляют перепутанные c и с (это случается чаще, чем можно ожидать).
Причём, не только в текстах программ. Например, в спецификациях электронных компонентов.
Да, всегда удивлялся почему начав писать, например, "сщтт" многие юзеры стирают только "щтт" и дописывают "onnect". Эту ошибку практически нереально встретить если она не в начале слова или после_очеедного_подчёркивания.
> Да, всегда удивлялсяТак это ж слепой однопальцевый, вот и экономят...
Кидаю мануал для сборки из исходников. Сложность как в windows установка и удаление программ. Не забываем только изменить название архива и вставлять sudo перед коммандами.У самого Debian 9.Удачи.
https://linuxhostsupport.com/blog/how-to-install-gcc-on-debi.../
> make install/blog/how-to-make-slackware-from-debian-9
PS: в приличных местах код рутом не собирают: привычка чревата максимально неприятными последствиями при ошибке апстрима вроде http://github.com/MrMEEE/bumblebee-Old-and-abbandoned/issues... или configure-трояне, как вот ещё в https://opennet.ru/opennews/art.shtml?num=1741
PPS: понимаете, "как в виндовс" -- это обычно без применения головы. Уже поэтому стоит вместо слепого копирования подхода посмотреть, а нет ли чего получше, и уж тем более не пропагандировать подобное по непониманию разницы линуксов, особенно патриархов репозиториестроения вроде дебиана, и помойки next-next-done. Научитесь выбирать подходящие инструменты для стоящих задач, а не тащить на хост каждую первую блестяшку даже до того, как в ней поправят традиционные косяки версии x.0. Пожалуйста!
---
P^3S: забавно, комментарий #63 был с того же src ip. Пожалуй, я это linuxhostsupport буду при (маловероятной) встрече обходить по другой стороне дороги -- по крайней мере пока (случайно) не увижу хотя бы одну статью оттуда уровня не ниже шимпанзе. :(
и вообще в рабочей системе лучше не собирать.
для по-быстрому собрать чего-нибудь debootstrap --variant=buildd --arch amd64 focal mychroot
для не по-быстрому тем более - если прожэкт настоящий, то вообще на выделенной машине.
Но 63 это твой же комментарий.
Наконец можно побыть Маском и назвать переменную
static int XÆA12;
>улучшениями связанными с будущим стандартом языка Си (C2x)Последний стандарт языка Си - C18. Пора остановится, что там ещё надо стандартизировать? Сишка - это же суровая процедурщина.
Горшочек не вари! Горшочек не вари! Горшочек не вари!
Например, можно пространства имён ввести, из Dшечки позаимствовать вложенные функции.
Да, от пространства имен я бы не отказался. Но такими темпами няшная сишка станет плюсами
Согласен. Я считаю, что нельзя допустить чтобы моя няшная Сишка превратилась в Си плюс-плюс.
Молодцы ребята. Что llvm что gcc, пользуюсь обоими, молодцы, нормальные человеческие компиляторы нужны.