The OpenNET Project / Index page

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

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

19.03.2023 08:50

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

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

  • Применяемый по умолчанию стандарт C++/ObjC++ выставлен в gnu++17 (ранее применялся gnu++14), что подразумевает поддержку по умолчанию возможностей C++17 с расширениями GNU. Для возвращения прежнего поведения можно использовать опцию "-std=gnu++14".
  • Реализованы расширенные возможности, связанные со стандартом C++20:
  • Реализованы возможности, определённые в будущем стандарте C++2b:
  • Реализованы возможности, определённые в будущем Си-стандарте C2x:
    • Для отключения предупреждения "-Wunused-label" разрешено применение атрибута "[[maybe_unused]]" к меткам,
    • Разрешено размещение меток в любых местах внутри составных выражений,
    • Добавлены операторы typeof и typeof_unqual,
    • Новый тип nullptr_t и константа nullptr для определения нулевых указателей, которая может конвертироваться в любой тип указателей и представлять вариант NULL, не привязанный к целочисленным типам и типу void*.
    • В режиме C2x разрешён вызов макроса va_start с переменным числом аргументов (variadic).
  • В режимах соответствия стандартам C99, C11 и C17 опции "-Wimplicit-function-declaration" и "-Wimplicit-int" по умолчанию теперь приводят к выводу ошибки вместо предупреждения.
  • Косвенное использование "void *" (например, "void func(void *p) { *p; }") в режиме C++ теперь приводит к генерации ошибки, по аналогии с ISO C++, GCC, ICC и MSVC.
  • Указание битовых полей в качестве операндов инструкций (например, "__asm { mov eax, s.bf }") в ассемблерных inline-блоках в стиле Microsoft теперь приводит к генерации ошибки.
  • Добавлена диагностика наличия отличающихся структур и объединений с одинаковыми именами в разных модулях.
  • Расширены возможности, связанные с поддержкой OpenCL и OpenMP. Улучшена диагностика шаблонов C++, используемых в аргументах ядра OpenCL. Улучшена поддержка блока подстановки в очередь для AMDGPU. Ко всем функциям неявно добавлен атрибут nounwind. Улучшена поддержка встроенных функций.
  • Предоставлена возможность использования переменной окружения CLANG_CRASH_DIAGNOSTICS_DIR для определения каталога, в который сохраняются диагностические данные об аварийных завершениях.
  • Поддержка Unicode обновлена до спецификации Unicode 15.0. Разрешено применение некоторых математических символов в идентификаторах, таких как "₊" (например, "double xₖ₊₁").
  • Добавлена поддержка загрузки нескольких файлов конфигурации (вначале загружаются файлы конфигурации по умолчанию, а затем заданные через флаг "--config=", который теперь можно указывать несколько раз). Изменён порядок загрузки файлов конфигурации по умолчанию: clang вначале пытается загрузить файл <triple>-<driver>.cfg, а если он не найден пытается загрузить два файла <driver>.cfg и <triple>.cfg. Для отключения загрузки файлов конфигурации по умолчанию добавлен флаг "--no-default-config".
  • Для обеспечения повторяемых сборок предоставлена возможность замены значений текущей даты и времени в макросах __DATE__, __TIME__ и __TIMESTAMP__ на время, заданное в переменной окружения SOURCE_DATE_EPOCH.
  • Для проверки наличия встроенных функций (builtin), которые могут быть использованы в контексте констант, добавлен макрос "__has_constexpr_builtin".
  • Добавлен новый флаг компиляции "-fcoro-aligned-allocation" для выровненного распределения кадров сопрограмм.
  • В флаге "-fstrict-flex-arrays=" реализована поддержка третьего уровня проверки гибкого элемента-массива в структурах (Flexible Array Members, массив неопределённого размера в конце структуры). На третьем уровне только размер "[]" (например, "int b[]") обрабатывается как гибкий массив, а размер "[0]" (например, "int b[0]") - нет.
  • Добавлен флаг "-fmodule-output" для включения однофазной модели компиляции стандартных модулей C++.
  • Добавлен режим "-Rpass-analysis=stack-frame-layout", позволяющий диагностировать проблемы с раскладной стековых кадров.
  • Добавлен новый атрибут __attribute__((target_version("cpu_features"))) и расширена функциональность атрибута __attribute__((target_clones("cpu_features1","cpu_features2",...))) для выбора определённых версий функций, предоставляемых CPU AArch64.
  • Расширены средства диагностики:
    • Добавлено предупреждение "-Wsingle-bit-bitfield-constant-conversion" для определения неявного усечения при присвоении единицы одноразрядному знаковому битовому полю.
    • Расширена диагностика неинициализированных constexpr-переменных.
    • Добавлены предупреждения "-Wcast-function-type-strict" и "-Wincompatible-function-pointer-types-strict" для выявления потенциальных проблем при приведении типов функций.
    • Добавлена диагностика использования некорректных или зарезервированных имён модулей в блоках экспорта.
    • Улучшено выявление пропущенных ключевых слов "auto" в определениях.
    • В реализации предупреждения "-Winteger-overflow" добавлены проверки дополнительных ситуаций, приводящих к переполнениям.
  • Реализована поддержка архитектуры набора команд LoongArch (-march=loongarch64 или -march=la464), применяемой в процессорах Loongson 3 5000 и реализующей новый RISC ISA, похожий на MIPS и RISC-V.

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

  • В коде LLVM разрешено использование элементов, определённых в стандарте C++17.
  • Повышены требования к окружению для сборки LLVM. Сборочный инструментарий теперь должен поддерживать стандарт C++17, т.е. для сборки необходимы как минимум GCC 7.1, Clang 5.0, Apple Clang 10.0 или Visual Studio 2019 16.7.
  • В бэкенд для архитектуры AArch64 добавлена поддержка CPU Cortex-A715, Cortex-X3 и Neoverse V2, ассемблера для RME MEC (Memory Encryption Contexts), расширений Armv8.3 (Complex Number) и мултиверсионирования (Function Multi Versioning).
  • В бэкенде LLVM для архитектуры ARM прекращена поддержка целевых платформ Armv2, Armv2A, Armv3 и Armv3M, генерация корректного кода для которых не гарантировалась. В clang в опции "-march" прекращена поддержка значений armv2, armv2A, armv3 и armv3M. Добавлена возможность генерации кода для инструкций работы с комплексными числами.
  • В бэкенд для архитектуры X86 добавлена поддержка архитектур набора команд (ISA) AMX-FP16, CMPCCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT. Добавлена поддержка инструкций RDMSRLIST, RMSRLIST и WRMSRNS. Реализованы опции "-mcpu=raptorlake", "-mcpu=meteorlake", "-mcpu=emeraldrapids", "-mcpu=sierraforest", "-mcpu=graniterapids" и "-mcpu=grandridge".
  • Добавлена официальная поддержка платформы LoongArch.
  • Улучшены бэкенды для архитектур MIPS, PowerPC и RISC-V
  • В отладчик LLDB добавлена поддержка отладки 64-разрядных исполняемых файлов для архитектуры LoongArch. Улучшена обработка отладочных символов COFF. Обеспечено отсеивание дубликатов DLL в списке загружаемых Windows-модулей.
  • В библиотеке Libc++ основная работа была сосредоточена на реализации поддержки новых возможностей стандартов C++20 и C++23.
  • В компоновщике LDD значительно сокращено время связывания за счёт распараллеливания операций сканирования перемещений адресов и инициализации секций. Добавлена поддержка сжатия секций с использованием алгоритма ZSTD.


  1. Главная ссылка к новости (https://discourse.llvm.org/t/l...)
  2. OpenNews: Релиз набора компиляторов LLVM 15.0
  3. OpenNews: Проект LLVM развивает средства для безопасной работы с буферами в C++
  4. OpenNews: Реализована возможность сборки Glibc при помощи инструментария LLVM
  5. OpenNews: Проект LLVM представил HPVM 1.0, компилятор для CPU, GPU, FPGA и ускорителей
  6. OpenNews: Первый стабильный релиз компоновщика Mold, развиваемого разработчиком LLVM lld
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58817-llvm
Ключевые слова: llvm, clang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (79) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:07, 19/03/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.4, Аноним (4), 09:50, 19/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >В бэкенде для архитектуры ARM прекращена поддержка целевых платформ Armv2, Armv2A, Armv3 и Armv3M.

    И сюда гномеры пробрались!

     
     
  • 2.6, Аноним (6), 10:11, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну заброcили устаревшие платформы. А гномеры то тут при чём?
     
  • 2.10, Аноним (-), 10:26, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    У них там офигеть архитектура - вся кодогенерация в одной огроменной суперлибе. Без разбивки на компоненты. Ну либа и стала под сто метров весом. Нормальная такая либа. Только вот вот сдохнет под своим весом. Вот и приходится хоть немного жир выпускать.

    Зато, вот, "Не надо держать 100500 сборгк gcc." (c) предыдущий оратор. Задача просто станет нерешаемой вообще :)))

     
     
  • 3.15, Аноним (15), 11:10, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мне самому не нравится, что для добавления бэкенда нужно пересобирать clang, а нельзя сделать динамическую библиотеку. Можно предположить, что если растащить всё по динамическим библиотекам, то это будет намного труднее сопровождать, ибо каждую экспортируемую функцию надо проанотировать соответствующими макросами, в результате работа сведётся к поиску непроанотированных функций, их анотации и устранению циклических зависимостей (винда их не терпит). И так после каждого изменения внутренней структуры, которая происходит довольно часто.
     
     
  • 4.98, Аноним (-), 22:56, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Меня просто размер этой либы начинает пугать. Особенно если посмотреть на то сколько архитектур GCC тулчейны поддерживают и их еще нету в ЭТОМ. "Кадавр жрал" (c).
     
  • 2.12, Аноним (12), 10:48, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Похоже, что они никогда и не поддерхивались, а то, что компилятор принимал их как аргумент - это ошибка: он всё равнотгенерил код для поздних версий. https://github.com/llvm/llvm-project/issues/57486

    Так что если кому нужно v2 и v3, то пусть пилят поддержку, скорее всего её с радостью примут.

     
  • 2.14, Анонн (?), 10:58, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Это не гномеры. Это новостедел так написал.
    Вот что в оригинале:
    "-march values for targeting armv2, armv2A, armv3 and armv3M have been removed. Their presence gave the impression that Clang can correctly generate code for them, which it cannot."

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

     
     
  • 3.20, Аноним (20), 12:29, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Читайте дальше в списке изменений:
    Support for targeting Armv2, Armv2A, Armv3 and Armv3M has been removed. LLVM did not, and was not ever likely to generate correct code for those architecture versions so their presence was misleading.
     
  • 3.21, Аноним (20), 12:31, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы процитировали изменения из clang, а теперь посмотрите изменения из списка для llvm.
     

  • 1.5, Аноним (5), 09:52, 19/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Капец, как же всё сложно стало в этом мире. Слишком много переменных, сущностей...
     
     
  • 2.7, Аноним (6), 10:14, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще да, бесит конечно, что всё так сложно. Но сабж как раз делает создание кроссплатформенного софта проще
     
     
  • 3.11, Аноним (-), 10:28, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    "Компьютеры позволили делать ошибки намного быстрее и массовее!"
     
  • 2.47, Аноним (47), 16:15, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот в неолите помню офигенно было!
     
  • 2.48, Аноним (48), 16:19, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    То ли дело 1000 лет назад - полжизни монотонный труд, полжизни в армии. А потом в 40 лет помер от инфекции для пущей лёгкости.
     
  • 2.104, Serg (??), 16:29, 29/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот то ли дело в 1960х: более двадцати разных архитектур с полузакрытой документацией...
     

  • 1.16, Шарп (ok), 11:14, 19/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >Разрешено применение некоторых математических символов в идентификаторах, таких как "₊" (, например "double xₖ₊₁")

    Зачем? Всё равно человек написавший так в коде будет уволен с позором, а изменения откачены назад.

     
     
  • 2.23, Аноним (23), 12:39, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вот вы и ищете программистов, а на самом деле вы уже всех нормальных программистов выгнали и они к вам больше не идут.  
     
  • 2.97, n00by (ok), 08:18, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не можете найти соответствующее место в стандарте? Поэтому кого-то надо уволить? Ну так то да.
     

  • 1.17, VoiD (?), 11:51, 19/03/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
     
  • 2.18, Аноним (18), 12:14, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 3.19, VoiD (?), 12:24, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 4.24, Анонимусс (?), 12:40, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 5.28, Аноним (1), 13:15, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +5 +/
     
     
  • 6.29, anonymous (??), 13:19, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 7.31, Аноним (23), 13:22, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 7.32, Анонимусс (?), 13:23, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.36, VoiD (?), 13:48, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 6.39, Ivan_83 (ok), 14:15, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
     
  • 7.40, VoiD (?), 14:50, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 8.41, Самый умный из вас (?), 15:04, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
     
  • 9.45, Аноним (23), 15:58, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 10.54, Ivan_83 (ok), 17:20, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 11.59, Аноним (59), 17:59, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 9.50, InuYasha (??), 16:31, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 10.52, Майор (??), 16:43, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 10.66, VoiD (?), 18:48, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 11.69, Самый умный из вас (?), 19:15, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 12.75, VoiD (?), 19:54, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 11.74, Аноним (74), 19:53, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 11.82, Ivan_83 (ok), 21:16, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 8.53, Ivan_83 (ok), 17:18, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 9.58, Аноним (58), 17:52, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 9.61, VoiD (?), 18:21, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 6.49, iZEN (ok), 16:22, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 7.56, Ivan_83 (ok), 17:25, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 8.57, iZEN (ok), 17:52, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 7.63, VoiD (?), 18:31, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 8.76, Аноним (74), 19:56, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 9.80, VoiD (?), 20:19, 19/03/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     

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

  • 1.35, Anonymoustus (ok), 13:43, 19/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Мне бы для Windows XP. Такая сборка будет или мне дальше страдать, используя GCC^W MS Visual Studio?

     
     
  • 2.42, Аноним (42), 15:54, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Собери сам. clang поддерживает таргеттинг XP, нужно только флаги нужные задать. MonGW-w64 прекрасно работает на  XP. Только есть проблема. XP был дропнут разрабами pthreads. Им, видите-ли не хочется runtime dispatch делать, а новое API - 1 (ОДНУ, Карл) функцию от Висты - использовать хочется. В любом случае можно попробовать поставить One Core API, которое эту функцию реализует.
     
     
  • 3.43, Аноним (42), 15:55, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    При больом желании можно задействовать старую версию pthreads.
     
     
  • 4.79, Аноним (79), 20:15, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > При больом желании

    Можно и как "больНом" интерпретировать

     
  • 3.90, Фёдор (?), 09:06, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Можно не ставить весь One Core API (поскольку это так-себе удовольствие, очень уж в нём пока косяков много). Достаточно выдрать оттуда нужную DLL и подсунуть её тому бинарнику, который её хочет (если нужно, то поменять таблицу импорта). А ещё можно написать тупенький враппер, который пробрасывает все вызовы в оригинальную DLL, кроме одной функции, код которой дёрнуть из Wine.
     
  • 2.44, Официальный представитель LLVM (?), 15:55, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Официально заявляю, никаких сборок для Windows XP мы больше никогда не будем делать. Спасибо за проявленный интерес.  
     
     
  • 3.46, Аноним (42), 16:02, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ,- раздался пронзительный с известной стороны.
     
  • 2.55, Ivan_83 (ok), 17:22, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Может пора подумать о будущем?
    Как вы через 10 лет видите свою жизнь?)
     
     
  • 3.67, Аноним (67), 18:56, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >Как вы через 10 лет видите свою жизнь?

    Выкатывают open window — клон хп/семерки и все взявшись за руки переходят на него.

    Замечу что ос это монолитное АПИ с гарантиями совместимости и безопасности. По такому критерю многие дистрибутивы линуха не являются полноценными ОС — у них нет своего апи поверх которого можно писать пригладные приложения. Есть интерфейс ядра, интерфейсы конкретных системных приложний работающих в нем(вроде тех же иксов), а прикладному софту приходится играть в угадайку с чем он может взаимоестовать и через какие костыли. Именно поэтому конпеляция не останавливается никогда, а в нормальных ОС приложения скомпилированые один раз просто работают годами.

    Выйди реально что-то на уровня open win линухи потеряют и те 2% десктопа что имеют.

     
     
  • 4.84, Ivan_83 (ok), 22:22, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Смотря что считать стабильным API.
    На уровне ядря и стандартных либ - у меня на фре всё стабильно.
    Но ABI меняется, и я не вижу в этом проблемы, пока у меня опенсорсный софт который я сам собираю.

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

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

     
     
  • 5.85, Аноним (67), 23:15, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >я сам собираю

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

    В мире линухов не считается добродетелью экономить чужие мозговые ресурсы. Это не злой умысел, а простое отсутвие стабильного АПИ ОС помноженное на культуру полного контроля компьютера(казалось бы причем тут @на-льники?). Итог закономерен - 2% пользователей или 3-сигма в матстате, ибо очень необычным кадрам такое нравится.

     
     
  • 6.86, Ivan_83 (ok), 03:18, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Чем дольше гнилые бинарники совместимы - тем больше не решённых проблем под капотом и тем дороже это поддерживать.

    Вы возможно не застали переход с 9х венды на 2к/хр, а я застал, и помню как приходилось некоторые бинарники патчить для совместимости.
    А уж какие эпичные легенты про Ченга ходят и то как он костылял bug-to-bug совместимость под каждое отдельное приложение вы наверняка тоже не знаете.
    Ну и там всякие утилиты которые в реестр позволяет записать для каждого приложения какие и как баги эмулировать - это дальнейшее развитие темы.

    И отдельно, отладка приложений без исходников - это возня с file/reg/procmon и дебагером, что требует на порядки больше и времени квалификации чем читать и компелять из исходников.

    Всё вместе это приводит к:
    - бинарник ты наверное можешь перетащить, но рано или поздно он перестаёт работать на свежей ОС
    - куча костылей которые нужно поддерживать ради совместимости
    - отладка дебагером или всякими низкоуровневыми штуками, за долго и дорого, с патчингом на асме (тут я рекомендую почитать историю про нид фор спид 3 и как его энтузиаст патчил, и то это было возможно потому что в 98 году компилятор был без оптимизаций и асмовый код читается как сишный почти что)


    Что до % - мне как то всё равно.
    Отмечу только что лет 20 назад в инете были в основном обеспеченные, образованные и целеустремлённые люди, это потом туда пришли остальные 99,9% баласта.

     
  • 4.87, Ivan_83 (ok), 03:24, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё маенький нюанс: то WinAPI которое вам так нравится, оно принадлежит МС и с этим ничего не поделать. Они в любой момент могут начать регулировать его реализации на законных основаниях.
     
     
  • 5.88, Neon (??), 04:14, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Как принадлежит, так и распренадлежит))). Делов то.)))
     
     
  • 6.92, Аноним (59), 09:35, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем им распренадлежать? Майки могут просто сделать правильный линукс как ОС. CBL-Mariner уже неплохой заход, только какбэ чуть с другой стороны, но направление верное.  
     
     
  • 7.96, Ivan_83 (ok), 17:54, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не могут.
    Нормальный - это принадлежащий коммунити, что противоречит их традиционным моделям заработка.
     
     
  • 8.99, Аноним (-), 23:03, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще, вон на абажуре они забили на идею впаривать его как рантайм для дотнет-о... большой текст свёрнут, показать
     
  • 6.95, Ivan_83 (ok), 17:52, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Попытатся что то отнять у богатой корпорации из америки - нуну.
     
  • 5.103, Мда (?), 00:41, 24/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сказочник. МС обратную совместимость уже 30+ лет тянут.
    С трудом им удается выкинуть лохматый код, чтобы юзвери не ныли.
     

  • 1.51, Аноньимъ (ok), 16:36, 19/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В этих хтонических стандартах только ИИ разберётся теперь.
     
     
  • 2.89, Neon (??), 04:15, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, навыдумывали всякой нечеловеческой х.е.р.н.и. Для себя, для разработчиков языка и стандартной либы. А на прикладных программистов поклали большой болт.
     
     
  • 3.91, Аноним (59), 09:30, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну конечно надо без стандарта положить болт как в расте.
     
     
  • 4.102, Мда (?), 00:40, 24/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Раст - дрянь, но C++ стандарт - дырявая дрянь с кучей undefined behaviour.
     

  • 1.73, Карлос Сношайтилис (ok), 19:48, 19/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Растохейтеры: синтаксис раста сложный, то ли дело С++!

    В это время С++:
    X(X const&) requires C<T> = default;
    constexpr auto __sb = std::tuple<int>(1);
    auto g() -> S<T*>::Ptr;
    using P = bool(*)(int, int);
    int x = a\N{abc});

     
     
  • 2.78, VoiD (?), 20:06, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да они оба монстры.


     
  • 2.83, DontTreadOnMe (?), 22:02, 19/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну во-первых у тебя приведены не полные примеры, некоторые из них синтаксически не корректны.
    Во-вторых, тут вполне нормальный синтаксис.

    Вот какое-нибудь ([](){})();, что является абсолютно корректным кодом на C++, это да. А у тебя всё вполне понятно.

     
     
  • 3.93, Карлос Сношайтилис (ok), 13:00, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > тут вполне нормальный синтаксис

    Для разработчика на С++ - да.
    Но и раст, так-то, читается как с листа для тех, кто на него хотя бы две недели потратил )

     
  • 2.94, Аноним (94), 17:16, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Теорема Эскобара.
    Зачем менять шило на мыло?
     
  • 2.101, Мда (?), 00:39, 24/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Раст хейтят как раз за то, что они очередное C++, но своё изобрели.
     

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



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

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