The OpenNET Project / Index page

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

Доступен набор компиляторов LLVM 17.0

21.09.2023 13:09

После шести месяцев разработки представлен релиз проекта LLVM 17.0 - GCC-совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизаций). Сгенерированный псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.

Основные улучшения в Clang 17.0:

  • Реализованы возможности, определённые в будущем Си-стандарте C2x:
    • Добавлены ключевые слова bool, static_assert, alignas, alignof и thread_local.
    • Разрешено указание пустых скобок "{}" для инициализации в нулевые значения , т.е. теперь можно писать "struct S { int x, y } s = {};".
    • Предоставлена возможность указания любых универсальных имён символов в символьных и строковых литералах. Например, "int \u0024 = 0;".
    • В "stddef.h" добавлен макрос "unreachable".
    • Из спецификации исключён макрос ATOMIC_VAR_INIT.
    • Добавлена полная реализация типов nullptr и nullptr_t. Например, можно указывать "void func(nullptr_t); func(0); func((void *)0);".
  • В коде на языке Си предоставлена возможность проброса через выражение "goto" внутри блоков "asm" по косвенно выбранным меткам. Например, goto("mov %1, %0\n\tjmp %l[label]" : "=r" (x) : "r" (45) : : label);
  • Добавлена поддержка Си-расширения, позволяющего использовать в "_Generic" в качестве первого операнда тип, а не выражение. Например, "_Generic(typeof(i), int : 0, const int : 1);".
  • В константных выражениях на языке Си разрешено использование структур, объединений и массивов, объявленных с признаком "const".


  • Реализованы расширенные возможности, связанные со стандартом C++20:
    • Для всех платформ, за исключением Windows, обеспечена полная поддержка сопрограмм (Coroutines).
    • Реализованы дополнительные требования к операциям сравнения константных выражений.
    • Обеспечен корректный разбор лямбда-шаблонов, указанных сразу после параметров шаблона и содержащих в блоке "requires" переменную с зависимым типом.
    • Включён по умолчанию флаг "-Wreserved-module-identifier", приводящий к выводу предупреждения вместо ошибки при использовании зарезервированных идентификаторов в блоке экспорта модулей.
    • Добавлена поддержка выражения "requires cplusplus20" в описаниях связей заголовочных файлов с модулями (module map).
    • Реализованы дополнительные требования к применению операторов сравнения.
    • Зарезервировано использование двойного подчёркивания в пользовательских литералах и объявлено устаревшим использования ключевого слова "operator" в определении функций с зарезервированными идентификаторами в имени (например, 'double operator"" _Bq(long double);').
    • Обеспечено определение макроса "__cpp_consteval".
    • Разрешено использование CTAD для агрегатных типов.
    • Разрешено использование спецификатора "auto" для указателей и ссылок на массивы.
  • Реализованы расширенные возможности, связанные со стандартом C++23, который находится на финальной стадии утверждения в ISO:
    • Изменена область действия хвостового возвращаемого типа (trailing-return-type) в лямбда-функциях, который теперь сначала смотрит в перехваты, а затем в окружающий текст.
    • Ослаблены некоторые требования к "constexpr". Например, в constexpr-функциях разрешено указание переменных нелитеральных типов в качестве возвращаемых значений и параметров. Разрешён вызов в constexpr-функциях других функций и конструкторов, не являющихся "constexpr".
    • Добавлена поддержка выражения "requires cplusplus23" в описаниях связей заголовочных файлов с модулями (module map).
    • Реализовано требование, в соответствии с которым все функции, вызывающие функции с признаком consteval тоже становятся consteval, т.е. выполняются при компиляции.
  • Реализованы расширенные возможности, связанные с будущим стандартом C++2с (C++26):
    • В компилятор добавлены новые флаги "-std=c++2c" и "-std=gnu++2c" для включения экспериментальной поддержки развивающейся спецификации C++2c.
    • Для constexpr реализована поддержка "стирания типа" через преобразование указателей в void* и обратно в исходный тип, что позволит добиться возможности выполнения std::format во время компиляции.
    • Частично реализована поддержка невычисляемых строк (unevaluated string), которые используются только на стадии компиляции в _Pragma, asm, extern, static_assert, [[deprecated]] и [[nodiscard]], и не попадают в скомпилированную программу.
    • Добавлена возможность использования в static_assert сгенерированных пользователем диагностических сообщений.
  • При компиляции приложений языке C++ при использовании режима оптимизации "-O0" улучшена генерация кода для вызовов, подобных std::forward_like, std::move и std::forward, которые теперь обрабатываются как встроенные в компилятор и не использующие стандартную библиотеку. Кроме того, улучшена генерация кода при динамическом приведении (dynamic_cast) к окончательному типу (для сравнения данных RTTI больше не используется runtime-библиотека и указатели vtable сравниваются напрямую).
  • Разрешено использование static_assert(false) в коде на C++ в контексте определения шаблона.


  • Добавлена поддержка встроенных функций (builtin):
    • "__builtin_nondeterministic_value" - возвращает недетерминированное значение с тем же типом.
    • "__builtin_FILE_NAME" - аналог макроса __FILE_NAME__.
    • "__builtin_FUNCSIG - аналог макроса "__FUNCSIG__".
    • "__builtin_assume_separate_storage" - проверяет, что аргумент указывает на объекты в отдельно выделенной памяти.
    • "__builtin_isfpclass" - проверяет сочетаемость значения с плавающей запятой с указанным классом данных.
    • "__builtin_elementwise_round" - предоставляет доступ к llvm.round для типов с плавающей запятой.
    • "__builtin_elementwise_rint" - предоставляет доступ к llvm.rint для типов с плавающей запятой.
    • "__builtin_elementwise_nearbyint" - предоставляет доступ к llvm.nearbyint для типов с плавающей запятой.
    • Добавлена поддержка встроенных функций stdio, доступных в GCC: __builtin_vprintf, __builtin_vfprintf, __builtin_fscanf, __builtin_scanf, __builtin_sscanf, __builtin_vfscanf, __builtin_vscanf, __builtin_vsscanf.
  • Добавлена возможность определения многомерных массивов через "__declspec(property)".
  • Добавлен новый встроенный типаж "__is_trivially_equality_comparable" проверяющий идентичность двух экземпляров типов (например, memcmp(&lhs, &rhs, sizeof(T)) == 0).
  • Добавлена поддержка переменной окружения NO_COLOR для отключения выделения цветом вывода.
  • Добавлены новые флаги компилятора: "-std=c++23", "-dumpdir", "-fcaret-diagnostics-max-lines", "-fkeep-persistent-storage-variables", "-f[no-]assume-unique-vtables", "-print-multi-flags-experimental".
  • Для совместимости с GCC добавлены флаги "-maix32", "-maix64" и "-p".
  • Объявлен устаревшим флаг "-fdouble-square-bracket-attributes". Удалены устаревшие флаги "-fmodules-ts", "-fcoroutines-ts", "-lower-global-dtors-via-cxa-atexit" и "-no-opaque-pointers".
  • Добавлен новый атрибут функций "__attribute__((unsafe_buffer_usage))", сигнализирующий об осознанной небезопасной работе с буферами в функции (при указании атрибута для функции не выводится предупреждение "-Wunsafe-buffer-usage").
  • Значительно расширены средства диагностики и статического анализа, например, добавлены новые проверки переполнения знаковых целых чисел, корректности лямбда-шаблонов, выражений constexpr, сравнений с нулевыми указателями, использования неинициализированных структур и т.п. Доступен обзор новых возможностей диагностики с наглядными примерами.

