The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Релиз набора компиляторов GCC 10

07.05.2020 23:41

После года разработки опубликован релиз свободного набора компиляторов GCC 10.1, первый значительный выпуск в новой ветке GCC 10.x. В соответствии с новой схемой нумерации выпусков, версия 10.0 использовалась в процессе разработки, а незадолго до выхода GCC 10.1 уже ответвилась ветка GCC 11.0, на базе которой будет сформирован следующий значительный релиз GCC 11.1.

GCC 10.1 примечателен реализацией многих новшеств языка C++, развиваемых для стандарта C++20, улучшениями, связанными с будущим стандартом языка Си (C2x), новыми оптимизациями в бэкендах компилятора и экспериментальной поддержкой режима статического анализа. Кроме того, в ходе подготовки новой ветки проектом выполнен перевод репозитория с SVN на Git.

Основные изменения:

  • Добавлен экспериментальный режим статического анализа "-fanalyzer", который выполняет ресурсоёмкий межпроцедурный анализ путей выполнения кода и потоков данных в программе. Режим способен на этапе компиляции выявлять такие проблемы, как двойной вызов функции free() для одной области памяти, утечки файловых дескрипторов, разыменование и передачу нулевых указателей, обращение к освобождённым блокам памяти, использование неинициализированных значений и т.п. Применение нового режима для кода OpenSSL уже позволило выявить опасную уязвимость.
  • Улучшены межпроцедурные оптимизации. Проход IPA-SRA (межпроцедурная скалярная замена общих значений) переработан для работы во время связывания и помимо прочего теперь удаляет вычисляемые и возвращаемые неиспользуемые значения. В режиме оптимизации "-O2" включена опция "-finline-functions", которая перенастроена в пользу получения более компактного кода, чем в пользу производительности выполнения. Ускорена работа эвристики inline-развёртывания функций. Эвристика inline-развёртывания и клонирование функций теперь может использовать информацию о диапазонах значений для предсказания эффективности отдельных преобразований. Для С++ повышена точность анализа псевдонимов на основе типов.
  • Расширены оптимизации на этапе связывания (LTO). Добавлен новый исполняемый файл lto-dump для сброса информации об объектных файлах с байткодом LTO. В параллельно выполняемых проходах LTO обеспечено автоматическое определения числа одновременно запускаемых задач make и, если их не удалось определить, использование в качестве фактора распараллеливания сведений о числе ядер CPU. Добавлена возможность сжатия байткода LTO при помощи алгоритма zstd.
  • Улучшен механизм оптимизации на основе результатов профилирования кода (PGO - Profile-guided optimization), который генерирует более оптимальный код на основе анализа особенностей выполнения кода. Улучшено сопровождение профиля в процессе компиляции и разделения "горячего"/"холодного" кода. Через опцию "-fprofile-values" теперь можно отслеживать до 4 значений профиля, например, для косвенных вызовов и предоставления более точной информации о профиле.
  • Для языков C, C++ и Fortran реализована спецификация параллельного программирования OpenACC 2.6, определяющая средства для выноса операций (offloading) на GPU и специализированные процессоры, такие как NVIDIA PTX. Почти завершена реализация стандарта OpenMP 5.0 (Open Multi-Processing), определяющего API и способы применения методов параллельного программирования на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). Добавлены такие возможности как условные выражения lastprivate, директивы scan и loop, выражения order и use_device_addr. Для OpenMP и OpenACC добавлена поддержка выноса операций (offloading) на GPU AMD Radeon (GCN) четвёртого (Fiji) и пятого поколений (VEGA 10/VEGA 20).
  • Для языков семейства Си добавлена функция "access" для описания доступа функции к объектам, переданным по ссылке или указателю, и для связи таких объектов с целочисленными аргументами, содержащими сведения о размере объектов. Для работы вместе с "access" реализован атрибут "type" для выявления некорректного доступа из пользовательских функций, например, при записи значений в область вне границ массива. Также добавлен атрибут "symver" для привязки символов в ELF-файле к определённым номерам версий.
  • Добавлены новые предупреждения:
    • "-Wstring-compare" (включается при "-Wextra") - предупреждает о наличии выражений, в которых ноль сравнивается с результатом вызова функций strcmp и strncmp, эквивалентеным константе из-за того, что длина одного аргумента больше, чем размер массива во втором аргументе.
    • "-Wzero-length-bounds" (включается при "-Warray-bounds") - предупреждает о доступе к элементам массивов нулевой длины, что может привести к перезаписи других данных.
    • Расширены предупреждения "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" и "-Wstringop-overflow", в которых расширено число обрабатываемых ситуаций выхода за допустимые границы.
  • Реализована возможность прямого указания расширенных символов в идентификаторах, используя текущую кодировку (по умолчанию UTF-8), а не нотацию UCN (\uNNNN или \UNNNNNNNN). Например:
    
            static const int π = 3;
            int get_naïve_pi() {
              return π;
            }
    
  • Для языка Си реализована порция новых возможностей развиваемых в рамках стандарта C2X (включается через указание -std=c2x и -std=gnu2x): появилась поддержка синтаксиса "[[]]" для определения атрибутов как в С++ (например, [[gnu::const]], [[deprecated]], [[fallthrough]] и [[maybe_unused]]. Добавлена поддержка синтаксиса u8'' для определения констант с символами в UTF-8. Добавлены новые макросы в <float.h>. В strftime добавлены подстановки "%OB" и "%Ob".
  • По умолчанию для Си применён режим "-fno-common", позволяющий повысить эффективность доступа к глобальным переменным на некоторых платформах.
  • Для C++ реализовано около 16 изменений и новшеств, развиваемых в стандарте C++20. В том числе добавлено ключевое слово "constinit" и реализована поддержка расширения шаблонов "концепции". Концепции позволяют определить набор требований к параметрам шаблона, которые во время компиляции ограничивают набор аргументов, которые могут приниматься в качестве параметров шаблона. Концепции можно применять для того, чтобы избежать логических несоответствий между свойствами типов данных, используемых внутри шаблона, и свойствами типов данных входных параметров.
  • В G++ обеспечено выявление неопределённого поведения, вызванного изменением объектов-констант через constexpr. Снижено потребление памяти компилятором при вычислении constexpr. Добавлены новые предупреждения "-Wmismatched-tags" и "-Wredundant-tags".
  • Предложены новые опции командной строки:
    • "-fallocation-dce" для удаления лишних пар операторов "new" и "delete".
    • "-fprofile-partial-training" для отключения оптимизации по размеру для кода, для которого не выполнен обучающий прогон.
    • "-fprofile-reproducible для управления уровнем воспроизводимости профиля.
    • "-fprofile-prefix-path" для определения базового каталога сборки из исходных текстов, используемого при раздельной генерации профилей (для "-fprofile-generate=profile_dir" и "-fprofile-use=profile_dir").
  • В тексте предупреждений для упоминаемых опций обеспечен показ гиперссылок, позволяющих перейти к документации по этим опциям. Подстановка URL управляется при помощи опции "-fdiagnostics-urls".
  • Добавлен оператор препроцессора "__has_builtin", который можно использовать для проверки наличия встроенных функций.
  • Добавлена новая встроенная функция "__builtin_roundeven" с реализацией определённой в спецификации ISO/IEC TS 18661 функции округления, похожей на "round", но округляющей части больше 0.5 вверх (к большему значению), меньше 0.5 - вниз (до нуля), а равной 0.5 - отталкиваясь от чётности предпоследней цифры.
  • Для архитектуры AArch64 добавлена поддержка расширения SVE2 и улучшена поддержка SVE (Scalable Vector Extension), в том числе добавлена поддержка встроенных функций и типов SVE ACLE, обеспечено применение векторизации. Расширена поддержка LSE (Large System Extensions) и TME (Transactional Memory Extension). Добавлены новые инструкции, предложенные в Armv8.5-A и Armv8.6-A, включая инструкции для генерации случайных чисел, округления, привязки тегов к памяти, bfloat16 и умножения матриц. Добавлена поддержка процессоров Arm Cortex-A77, Arm Cortex-A76AE, Arm Cortex-A65, Arm Cortex-A65AE, Arm Cortex-A34 и Marvell ThunderX3.
  • Для ARM32 добавлена поддержка ABI FDPIC (64-разрядные указатели на функции). Переделана и оптимизирована обработка 64-разрядных целочисленных операций. Добавлена поддержка CPU Arm Cortex-A77, Arm Cortex-A76AE и Arm Cortex-M35P. Расширена поддержка инструкций ACLE для обработки данных, включая 32-разрядные SIMD, 16-битное умножение, арифметику с фиксацией минимально и максимально возможных значений и другие средства для оптимизации алгоритмов DSP. Добавлена экспериментальная поддержка инструкций ACLE CDE (Custom Datapath Extension).
  • Значительно улучшена генерация кода и векторизация в бэкенде для GPU AMD на базе микроархитектуры GCN.
  • Для архитектуры AVR добавлена поддержка XMEGA-подобных устройств ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609, ATmega3208, ATmega3209, ATmega4808 и ATmega4809.
  • Для архитектур IA-32/x86-64 добавлено новое расширение архитектуры набора команд Intel ENQCMD (-menqcmd). Добавлена поддержка CPU Intel Cooperlake (-march=cooperlake, включает ISA-расширение AVX512BF16) и Tigerlake (-march=tigerlake, включает ISA-расширения MOVDIRI, MOVDIR64B и AVX512VP2INTERSECT).
  • Объявлена устаревшей и вероятно будет удалена в будущем выпуске реализация промежуточного языка HSAIL (Heterogeneous System Architecture Intermediate Language) для гетерогенных вычислительных систем на базе архитектуры HSA.


  1. Главная ссылка к новости (https://gcc.gnu.org/pipermail/...)
  2. OpenNews: Релиз набора компиляторов LLVM 10.0
  3. OpenNews: В состав GCC принят бэкенд для компиляции в eBPF
  4. OpenNews: Проект по добавлению в GCC поддержки распараллеливания процесса компиляции
  5. OpenNews: GCC удалён из основного состава FreeBSD
  6. OpenNews: Релиз набора компиляторов GCC 9
Лицензия: CC-BY
Тип: Интересно / Программы
Короткая ссылка: https://opennet.ru/52903-gcc
Ключевые слова: gcc, compile
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (85) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Z (??), 00:19, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    А я еще на седьмой версии сижу, пора наверное переходить
     
     
  • 2.2, Аноним (2), 00:24, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +9 +/
    9 очень здоровская, особенно если ты используешь pgo и lto -- любую программу можно оптимизировать более эффективно, чем это потенциально сделает O3 со всякими ручными unroll-all-loops (их надо подбирать вручную и отключать векторизацию тоже вручную, иначе будут сплошные просадки относительно O2). Я бы подождал багфиксов в 10 на твоём месте.
     
     
  • 3.127, Аноним (-), 11:33, 31/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    LTO работает даже в 6-й версии. PGO - с ним канители многовато. А вот LTO и правда вещь: код и меньше, а в лучшем случае и быстрее. Выкидывает эдак четверть объема кода на ровном месте - без потерь в чем либо вообще.
     
     
  • 4.128, Аноним (2), 12:21, 31/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для pgo в 9 надо просто 1 раз скомпилировать медленный билд, запустить его и прогнать по всему коду, после чего перекомпилировать 2 раз заменив profile-generate на profile-use получив быстрый билд. Куда уж проще? Именно PGO даёт всё это "десяситысячекратное" ускорение и эффективную оптимизацию (level-3 оптимизации применяются только там, где они нужны). До 9 получить результат было сложнее (или у меня не получилось с 8 почему-то, я уже собирал иначе, но это было ещё раньше). Lto больше интересен для плюсовых программ в силу специфики. Кроме того, нужно учитывать, что и lto постоянно совершенствуется, однако при этом (скорее даже благодаря) там регулярно случаются баги и регрессии (они случались всегда).
     
  • 2.5, эксперт (?), 00:44, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –34 +/
    все уже давно на clang +llvm перешли
     
     
  • 3.7, Аноним (7), 00:48, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Все модно-стильно-молодёжные.
     
     
  • 4.8, эксперт (?), 00:56, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    если за модой то рекоменду радикальную альтернативу - 8c, tcc.
     
     
  • 5.57, Michael Shigorin (ok), 15:43, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Что ни коммент этого "эксперта", то просто праздник какой-то.
    Иногда даже вычищать жалко.
     
  • 3.22, Аноним (22), 08:32, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > перешли

    Для хорошего кода без разницы.

     
  • 3.25, Онаним (?), 08:39, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Все - это кто? Эппл и 0.01% любителей freebsd?
     
     
  • 4.31, Аноним (31), 09:38, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Это местные эксперты так шутят просто.
     
  • 3.80, RibiKukan (ok), 06:06, 09/05/2020 [^] [^^] [^^^] [ответить]  
  • –8 +/
    Маня, открою тебе тайну - clang не состоялся как компилятор И котируют его за к... большой текст свёрнут, показать
     
     
  • 4.109, yetanotheranonymus (?), 16:19, 09/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Сатический анализатор шлага мне помогает не один год. А в gcc его только-только завезли. Но в gcc 10.1 баг в линкере, так что мне он пока подходит.
     
     
  • 5.111, Аноним (7), 23:07, 09/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это с каких это пор линкер стал входить в пакет GCC? Что-то подсказывает, что линкер в составе binutils.
     
  • 2.17, Аноним (17), 07:55, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    лови хипстора, gcc 4.9 форевер
     
     
  • 3.58, Michael Shigorin (ok), 15:44, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Почему не 2.7.2.3, еретик?!
     
     
  • 4.74, Аноним (74), 22:07, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    2.96 RedHat Edition :)
     
     
  • 5.75, Michael Shigorin (ok), 22:45, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не конает, поелику kgcc!
     
  • 5.112, Аноним (7), 23:09, 09/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    egcs же.
     

  • 1.3, Dmitry (??), 00:31, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    > Добавлен экспериментальный режим статического анализа

    Странно, в clang это уже лет шесть-семь как есть.

     
     
  • 2.4, Аноним (2), 00:36, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +48 +/
    Странно, что проблему в openssl нашёл PoC анализатор в gcc, и не нашёл 6-7 летний анализатор шланга. А, нет, не странно.
     
     
  • 3.24, Аноним (17), 08:37, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    странно, что за 6-7 лет анализатог шланга нашёл игого сколько проблем, а gcc одну. а нет, не странно
     
     
  • 4.26, Онаним (?), 08:40, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Понимаешь, решить проблему с кормлением хомячка в домашних условиях и решить проблему со строительством небоскрёба - это немножко два разных уровня проблем.
     
     
  • 5.43, коржик (?), 11:53, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Действительно, Вы правы. Если кормить дельфинов - то они ответят тебе взаимностью и будут катать вас как на лыжах. А если кормить акул - то они будут сыты и не будут жрать дельфинов.

    Надеюсь, правильно понял вашу аллегорию?

     
     
  • 6.53, Жак Ив Кусто (?), 14:07, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >А если кормить акул - то они будут сыты и не будут жрать дельфинов.

    Деточка, это дельфины жрут акул. Учи мат.часть.

     
     
  • 7.83, Онаним (?), 09:50, 09/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Деточка, это дельфины жрут акул. Учи мат.часть.

    Поколение пепси и LLVM подросло.

     
     
  • 8.110, Жак Ив Кусто (?), 17:09, 09/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Иди соси своё пепси https zen yandex ru media different_angle pochemu-akuly-bo... текст свёрнут, показать
     

  • 1.11, Аноним (11), 04:12, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Реализована возможность прямого указания расширенных символов в идентификаторах

    А как это теперь чистить/детектить?

     
     
  • 2.12, A.Stahl (ok), 06:22, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так же, как ты чистишь код от циклов while().
     
  • 2.16, n00by (ok), 07:31, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    @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/cppopts.texi;h=f4bc3f5

     
  • 2.56, анон (?), 14:43, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    A long time ago, in a galaxy far, far away…

    Ситрипио: О, это С++ исходники на древнеситхском, боюсь тут я вам помочь не могу.
    По Дамерон: Как так-то, ты же знаешь 9 млн. языков?

    ... =)

     

  • 1.13, Аноним (13), 06:34, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Самое важное изменение не написали - наконец-то примитивы стандартной библиотеки нечувствительны к переводу часов и используют MONOTONIC_CLOCK. Бесило жуть.
     
     
  • 2.20, Аноним (17), 08:10, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Бесило жуть.

    неа

     

  • 1.14, other_anonymous (?), 06:35, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Vim компилируется?
    Слышал в десяточке изменилось UB на которое был завязан Vim
     
     
  • 2.21, Аноним (17), 08:12, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –14 +/
    electron компилируется, остальное не нужно. там тебе и редакторы, и сообщения, и браузеры, чё хочешь
     
     
  • 3.35, Аноним (7), 10:19, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Electron и бибикать научился?
     
     
  • 4.65, Аноним (65), 16:06, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не только бибикать, но и голос твой записывать и распознавать в скаепе
     
  • 4.123, deeaitch (ok), 05:38, 12/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Откуда? Конечно нет. Тебе надо. Тебе надо 15 разных плагинов поставить конфликтующих друг с другом. Потом написать километр json лапши чтобы это настроить. Тогда да, может и заработает. Хотя без облака врятли.
     
  • 3.39, Anonymus (?), 11:02, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Когда Emacs превратился в Electron?
     
     
  • 4.60, Michael Shigorin (ok), 15:46, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И куда потеряли недостающее звено -- Emactron?
     
  • 4.67, Аноним (7), 16:27, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Надеюсь, RMS тщательно выбирал человека, которому передал бразды управления Emacs.
     
  • 2.118, я (?), 21:38, 10/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/vim/vim/pull/5580
     
  • 2.122, Stax (ok), 17:09, 11/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    :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)

     

  • 1.15, Аноним (15), 06:52, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно кто то пробовал новые фишки с++ 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# только пока то еще темник.
     
     
  • 2.23, Аноним (22), 08:34, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > я убил кучу времени на элементарные вещи

    Если есть, кому за него платить, Вам повезло.

     
  • 2.41, Crazy Alex (ok), 11:26, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не знаю, при чём тут linq, но эти ranges - это утянутое в плюсы творение Александреску и для красивой реализации требуют несколько более мощную и осмысленную шаблонную систему, чем в плюсах. Собственно, примерно поэтому он в D и сбежал (тогда, правда, в плюсах совсем плохо  в этом плане было). В общем, не думаю, что в плюсах оно полечится
     

  • 1.28, Иваня (?), 09:11, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Круто, а я всё еще юзаю

    ~$ gcc -v
    gcc version 8.3.0 (Ubuntu 8.3.0-6ubuntu1~18.10.1)

     
     
  • 2.29, Аноним (29), 09:27, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Капец ты ретроград.
     
     
  • 3.68, InuYasha (?), 16:46, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    что ж мне тогда делать с 4.5 и 2.95... (
     
     
  • 4.82, ДмитрийСССР (?), 09:42, 09/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А где вы версию 2.95 нашли то?
     

  • 1.30, Аноним (29), 09:29, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Чего только не придумают лишь бы msvc не использовать.
     
     
  • 2.33, Anonymus (?), 10:10, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Он уже научился хотя бы в полноценный C99?
     
     
  • 3.44, srgazh (?), 11:54, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Шито?)
     
  • 3.76, Аноним (76), 05:00, 09/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Там и C11 неполноценный, вернее ограниченный:<
     
  • 2.36, Аноним (7), 10:26, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Как пропатчить MSVC под FreeBSD?
     
     
  • 3.38, Аноним (38), 10:43, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Сначала установи винду.
     
     
  • 4.61, Michael Shigorin (ok), 15:47, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На тостер?
     
  • 2.124, deeaitch (ok), 05:40, 12/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Что угодно, только бы не использовать msvc
     

  • 1.34, Anonymus (?), 10:12, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Реализована возможность прямого указания расширенных символов
    >в идентификаторах

    Но зачем?!

     
     
  • 2.40, YetAnotherOnanym (ok), 11:11, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если допустить до программирования тех, кто не владеет английским, это позволит снизить цены на рынке труда. Ничего личного, только бизнес.
     
     
  • 3.42, Аноним (42), 11:27, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > кто не владеет английским

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

     
     
  • 4.45, коржик (?), 11:59, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    сами себе переведут если нужно будет.

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

     
     
  • 5.52, Аноним (42), 13:35, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    странная логика получается, если почитать эту ветку: перевести идентификаторы с родного на английский они не в состоянии, зато документацию они сами переведут.

    >От индусского английского уже блевать тянет.

    мой английский не настолько хорош, мне без разницы. И это уж точно лучше, чем россыпь иероглифов

     
     
  • 6.54, коржик (?), 14:08, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > странная логика получается, если почитать эту ветку: перевести идентификаторы с родного
    > на английский они не в состоянии, зато документацию они сами переведут.

    ну я бы не стал называть тот английский из кода английским. Это скорее какой-то програмистский суржик, ну или код. Если писать на чистом английском (хотя бы названия юнит-тестов), то есть ощущение, что вас просто не поймут.

    Поэтому индетификаторы как правило ограничены узким кругом всем понятных слов. Как только начинается шекспировское творчество - беда

     
     
  • 7.69, InuYasha (?), 16:49, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это всё ужасно, да. Но всё равно лучше 1С ))
     
  • 5.62, Michael Shigorin (ok), 15:50, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Если честно, то хорошую документацию на родном языке читать очень приятно.

    Ну я и писал http://nightly.altlinux.org/docs/mkimage-profiles.html сразу по-русски.  Кому бывало надо и недоставало робоперевода -- тем переводил нужные кусочки.

     
  • 4.46, гуглтранслейт (?), 12:32, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    я уже им все перевел!

     
  • 4.81, YetAnotherOnanym (ok), 08:55, 09/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > и по-быстрому переводить для них техническую документацию на родной язык?

    Какая документация? Методичку с основами синтаксиса прочёл - и вперёд, фигак-фигак-фигак в продакшон.

     
  • 3.47, пох. (?), 12:38, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ага, а проблема что никто кроме этих альтернативно-одаренных не может ничего поправить в их коде, потому что у него на клавиатуре нет этих закорючек - вообще не проблема, потому что этот код китайской макаки все равно нельзя исправить, только выбросить и переписать заново (чего вы ждали от человека, неспособного ДАЖЕ переменную назвать латинницей) - кстати, всегда так и делали.

     
  • 3.113, Аноним (7), 00:51, 10/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Если допустить до программирования тех, кто не владеет английским,

    Translitom peremennye i bez nacional'nyh alfavitov vsegda mozhno bylo.

     
  • 2.49, n00by (ok), 13:15, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >>Реализована возможность прямого указания расширенных символов
    >>в идентификаторах
    > Но зачем?!

    Что бы специалисты по рогам и копытам не забивали себе голову Питонами и программированием, можно специально для них создать предметно-ориентированный язык (где "рога" и "копыта" - это ключевые слова), который транслируется в Си.

     
  • 2.55, Leo90 (?), 14:33, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    больше всего лулзов словил на символе c написанным кириллицей. на шланге компилится, на гцц - нет. теперь похоже этот символ останется там на веки вечные, если конечно не указать специально опцией.
     
     
  • 3.64, Аноним (2), 16:00, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Мне всегда много лулзов (часы лулзов) доставляют перепутанные c и с (это случается чаще, чем можно ожидать).
     
     
  • 4.114, Аноним (7), 11:21, 10/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Причём, не только в текстах программ. Например, в спецификациях электронных компонентов.
     
  • 4.115, Аноним (115), 15:11, 10/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, всегда удивлялся почему начав писать, например, "сщтт" многие юзеры стирают только "щтт" и дописывают "onnect". Эту ошибку практически нереально встретить если она не в начале слова или после_очеедного_подчёркивания.
     
     
  • 5.117, Michael Shigorin (ok), 15:47, 10/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Да, всегда удивлялся

    Так это ж слепой однопальцевый, вот и экономят...

     

  • 1.48, Аноним (48), 13:09, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Кидаю мануал для сборки из исходников. Сложность как в windows установка и удаление программ. Не забываем только изменить название архива и вставлять sudo перед коммандами.У самого Debian 9.Удачи.
    https://linuxhostsupport.com/blog/how-to-install-gcc-on-debian-9/
     
     
  • 2.63, Michael Shigorin (ok), 15:59, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > make install

    /blog/how-to-make-slackware-from-debian-9

    PS: в приличных местах код рутом не собирают: привычка чревата максимально неприятными последствиями при ошибке апстрима вроде http://github.com/MrMEEE/bumblebee-Old-and-abbandoned/issues/123 или configure-трояне, как вот ещё в https://opennet.ru/opennews/art.shtml?num=1741

    PPS: понимаете, "как в виндовс" -- это обычно без применения головы.  Уже поэтому стоит вместо слепого копирования подхода посмотреть, а нет ли чего получше, и уж тем более не пропагандировать подобное по непониманию  разницы линуксов, особенно патриархов репозиториестроения вроде дебиана, и помойки next-next-done.  Научитесь выбирать подходящие инструменты для стоящих задач, а не тащить на хост каждую первую блестяшку даже до того, как в ней поправят традиционные косяки версии x.0.  Пожалуйста!

    ---

    P^3S: забавно, комментарий #63 был с того же src ip.  Пожалуй, я это linuxhostsupport буду при (маловероятной) встрече обходить по другой стороне дороги -- по крайней мере пока (случайно) не увижу хотя бы одну статью оттуда уровня не ниже шимпанзе. :(

     
     
  • 3.72, Аноним (72), 18:31, 08/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    и вообще в рабочей системе лучше не собирать.
    для по-быстрому собрать чего-нибудь debootstrap --variant=buildd --arch amd64 focal mychroot
    для не по-быстрому тем более - если прожэкт настоящий, то вообще на выделенной машине.
     
  • 3.116, Аноним (115), 15:14, 10/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Но 63 это твой же комментарий.
     

  • 1.59, Страдивариус (?), 15:44, 08/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Наконец можно побыть Маском и назвать переменную
    static int XÆA12;
     
  • 1.119, Аноним (-), 10:26, 11/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >улучшениями связанными с будущим стандартом языка Си (C2x)

    Последний стандарт языка Си - C18. Пора остановится, что там ещё надо стандартизировать? Сишка - это же суровая процедурщина.

    Горшочек не вари! Горшочек не вари! Горшочек не вари!

     
     
  • 2.120, Аноним (7), 12:42, 11/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Например, можно пространства имён ввести, из Dшечки позаимствовать вложенные функции.
     
     
  • 3.121, Аноним (121), 16:45, 11/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, от пространства имен я бы не отказался. Но такими темпами няшная сишка станет плюсами
     
     
  • 4.126, Аноним (126), 16:27, 12/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен. Я считаю, что нельзя допустить чтобы моя няшная Сишка превратилась в Си плюс-плюс.
     

  • 1.125, deeaitch (ok), 05:44, 12/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Молодцы ребята. Что llvm что gcc, пользуюсь обоими, молодцы, нормальные человеческие компиляторы нужны.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру