The OpenNET Project / Index page

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

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

25.04.2025 22:30

После года разработки опубликован релиз свободного набора компиляторов GCC 15.1, первый значительный выпуск в новой ветке GCC 15.x. В соответствии со схемой нумерации выпусков, версия 15.0 использовалась в процессе разработки, а незадолго до выхода GCC 15.1 уже ответвилась ветка GCC 16.0, на базе которой будет сформирован следующий значительный релиз GCC 16.1.

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

  • При компиляции программ на языке C по умолчанию задействован стандарт С23 (обзор изменений) с расширениями GNU ("-std=gnu23"). Ранее по умолчанию использовался стандарт C17 - "-std=gnu17"). Изменение потенциально может привести к проблемам при сборке существующих проектов из-за включения константы nullptr, типа _BitInt(n) и ключевых слов bool, true и false, которые могут конфликтовать с заданными в приложениях одноимёнными идентификаторами.
  • Реализованы возможности стандарта C23:
    • Директива "#embed", предназначенная для встраивания в код бинарных ресурсов.
    • Атрибут "unsequenced", сигнализирующий, что результат не зависит от порядка выполнения.
    • Атрибут "reproducible", указывающий, что функция всегда возвращает один и тот же результат при одинаковых входных данных, т.е. не зависит от иных факторов.
  • Реализованы элементы будущего стандарта C2Y (-std=c2y и -std=gnu2y):
    • Возможность объявления переменных в операторе "if", например, "if (int x = get ()) {...}".
    • Поддержка присвоения имён циклам для того, чтобы ссылаться на них в коде.
      
         outer: for (int i = 0; i < IK; ++ i) {
           switch (i) {
             case 1:
               break;       // jumps to CONT1
             case 2:
               break outer; // jumps to CONT2
           }
           // CONT1
         }
         // CONT2
      
      
    • Поддержка указания диапазонов целых значений в выражениях "case", например, "case 1 ... 10:".
    • Суффиксы "i" и "j" для обозначения мнимой части в комплексных числах.
    • Возможность использования операторов "++" и "--" с комплексными числами.
    • Конструкция "_Generic(type, expr1, expr2, ...)" для выбора выражения на основе типа операнда.
    • Поддержка обращения к байтовым массивам как к другим типам объектов, таким как структуры и объединения.
    • Поддержка применения оператора "alignof" к неполным массивам (объявленным без указания размера, например, "int a[]").
    • Добавлен новый синтаксис для восьмеричных, шестнадцатеричных и универсальных escape-последовательностей символов. Вместо "\u", "\x" и "\nnn" - предложены последовательности "\u{}", "\o{}" и "\x{}", в которых можно указывать произвольное число цифр.
    • Встроенные функции "__builtin_stdc_rotate_left" и "__builtin_stdc_rotate_right".
    • Разрешены операции с нулевой длиной на указателях NULL (например, "sizeof(*p)").
  • В фронтэнде для языка C++ реализованы возможности, развиваемые для будущего стандарта C++26:
    • Вариативный оператор "friend" ("friend Ts...").
    • Возможность использования ключевого слова "constexpr" с разновидностью оператора "new" (placement new) для размещения объекта в заранее выделенной памяти во время компиляции.
    • Вывод ошибки при удалении указателя на неполный тип.
    • Объявлен устаревшим синтаксис определения вариативных параметров с многоточием без предшествующей запятой (например, когда указывается "void e(int...)" вместо "void e(int, ...)").
    • Индексирование пакета параметров в шаблонах.
    • Атрибуты для структурированных привязок;
    • Синтаксис '= delete("причина")';
    • Включение "@", "$" и "`" в базовый набор символов.
    • Запрещено использование макросов для объявления модулей.
    • Возможность применения структурированного связывания (structured binding) в качестве условия в операторах if и switch.
    • Прекращена поддержка прямого сравнения массивов (например, "int arr1[5]; int arr2[5]; bool same = arr1 == arr2").
    • Механизм "#embed" для встраивания бинарных ресурсов.
    • Объявлен устаревшим шаблонный класс is_trivial.
  • Добавлены возможности C++23:
    • Запрет некоторых применений директивы "export" и разрешение использования "export {}".
    • Поддержка продления времени жизни временных объектов в циклах "for", перебирающих диапазоны.
  • В библиотеке libstdc++ реализована экспериментальная поддержка модулей std и std.compat.
  • Использование инициализатора "{0}" для объединений в коде на C и C++ теперь не гарантирует очистку всего содержимого, а приводит к обнулению первого элемента объединения. Для очистки всего объединения следует использовать выражение "{}", определённое в спецификации C23, или указать опцию "-fzero-init-padding-bits=unions" для восстановления старого поведения.
  • Реализована поддержка атрибута "musttail" ([[gnu::musttail]] и [[clang::musttail]]) для гарантированных хвостовых вызовов. Атрибут применяется к выражениям return, в которых осуществляется рекурсивный вызов текущей функции, и гарантирует, что такой вызов будет использовать хвостовую рекурсию, при которой не выделяется дополнительная память в стеке (исключает риск исчерпания памяти при очень большом числе вызовов).
  • Реализована поддержка атрибута flag_enum ([[gnu::flag_enum]] и [[clang::flag_enum]]), применяемого к перечислениям для индикации, что содержимое используются в битовых операциях (исключает вывод предупреждения в режиме "-Wswitch").
  • Добавлена поддержка атрибута "counted_by", через который можно указать поле в структуре с гибким массивом, определяющим число элементов. Атрибут может использоваться для повышения эффективности проверок выхода за границу буфера.
  • Для функций добавлен атрибут "nonnull_if_nonzero", определяющий, что некоторые параметры функции с указателями могут принимать значение NULL, только если другой параметр равен нулю.
  • Разрешено использовать расширенные ассемблерные вставки "asm (....)" вне функций. В ассемблерных вставках разрешено перезаписывать память в красной зоне стека (область на вершине стека).
  • Компиляция кода на C++ ускорена благодаря улучшенному хэшированию шаблонов.
  • Добавлены новые оптимизации. Реализована поддержка векторизации циклов, в которых имеется код для преждевременного выхода (например, через вызов break или return), даже если подобные циклы манипулируют динамически выделяемыми массивами или буферами, размер которых неизвестен на этапе компиляции. При указании опции "-O2" включена векторизация некоторых легко векторизируемых циклов, для которых отсутствуют сведения о количестве итераций (tripcount).
  • Добавлен режим инкрементальной оптимизации на этапе связывания (LTO, Link-Time Optimization), существенно сокращающий время перекомпиляции при использовании LTO в ситуациях, когда внесены незначительные изменения в код (отредактирована одна функция). Для включения инкрементального режима предложена опция "-flto-incremental".
  • Улучшена компиляция очень больших входных файлов. Реализовано отслеживание номеров столбцов, превышающих 4096. Повышена точность указания местоположения ошибок и предупреждений в очень больших файлах.
  • В статическом анализаторе повышена наглядность отчётов при диагностике проблем. Например, обеспечено выделение места возникновения проблемы символом "⚠️", изменена компоновка вывода при ошибках в шаблонах C++, добавлены подсказки для упрощения перехода на стандарт C23, переработана цветовая схема. Добавлена возможность вывода диагностики в формате Sarif (-fdiagnostics-format=sarif-file).
  • Реализована библиотека libgdiagnostics, позволяющая интегрировать в свои проекты возможности GCC, связанные с оформление диагностических сообщений (например, можно задействовать средства цитирования, подсветки, подсказок по исправлению, вывода в формате SARIF).
  • Добавлена утилита sarif-replay для просмотра файлов в формате SARIF, основанном на JSON и применяемом для сохранения результатов статического анализа и сведений о предупреждениях и ошибках.
  • Добавлено предупреждение "-Wanalyzer-undefined-behavior-ptrdiff", выводимое при наличии операций вычитания с указателями, ссылающимися на разные участки памяти.
  • Добавлены предупреждения "-Wtrailing-whitespace" и "-Wleading-whitespace" для выявления остаточных пробелов в конце строк и лишних пробелов начале строк.
  • Добавлено предупреждение "-Wheader-guard" для информирования о проблемах в макросах защиты заголовочных файлов, предотвращающих повторное включение заголовочного файла.
  • Фронтэнд для языка D обновлён до версии 2.111.0.
  • Во фронтэнд для языка Fortran добавлена поддержка беззнаковых целых чисел.
  • В состав включён компилятор для языка COBOL - gcobol, поддерживающий платформы x86-64 и AArch64, и не рассчитанный на использование на 32-разрядных системах. Компилятор реализует спецификацию ISO/IEC 1989:2023 и проходит большую часть тестов NIST CCVS/85.
  • Продолжена реализация стандартов OpenMP 5.0, 5.1, 5.2 и 6.0 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). Добавлена поддержка метадиректив и конструкций tile, unroll, interop и dispatch. Для некоторых GPU AMD и NVIDIA добавлена поддержка унифицированной разделяемой памяти (включается через указание unified_shared_memory в директиве "requires"). Добавлена поддержка выражения "self_maps".
  • В бэкенд для архитектуры AArch64 добавлена поддержка платформы MinGW (aarch64-w64-mingw32). Реализовано более 20 расширений ARM8 и улучшена поддержка расширения ACLE (Arm C Language Extensions). Внесены многочисленные улучшения в генератор кода. Добавлена поддержка CPU:
    • Apple A12 (apple-a12)
    • Apple M1 (apple-m1)
    • Apple M2 (apple-m2)
    • Apple M3 (apple-m3)
    • Arm Cortex-A520AE (cortex-a520ae)
    • Arm Cortex-A720AE (cortex-a720ae)
    • Arm Cortex-A725 (cortex-a725)
    • Arm Cortex-R82AE (cortex-r82ae)
    • Arm Cortex-X925 (cortex-x925)
    • Arm Neoverse N3 (neoverse-n3)
    • Arm Neoverse V3 (neoverse-v3)
    • Arm Neoverse V3AE (neoverse-v3ae)
    • FUJITSU-MONAKA (fujitsu-monaka)
    • NVIDIA Grace (grace)
    • NVIDIA Olympus (olympus)
    • Qualcomm Oryon-1 (oryon-1)
  • В бэкенде генерации кода для GPU AMD Radeon (GCN) реализована поддержка библиотеки libstdc++ и добавлена экспериментальная поддержка генерации кода для серий устройств gfx9-generic, gfx10-3-generic и gfx11-generic.
  • В бэкенд для архитектуры x86 добавлена поддержка расширений архитектуры набора команд Intel AVX10.2, AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, MOVRS. Добавлена поддержка CPU Intel Diamond Rapids. Удалена поддержка оптимизаций и расширений для CPU Intel Xeon Phi Knights Landing и Knights Mill.
  • Расширены возможности бэкендов для платформ LoongArch и AVR.
  • Удалена поддержка целевой архитектуры nios2, применяемой в процессорах Nios II. Объявлена устаревшей и будет удалена в следующем значительном выпуске поддержка ABI ILP32 (-mabi=ilp32) в порте для AArch64.


  1. Главная ссылка к новости (https://gcc.gnu.org/pipermail/...)
  2. OpenNews: Релиз набора компиляторов LLVM 20
  3. OpenNews: На базе Clang для языка Си реализован режим проверки границ буферов
  4. OpenNews: Для GCC подготовлены патчи для сборки универсальных исполняемых файлов
  5. OpenNews: Релиз набора компиляторов GCC 14
  6. OpenNews: GCC 15 будет использовать стандарт C23 по умолчанию
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63141-gcc
Ключевые слова: gcc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (69) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:42, 25/04/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

  • 1.2, Аноним (-), 22:46, 25/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Слушайте, а что с GNU Pascal случилось? Почему компилятор никак не развивается? Почему всякое непотребство типа Modula-2 (вообще кто-то слышал что то об этом языке?) или Objective-C поддерживаются, а Паскаль нет?
     
     
  • 2.6, Аноним (6), 23:07, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    почти все одиночки сидят на freepascal + lazarus, в некоторых корпорациях еще Delphi используется, но там лицензия от 3500 $


    GNU Pascal как бы не нужен никому

     
     
  • 3.9, Аноним (-), 23:16, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Delphi много где используется в бизнес сегменте (не путать с серверами и ынтерпрайзом). А вот free pascal редкостное днище, которое даже до турбопаскаля 90-х не дотягивает даже по качеству документации, впечатление что сделано тяп-ляп неорганизованной толпой людей.
     
     
  • 4.11, Аноним (11), 23:18, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Delphi — это такой же паскаль, как Visaul Basic по сравнению с изначальным бейсиком.
     
     
  • 5.17, Аноним (-), 23:23, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не уверен, что до сих пор где-то что-то живо написанное на обычном бейсике, а вот visual basic 6 живее всех живых, в том же бизнесе или в производственной среде. По крайней мере, vb6 скорее жив, чем мёртв.
     
     
  • 6.70, Аноним (70), 08:09, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И в этом плане тоже.
     
  • 4.33, Аноним (33), 00:44, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Дельфи и живёт в бизнесе потому что у него есть коммерческая поддержка. В гнутом виде никому не необходим.
     
  • 2.43, Аноним (43), 01:30, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Слушайте, а что с GNU Pascal случилось?

    Пpoтуxло, зaвoнялoсь и испортилось, как и весь Пaскaль. На нём даже в шкoлaх никто уже не пишет. Место этому языку на пoмoйкe. Даже пoкoйный Niklaus Wirth сделал ставку на Обepoн, а не на Пaскaль.

     
  • 2.55, Маняним (?), 03:07, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Modula-2 (вообще кто-то слышал что то об этом языке?)

    Так это и есть улучшенная версия паскаля)

     

  • 1.3, Аноним (3), 23:02, 25/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Поддержка указания диапазонов целых значений в выражениях "case"

    Скоро так и Паскаль догонят!

     
     
  • 2.50, Маняним (?), 02:48, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как язык паскаль возможно лучшее что создано. Но то что он ушёл в обучение сыграло злую шутку.
     
     
  • 3.75, Тот_Самый_Анонимус_ (?), 08:21, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Как язык паскаль возможно лучшее что создано.

    Отвратительный язык, заточенный под англ. Это просто убого использовать операторные скобки и некоторые операции (целочисленное деление, остаток, логические операции) в виде слов.

    Он был создан для обучения. А то что он ушёл в реальную разработку — ошибка.

     

  • 1.7, Аноним (7), 23:10, 25/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Поддержка присвоения имён циклам для того, чтобы ссылаться на них в коде.

    зачем, если есть goto?

     
     
  • 2.10, Аноним (11), 23:17, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Только хотел написать, что они goto переизобрели.
     
     
  • 3.13, Аноним (7), 23:19, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    так у них с логикой проблемы, метка то после цикла должна быть :) а то у них выход из цикла означает начать его заново.
     
  • 3.14, Аноним (-), 23:19, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    К хорошему всегда возвращаются. Никогда не понимал отказа от goto, ведь это крайне удобная вещь, с которой можно писать очень оптимизированный код, а не раздувать его ради простой функциональности на 100500 строк.
     
     
  • 4.16, Аноним (7), 23:23, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Никогда не понимал отказа от goto,

    так вам не на С надо писать, а на асм. В Си чисто по религии goto (фактически асмовский jump) быть не должно.

     
     
  • 5.18, Аноним (-), 23:27, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С jmp, jnz/jne можно очень красивый код писать. А рилигия в программировании, как и любые догмы, скорее вредны. Нужно всегда отталкиваться от целесообразности и конкретных требований\пожеланий к проекту.
     
     
  • 6.21, Аноним (7), 23:59, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > С jmp, jnz/jne можно очень красивый код писать.

    так С создавали, чтобы абстрагироваться от асм и код был более структурным, а не jmp акробатика вверх-вниз. Но почему-то эту акробатику в виде примитивного goto оставили.

     
  • 6.26, Аноним (11), 00:27, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В 8080 была такая замечательная вещь — CALL по условию/RET по условию. Количество джампов сокращало в разы.
     
     
  • 7.28, Аноним (28), 00:33, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так это же стек затрагивало, а значит уже сильно медленнее.
     
     
  • 8.31, Аноним (11), 00:42, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    j условие метка ret метка 8212 10 10 тактов r условие 8212 5 11 такт... текст свёрнут, показать
     
  • 7.45, Аноним (45), 02:09, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Прикинь, в ARM почти любая инструкция может быть исполнена по условию.
     
     
  • 8.46, Аноним (46), 02:24, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    У армов конечно, как и у ириски - очень вкусные инструкции, но лично меня всегда... текст свёрнут, показать
     
  • 8.49, Маняним (?), 02:46, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Но почему тогда армы до сих пор годятся только для телефонов Сколько там уже пр... текст свёрнут, показать
     
     
  • 9.56, Аноним (46), 03:33, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Помнится были даже смарты на интеле И всякие мини планшеты, тоже на интеле, у... текст свёрнут, показать
     
     
  • 10.61, Аноним (11), 06:25, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Почему не совсем планшеты Вполне полноценные планшеты на андроиде были, у самог... текст свёрнут, показать
     
  • 9.57, Котик Биба (?), 03:41, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Для тебя вся техника Apple и ноуты на Snapdragon какая-то шутка ... текст свёрнут, показать
     
     
  • 10.58, Аноним (28), 04:14, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И не только для него Ты ж не будешь спорить, что там телефонный процессор SoC ... текст свёрнут, показать
     
     
  • 11.71, Аноним (70), 08:10, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И что в нём телефонного ... текст свёрнут, показать
     
  • 8.54, Аноним (54), 03:00, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Могла быть, лет 10 назад В ARMv8 биты предикации выкинули, а в Thumb их никогда... текст свёрнут, показать
     
  • 8.60, Аноним (11), 06:15, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вы мне прямо глаза открыли Вообще это не исключительная особенность ARM А в... текст свёрнут, показать
     
  • 4.22, Аноним (22), 00:07, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А надёжность?
    "В своей следующей работе Дейкстра обосновал тот факт, что для кода без goto намного легче проверить формальную корректность."
     
     
  • 5.38, Аноним (38), 01:19, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А надёжность?
    > "В своей следующей работе Дейкстра обосновал тот факт, что для кода без goto намного легче проверить формальную корректность."

    И сел со своей войной против goto в лужу.
    Более подходящего способа для управления ресурсами в Си чем goto нет.

    После такого его невозможно воспринимать всерьез.

     
  • 5.59, Аноним (59), 05:01, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    1. Не очень понимаю, на что он намекает. Для кода без развилок и циклов проверить формальную корректность ещё проще. Он предлагает выкинуть развилки и циклы?
    2. Там, где требуется проверять формальную корректность, goto можно не использовать.
    3. Сейчас бы хвастаться отсутствием goto в языке с поддержкой исключений. goto хотя бы из функции не выходит, тогда как исключения прошивают весь стек вызовов.
     
  • 3.15, Аноним (7), 23:21, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    конечно надо же сделать как в расте Ё тут пятиэтажный мат Named loops als... большой текст свёрнут, показать
     
     
  • 4.53, Аноним (54), 02:53, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Выдыхай. Эту фичу тру-UNIX деды придумали для Limbo тридцоть лет назад, оттуда ее позаимствовали в Go и Rust. Одобрено ЪUNIXЪ-Омниссией с 1995, проверено временем.
     
  • 2.12, Аноним (7), 23:18, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    for (int i = 0; i < n; ++ i) {
      for (int j = 0; j < n; ++ j) {
        if (something (i, j))
          goto end;
      }
    }
    end:

    С goto куда интуитивно, чем пихать лейбл в начало оператора for (даблфейспалм). По логике меток, вы возвращаетесь и начинаете циклы заново, а не выходите из него вовсе.

    тог уж так надо было так писать, куда интуитивно чем в начале.

    for () { } : for-end-identifier;

     
     
  • 3.19, Аноним (-), 23:37, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Тут много зависит от тимлида :) Если упёртый и аргументы в пользу goto не принимает, то придётся в функцию оборачивать и делать ретёрны.
     
     
  • 4.20, Аноним (7), 23:56, 25/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    из таких вложенных циклов я обычно выхожу устанавливая в максимальное значение инкрементируемую переменную.

    for (int i = 0; i < n; ++ i) {
      for (int j = 0; j < n; ++ j) {
        if (something (i, j))
          i = n;
          break;
      }
    }

     
     
  • 5.24, Аноним (28), 00:21, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Красиво, но фактически это тоже костыль, может быть даже похлеще goto, потому что всё равно оно вернётся и оценит i < 0 и только потом выйдет из цикла.
     
     
  • 6.30, Аноним (7), 00:34, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > может быть даже похлеще goto

    да мне и for не нужен будет если я буду использовать goto :)

     
  • 5.68, Аноним (68), 07:27, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А потом узнаете про промахи кэша при таких выходах, и что вложенные циклы вообще не нужны, нисколько, никогда.
     

  • 1.8, Аноним (8), 23:12, 25/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >Директива "#embed", предназначенная для встраивания в код

    ~/.ssh/github

     
     
  • 2.47, Аноним (46), 02:28, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вот Вы смеетесь, а эмбед это вообще чуть ли не самое крутое, что ввели в язык.
    Понятно что можно всякое нехорошее с ним делать, но и крутые штуки, типа встраивания ресурсов в технодемки, делать тоже можно и нужно.
     
     
  • 3.69, Аноним (68), 07:29, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Чо не сделают, лишь бы xxd не использовать. Все бы им в комбайны превращать.
     
     
  • 4.76, Аноним (70), 08:32, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Что не сделают, лишь бы костыли не использовать.
     

  • 1.27, Аноним (-), 00:28, 26/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > компилятор для языка COBOL

    Очень актуальное, а главное своевременно решение. П.С. А кто-то видел живьём вообще этот КОБОЛ? А то рассказывают про банки и прочий энтерпрайз, но кого не спросишь, делают выпученные глаза.

     
     
  • 2.29, Аноним (28), 00:34, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А кто-то видел живьём вообще этот КОБОЛ?

    Нет

     
  • 2.32, abi (?), 00:43, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да, видел живьём Fico Blaze Advisor в отечественном банке.
     
  • 2.34, Аноним (33), 00:46, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А что то от этого изменится?
     
  • 2.35, Аноним (11), 01:00, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пойдите на работу в банк и прочий энтерпрайз, увидите… а, для этого кобол для начала надо изучить.
     
     
  • 3.41, Chlen22sm (?), 01:25, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Пойдите на работу в банк и прочий энтерпрайз, увидите…

    Это я удачно зашёл. Докладываю вам из глубин банков и прочих ынтерпрайзов... вижу java, кое-где c# и даже go, но не cobol. Лол.

     
     
  • 4.72, Аноним (70), 08:11, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В РФ? Тут, к счастью, такого слоя легаси не успело нарасти (за неимением самих банков).
     

  • 1.36, cheburnator9000 (ok), 01:14, 26/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> Возможность объявления переменных в операторе "if", например, "if (int x = get ()) {...}".

    Ничего не понял это же прямо сейчас уже доступно нет??

    https://godbolt.org/z/bPKqvsood в данном случае if это просто проверка либо на 0, либо можно использовать и для nulltpr.

     
     
  • 2.64, Аноним (64), 06:50, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вы кинули код на C++, тогда как речь про Си.

    На Си такого синтаксиса нет.

     
  • 2.67, Сишник (?), 07:25, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас доступно в C++, а в статье речь о том, что это добавили в C.
     

  • 1.37, Аноним (37), 01:17, 26/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Опять придется инструкции по сборке пакетов переписывать.
     
  • 1.51, Маняним (?), 02:49, 26/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как всегда в попсовых дистрах появится лет через 5?
     
     
  • 2.65, Аноним (64), 06:51, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В Дебиан 13 точно не попадет, потому что тулчейн для сборки, где GCC играет ключевую роль, заморожен от 15-го марта :)

    Будет в Дебиан 14, или более новая версия, если до заморозки успеет выйти 16-ая версия.

     
  • 2.66, Аноним (-), 07:09, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В Fedora 42 уже есть
     

  • 1.62, Аноним (62), 06:28, 26/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    □ Атрибут "unsequenced", сигнализирующий, что результат не зависит от порядка выполнения.
    □ Атрибут "reproducible", указывающий, что функция всегда возвращает один и тот же результат при одинаковых входных данных, т.е. не зависит от иных факторов.
    □ Возможность объявления переменных в операторе "if", например, "if (int x = get ()) {...}".
    □ Поддержка присвоения имён циклам для того, чтобы ссылаться на них в коде.

    Гляжу на всё это и понимаю, что видел это в Nim. Авторы языка используют все конструкции из новых стандартов Си.

     
     
  • 2.74, Аноним (-), 08:17, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Гляжу на всё это и понимаю, что видел это в Nim. Авторы
    > языка используют все конструкции из новых стандартов Си.

    Только сам он - какой-то ужастик, типа помеси сишки с питоном, очень сомнительное счастье.

     

  • 1.73, Аноним (-), 08:15, 26/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Директива "#embed", предназначенная для встраивания в код бинарных ресурсов.

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

    А гнутое расширение case 1..5 и проч они не хотят в новый стандарт взять?

     
     
  • 2.81, Аноним (81), 10:03, 26/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Действительно, теперь ещё линуксовые бинари деблобировать из-за всяких утаистов (вероятно, нарушающих лицензии).
     

  • 1.78, Амонин (?), 09:20, 26/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    import std; для с++ все ещё не завезли или я чего-то упускаю?
     
  • 1.79, Аноним (79), 09:25, 26/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В общем тенденция такова: какой-нибудь С50 (вопреки всем обещаниям!) начнёт таки всё больше и больше превращаться в С++, в то время как С++50 начнёт всё больше и больше превращаться в Раст. В общем делайте выводы сами!
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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