Основные новшества LLVM 17.0:

  • В бэкенд для архитектуры X86 добавлена поддержка расширений архитектуры набора команд (ISA): AMX-COMPLEX, SHA512, SM3, SM4 и AVX-VNNI-INT16.
  • Заметно расширены возможности бэкенда для архитектуры RISC-V. Добавлена поддержка процессора sifive-x280. Реализована поддержка процессорных расширений XTHeadBa, XTHeadBb, XTHeadBs, XTHeadCondMov, XTHeadMac, XTHeadMemPair, XTHeadMemIdx, Xsfvcp (SiFive VCIX), Xsfcie (SiFive CIE), Zawrs, XTHeadCmo, XTHeadSync, XTHeadFMemIdx, Xca 1.0.1, Zcf 1.0.1, Zcd 1.0.1, Zfa 0.2.
  • В бэкенд для архитектуры LoongArch добавлена поддержка расширений LSX, LASX, LVZ и LBT ISA.
  • Улучшены бэкенды для архитектур AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU.
  • В отладчик LLDB добавлена новая команда "register info" для вывода всей информации, известной о регистре.
  • Расширены возможности компоновщика LLD.
  • В библиотеке Libc++ продолжена реализация поддержки возможностей стандартов C++20 и C++23, а также началась работа по обеспечению поддержки спецификации C++26.


  1. Главная ссылка к новости (https://discourse.llvm.org/t/l...)
  2. OpenNews: Релиз набора компиляторов LLVM 16.0
  3. OpenNews: Создатель LLVM развивает новый язык программирования Mojo
  4. OpenNews: Проект Minotaur развивает оптимизатор векторных инструкций для LLVM
  5. OpenNews: Релиз набора компиляторов GCC 13
  6. OpenNews: Проект LLVM развивает средства для безопасной работы с буферами в C++
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59789-llvm
Ключевые слова: llvm, clang, compile, gcc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (81) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:12, 21/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда наконец будет поддержка s390x? Я уже не могу терпеть!
     
     
  • 2.2, Аноним (2), 13:13, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Есть инфа от знающего человека, что в LLVM скоро ожидаются реальные изменения.
     
     
  • 3.4, Аноним (4), 13:17, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Неужели наконец сможет составить реальную конкуренцию GCC?
     
     
  • 4.23, Советский инженер (?), 15:30, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Еще годик другой и может так случится что не будет нормального браузера который собирается гцц. Такая вот конкуренция.
     
     
  • 5.26, Аноним (4), 15:38, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Уже пару раз было, но я так понимаю это от того что куски хромонога в жырнолиса впихнули. Код шланг всё ещё не умеет адекватно оптимизировать, хотя казалось бы, да и у проприетарных компиляторов поверх llvm почему-то получается. Такой вот опенсорс.
     
     
  • 6.27, Аноним (4), 15:39, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя компиляцию spidermonkey в gcc тоже ломали, ещё чаще.
     
  • 6.47, Аноним (47), 17:38, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Зачем нужно что-то там оптимизировать когда проще обновлять железо раз в год? Оптимизация не актуальна уже лет 15.
     
     
  • 7.58, Аноним (58), 18:17, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Обновлять раз в год что именно? Селероны? Атомы? Пеньки 4 на версию с большим числом мегагерц?
    Ты если б умел в компиляцию и потребление знал бы что насиловать проц на 300 ватт чтобы браузером пользоваться - моветон.
    Там всего несколько процентов прирост.
    А вот компиляция дает и 30 и 50% прирост.
    Тут не место для детской неожиданности в стиле "Мама я обослался.".
     
     
  • 8.70, Аноним (70), 20:48, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Аноним, что ж ты так эксперта опеннета размазал Он уже хотел рассказать что Vis... текст свёрнут, показать
     
  • 7.73, Тот_ещё_аноним (ok), 23:15, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тут сарказм не понимают)
     
  • 4.32, Аноним (32), 16:00, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Так уже составляет, ядро собирается клангом, статический анализатор используют для проверок кода.
     
  • 2.3, Аноним (-), 13:15, 21/09/2023 Скрыто ботом-модератором     [к модератору]
  • +6 +/
     

     ....ответы скрыты (11)

  • 1.5, Аноним (5), 13:19, 21/09/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +5 +/
     
  • 1.6, Zenitur (ok), 13:39, 21/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Вопрос: почему при сборке libomp скрипты сборки нашли в моей системе CUDA и компильнули какие-то nvptx? Для чего нужна поддержка CUDA в LLVM?

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

     
     
  • 2.9, Аноним (4), 13:56, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ffmpeg использует llvm в большинстве дистрибутивов, чтобы он использовал нормальные проприетарные либы его надо настраивать и компилировать отдельно (поэтому и фильтры только плохие будут, когда с llvm скомпилировано).
     
     
  • 3.11, Zenitur (ok), 14:06, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, я собираю ffmpeg при помощи GCC. С флагами --enable-nonfree и --enable-nvenc. Тогда как cuvid и прочее не знаю зачем нужно, если есть nvenc (может рукастым ребятам с рутрекера для рипов нужно что-то более качественное, чем nvenc). А вот fbc - имбовая фича, жаль что заблокана по дефолту.
     
     
  • 4.17, Аноним (4), 14:36, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не, это отдельно и авторы ffmpeg пытаются убедить что надо переходить на плохой вариант с llvm. Там флаги --enable-nonfree --enable-cuda --enable-nvenc --enable-nvdec --enable-ffnvcodec --disable-cuda-llvm --enable-cuda-nvcc --enable-libnpp. Но это имеет смысл только когда что-то кодируешь видеокартой, что не очень актуально на практике. Фильтры через libnpp не такие корявые, там и так качество ниже плинтуса.
     
     
  • 5.18, cheburnator9000 (ok), 14:49, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что? Кодировать на видеокарте не актуально? Я вот например пережимаю сериал. Скачал bdremux, каждая серия по 25 гб, кодирую под вендой через staxrip, H265 nvenc preset P7, vbr, bitrate 8000, -multipass 2pass-full результат примерно под 4гб на серию, качество судя по SSIM, VMAF в FFMetrics практически 99.7-9%. На моем томогочике вместо процессора кодируется 15 фпс, на видеокарте 90-150 фпс в зависимости от сцены.
     
     
  • 6.20, Аноним (4), 15:14, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Очень неактуально. Картинка паршивая от кодера, фильтры только дефективные или профита практически не будет если кадры туда-сюда гонять. А метрики не учитывают дефекты которые прекрасно видно глазами. Дело твоё конечно, но будь ты проклят, если ты собираешься это слить в интернет.
     
     
  • 7.43, cheburnator9000 (ok), 17:22, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ты явно болен. Последние версии nvenc с vbr битрейтов с пресетом P7 кодируют на уровне и сравнимо с preset medium в x265. VBR работает по принципу если сцене нужно больше битрейта он возмет больше битрейта. Например, для сцены с высохшей травой и деревьями битрейт идет 15 мбит и никаких квадратов нет. FFMetrics сравнивают идентичность два кадра из оригинала и пользовательского файла и использует возможности ffmpeg. VMAF написали в Netflix, а не на чугуноплавильном заводе имени Ильича Ленина.

    Но если у тебя 16 ядерный 5ггц Intel ты можешь вполне успеть пожарить яишницу с пресетом slow. Все что быстрее пресета medium на x265 дает худшие результаты по сравнению с nvenc.

     
     
  • 8.50, Аноним (4), 17:40, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет, ты Я знаю, что такое vmaf, получше тебя, и он проморгает кучу дефектов и а... текст свёрнут, показать
     
     
  • 9.51, cheburnator9000 (ok), 17:43, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это говно, то говно И чем же сударь изволит кодировать Давай еще скажи veryfas... текст свёрнут, показать
     
     
  • 10.57, Аноним (4), 18:12, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я кодирую x265-slower с твиками, потому что не могу позволить veryslow, crf 21 2... текст свёрнут, показать
     
     
  • 11.63, cheburnator9000 (ok), 19:12, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    crf overrated шлак раздувающий размер файла на пустом месте, если ты кодируешь B... большой текст свёрнут, показать
     
     
  • 12.65, Аноним (4), 19:33, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот из-за таких кадров с ококк битрейт давайте я лучше пережму по пятому кругу ... текст свёрнут, показать
     
     
  • 13.67, cheburnator9000 (ok), 19:38, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Никто не пережимает уже пережатое Берут оригинал в виде BDRemux где видеопоток ... текст свёрнут, показать
     
     
  • 14.69, Аноним (4), 19:43, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Блюрей уже пожат и качество может плавать Но это влияет на артефакты кодировщик... текст свёрнут, показать
     
  • 11.64, cheburnator9000 (ok), 19:19, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И да можешь выложить тут полностью команду кодирования ffmpeg x265 чтобы местные... текст свёрнут, показать
     
     
  • 12.68, Аноним (4), 19:41, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кодирование с потерями подразумевает, что качество ухудшается в любом случае Не... текст свёрнут, показать
     
     
  • 13.80, Прохожий (??), 07:13, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это не так для lossless кодеков Это не так для кодеков, у которых следующий фре... текст свёрнут, показать
     
     
  • 14.81, Аноним (4), 10:47, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Твоя правда, в теории Я не сравнивал и не могу ничего сказать по этому поводу ... текст свёрнут, показать
     
  • 2.12, ProfessorNavigator (ok), 14:06, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Вопрос: почему при сборке libomp скрипты сборки нашли в моей системе CUDA и компильнули какие-то nvptx? Для чего нужна поддержка CUDA в LLVM?
    > Мне так понимается, что обычному пользователю - ни для чего (иначе это собирали бы в дистрах). И это только для нейросеток.

    Обычные пользователи разные бывают - смотря для чего вы используете ваш ПК. CUDA - это использование ядер видеокарты nvidia для вычислений. Фактически вы добавляете дополнительные возможности распараллеливания программ. Штука в целом небесполезная. Но, повторюсь, зависит от целей и задач.

    Так-то большинству пользователей как таковой и ПК в общем-то не нужен, если посмотреть здраво.

     
     
  • 3.13, Zenitur (ok), 14:09, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я использую CUDA в парочке прог. В том же DaVince Resolve. Однако все те проги, которые я использую, собираются обычным GCC. Поэтому мне и стало интересно, что даёт поддержка CUDA в libomp? Может для нейросеток что-то
     
     
  • 4.19, ProfessorNavigator (ok), 15:08, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Я использую CUDA в парочке прог. В том же DaVince Resolve. Однако
    > все те проги, которые я использую, собираются обычным GCC. Поэтому мне
    > и стало интересно, что даёт поддержка CUDA в libomp? Может для
    > нейросеток что-то

    Если вы про эту - https://openmp.llvm.org/ - libomp, то как раз то, что доктор прописал. Если у вас видеокарта ничем серьёзным не занята, то почему бы не нагрузить её парой-другой потоков? Тем более, что в современных программах многопоточность присутствует практически везде.

     
  • 2.86, Ivan_83 (ok), 12:35, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что вам было пофиг и вы не задавали никакие опции для CMake, оно собрало как авторы посчитали нужным.
     

  • 1.7, Аноним (7), 13:43, 21/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ranges::iota до сих пор нет. Реально достало.
     
     
  • 2.15, Аноним (15), 14:26, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это компилятор от "друзей опенсорса" только для того и существует, чтобы всех печалить и доставать, чтобы те присмотрелись к другим, более проприетарным, продуктам от "друзей".
    Используйте GCC под правильной лицензией, и будет вам счастье.
     
     
  • 3.40, Аноним (40), 17:14, 21/09/2023 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
  • 3.42, АнонБатон (?), 17:18, 21/09/2023 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     

     ....ответы скрыты (3)

  • 1.10, Аноним (10), 14:00, 21/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Что там про Golang?
     
     
  • 2.78, Аноним (78), 06:08, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вышел 1.21...
     
  • 2.96, Брат Анон (ok), 14:05, 28/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    tinygo к твоим услугам.
    Hello, world что-то 16 кБ.
     

  • 1.14, Аноним (14), 14:10, 21/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Теперь bool аж ключевое слово в Си - прогресс:)
     
     
  • 2.24, Аноним (-), 15:31, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Лично мне, 0 - false и 1- true ничем не мешали. Читабельность никак не страдала. Новый стандарт ещё не принят, зачем они впереди паровоза бегут?
     
     
  • 3.37, YetAnotherOnanym (ok), 16:22, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Если не вваливать в синтаксис новые и новые тонны сахара с каждым релизом, то чейнджлог очень скудный получится.
     
  • 3.97, Брат Анон (ok), 14:05, 28/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Типизация, сэр... Типизация!
     

  • 1.16, Аноним (16), 14:34, 21/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Авторы новости умалчивают, но поддержка модулей C++20 там до сих пор полностью так и не реализована. Не говоря уже о такой мелочи, как поставка в виде модулей стандартной библиотеки (хоть это из C++23, - не суть).
     
     
  • 2.22, Аноним (-), 15:20, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Не раз слышу нытьё Си плюс-плюсников про "поддержку модулей". Вы чо там, все из Паскаля перешли что-ли? Модули - чисто Паскальская тема.
     
     
  • 3.28, Аноним (32), 15:55, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не только Паскаль, система пакетов в Джаве вдохновлена Модулой.
     
  • 2.29, Аноним (32), 15:58, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот казалось бы, самое важное новшество в плюсах, позволяющее ускорить компиляцию проектов и повысить читаемость кода, до сих пор не реализовано.
     
     
  • 3.31, 12yoexpert (ok), 15:59, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    precompiled headers, ccache, да что угодно, только не бинарные исходники
     
     
  • 4.33, Аноним (32), 16:02, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это никак не связано. Хедеры те же тебе дают спокойно указывать на блобы.
     
     
  • 5.34, Аноним (-), 16:10, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Системные бинарные файлы библиотек являются плотью и кровью экосистемы GNU/Linux. Не надо их сравнивать с так называемыми "блобами".
     
  • 2.30, 12yoexpert (ok), 15:58, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > но поддержка модулей C++20 там до сих пор полностью так и не реализована

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

    Store data in flat text files

     
     
  • 3.36, Аноним (36), 16:13, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Модули никак этому не припятствуют. Но тебе не нужно больше будет писать код дважды. Плюс, что гораздо важнее, шаблоны будут вычисляться один раз, а не при каждом включении.
     
     
  • 4.38, YetAnotherOnanym (ok), 16:26, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > припятствуют

    В Сталкера переиграл?

     
  • 4.39, Аноним (32), 16:43, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Самое главное - проекты размером с ядро Линукс не будут компилироваться целыми днями.
    Хедеры в подобных проектах - Авгиевы конюшни.
    https://www.opennet.ru/opennews/art.shtml?num=56475
     
     
  • 5.45, Аноним (45), 17:31, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что-нибудь сломают и перестанет собираться.
     
  • 5.48, Аноним (48), 17:38, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вся гента вместе с ff у меня собирается два часа на райзене, о каких днях речь?
     
     
  • 6.55, Аноним (36), 18:03, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это пока ты один. Когда у тебя жирная контора, расходы на сборочные сервера начинают расти неимоверно.
     
     
  • 7.59, Аноним (48), 18:41, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    эээ, вот с этого момента поподробнее

    у вас каждый раз вся контора с нуля всё собирает на одном райзене? про ccache/shared ccache не слышал?

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

     
     
  • 8.84, Аноним (84), 12:04, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ой, знаешь сколько я этих пузырей про жирные конторы и миллионы серверов слышал ... текст свёрнут, показать
     
  • 6.82, Аноним (82), 10:54, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    То есть, по-твоему это нормально целых два часа собирать систему?
    Ты это можешь нормально сделать либо ночью, либо на выходных.
     
  • 5.77, Аноним (77), 05:27, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Хедеры в подобных проектах - Авгиевы конюшни.

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

     
     
  • 6.83, Аноним (82), 10:55, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    От головняков системщиков зависит скорость поддержки оборудования, в т.ч. новых видеокарт. Поэтому стоит волноваться обычному пользователю.
     
  • 2.41, Аноним (-), 17:16, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    1. поддержка модулей давно есть
    2. пока не будет допилена поддержка в CMake, поддержка модулей в компиляторе бесполезна.
     
     
  • 3.44, Аноним (45), 17:29, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пусть разрабы llvm уже допишут Cmake.
     
  • 3.75, Аноним (16), 00:40, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Поддержка модулей в CMake будет допилена в этом году, а вот поддержка модулей компиляторами - ХЗ когда https://www.youtube.com/watch?v=DJTEUFRslbI
     

  • 1.46, Аноним (47), 17:35, 21/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Вот бы что-нибудь скопмилировать, да только не знаю что, всё уже придумано и по 100500 раз переписано. Вовремя я свалил из IT, ох вовремя...
     
     
  • 2.56, Svidetel_polimorfizma (?), 18:06, 21/09/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Операционные сборщики кончились от gcc-8 и llvm-8/10 так спрогнозировал griggorii дольше фаилы будут в размерах в два раза больше собранные другими компиляторами , тут стает вопрос нужен ли образ iso 4 Gb если можно сделать 2 Gb ?
     

  • 1.71, Аноним (71), 23:09, 21/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Эх, жаль в своё время так и не устроился на С++ из-за документов. Пошёл в веб-разработку, а после этого на С++ просто никто не захотел брать.
     
     
  • 2.76, Аноним (77), 05:22, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем тебе сишка? В вебе все бабло, весь бизнес там. Сишечка это скорее призвание но точно не про быстрые деньги, по крайней мере в этой стране. У нас вот в компании джаваскрипт-мaкаки зарабатывают больше чем один единственный сишник который держится всеми силами за эту работу в страхе что его уволят.
     

  • 1.79, Аноним (79), 06:41, 22/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > возможности, определённые в будущем Си-стандарте

    Спасибо, но вот вам ответ - мы не будем выходить за пределы Кернигана-Ритчи.

     
     
  • 2.98, Брат Анон (ok), 14:06, 28/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Слова не мальчика, но мужа.
     

  • 1.88, Ivan_83 (ok), 12:45, 22/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Навалили странного синтаксического сахара.
    Ладно под кресты, там уже давно сошли с ума и вваливают всё что только могут, но кто в С будет юзать вот такое странное в здравом то уме!?
     
     
  • 2.89, Аноним (14), 14:09, 22/09/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да, что вы как дети малые!!! Кому надо, те и будут пользоваться; вас никто не заставляет, - вы до сих пор можете оставаться в рамках C90; тоже касается С++.
     

  • 1.91, крокодил мимо.. (?), 16:00, 22/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    полностью согласен и поддерживаю Аноним-а 5-го сообщения, что NULL != 0 и далее..

    ещё может многим неактуально, но печалит отсутствие поддержки legacy кода.. нет backward compatible mode.. приходится в системе, как минимум, держать два компилятора: системный и "старый", а-ля gcc-8.4.0 или типа того.. иначе устаёшь править исходники..

    и опции у llvm с gcc не идентичны: -Qunused-arguments и прочее.. иногда бывает быстрее тупо сменить компилятор на часть кода, чем причёсывать сырцы под то или иное..

    p.s.: интересно, какая версия шланга будет у OpenBSD-7.4?..

     
  • 1.93, iZEN (ok), 08:01, 23/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    До сих пор LLVM 13-м собирают Firefox и R-Studio, 15-м — Mesa'у, 16-м — FreeBSD, у Chromium собственный однопоточный сборщик на базе LLVM. Теперь вот это вот 17-е...

    КУДА СТОЛЬКО?!

     
     
  • 2.95, Аноним (95), 08:43, 25/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Причем тут FreeBSD?
     

  • 1.94, nc (ok), 14:20, 24/09/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А вот это
    goto("mov %1, %0\n\tjmp %l[label]" : "=r" (x) : "r" (45) : : label);
    точно Си? Двоеточия между строковыми литералами, какие-то аргументы строк в скобках??? Это какое-то языковое расширение?
     
     
  • 2.99, Аноним (99), 17:18, 29/09/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Встроенный ассемблер - это всегда расширение.
     

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



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

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