The OpenNET Project / Index page

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



"Релиз набора компиляторов LLVM 21"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Релиз набора компиляторов LLVM 21"  +/
Сообщение от opennews (?), 27-Авг-25, 19:06 
После шести месяцев разработки представлен релиз проекта LLVM 21.1.0, развивающего инструментарий (компиляторы, оптимизаторы и генераторы кода), компилирующий программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизаций). Сгенерированный псевдокод может быть преобразован в машинный код для заданной целевой платформы или использован  JIT-компилятором для формирования машинных инструкций непосредственно во время выполнения программы. На базе технологий LLVM проектом развивается компилятор Clang, поддерживающий языки программирования  C, C++ и  Objective-C. Начиная с ветки 18.x проект перешёл на новую схему формирования номеров версий, в соответствии с которой нулевой выпуск ("N.0") используется в процессе разработки, а первая стабильная версия снабжается номером "N.1"...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=63783

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Голдер и Рита (?), 27-Авг-25, 19:06   +1 +/
> (void)(void)1;

Кто, где и зачем так пишут?🤔😶‍🌫️

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #3, #11, #41, #53

2. Сообщение от Голдер и Рита (?), 27-Авг-25, 19:09   +6 +/
А вообще, замечательная новость, мы рады, что C/C++ не стоят на месте. 🥰😘🤗
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #14, #54

3. Сообщение от Аноним (3), 27-Авг-25, 19:41   +6 +/
> Устранено неопределённое поведение при (void)(void)1;

Кто и зачем так пишут стандарты, что шаг вправо-влево приводит к UB?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #8

5. Сообщение от ista011email (?), 27-Авг-25, 19:42   +1 +/
В Clang 8 внедрили часть стандарта C++ касающуюся модулей. С тех пор уже 13 релизов никак не доделали эту поддержку. Зато бегут реализовывать ещё не одобренный C++26.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #10

8. Сообщение от Аноним (8), 27-Авг-25, 20:16   +/
>Кто

Тебе ФИО нужно?
>зачем

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #49

10. Сообщение от 12yoexpert (ok), 27-Авг-25, 20:35   +1 +/
майки модули высрали - пусть сами и реализуют
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #24

11. Сообщение от A.Stahl (ok), 27-Авг-25, 20:36   +/
> (void)(void)1;

А что это значит? Я не могу распарсить это выражение.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #16

13. Сообщение от DasKolbass (?), 27-Авг-25, 20:40   +1 +/
"Разрешено не завершать файл с исходным кодом символом новой строки" -

А что, раньше было такое жёсткое требование? Зачем?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #18, #29

14. Сообщение от DasKolbass (?), 27-Авг-25, 20:44   –11 +/
Чему радоваться? Вот если бы это в нашей стране делали компиляторы и языки, то можно было порадоваться
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #38, #46

16. Сообщение от DasKolbass (?), 27-Авг-25, 20:47   +1 +/
В новости же сказано, что компилятор тоже не понимает для чего это, поэтому неопределённое поведение.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #27

18. Сообщение от _kp (ok), 27-Авг-25, 20:54   +3 +/
Не жесткое требоване, но при опечатках в #inclue файлах можно было долго искать место с ошибкой, причем найти в весьма неожиданном файле.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #26

24. Сообщение от ista011email (?), 27-Авг-25, 21:17   +/
У них то в компиляторе как раз таки реализовано на 100%. А фича реально интересная и удобная. Насколько знаю GCC потихоньку идёт чтобы всё доделать, но там очень медленно. Про движение со стороны CLang не в курсе.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #28

26. Сообщение от DasKolbass (?), 27-Авг-25, 21:23   +/
Было бы лучше если бы компилятор после каждого include-включения сам добавлял перевод строки
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #48, #62

27. Сообщение от Аноним (8), 27-Авг-25, 21:24   +/
Это не так работает. UB - это "слишком сложно, непонятно что делать, нужны доп. сведения". А то что в новости - это "хз че это, Васян, фиг разберешься, давай напишем что UB, фиг кто разберется".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

28. Сообщение от DasKolbass (?), 27-Авг-25, 21:33   +1 +/
А чем интересная и удобная? Наоборот, это противоестесственно для C++, потому что он не является языком модульного программирования. Организация исходного текста в C++ - блочная, и C++ никогда не откажется от этого, а попытка совместить блочную и модульную архитектуру ведёт к усложнению и неразберихе.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #30

29. Сообщение от Аноним (29), 27-Авг-25, 22:29   +1 +/
Вот flex обычно сегфолтится, если в конце файла нет новой строки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #40

30. Сообщение от Аноним (30), 27-Авг-25, 22:30   +3 +/
Идея в том, чтобы избавиться от сишного наследия, которое уже плохо проявляет себя в крупных проектах. Опять же, время сборки ядра Линукса как пример, и все эти бесконечные header-only библиотеки. Быть может, через двадцать лет люди вовсе не будут знать, что такое хедеры. И это хорошо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #32, #33

31. Сообщение от Аноним (33), 27-Авг-25, 22:41   +/
Я нуб. Подскажите, куда копать, чтобы сделать код на gcc с extended asm и всякими другими расширениями совместимым с clang? Extended asm поддерживается? Мб есть какой-то заголовочный файл, где расширения gcc типа __attribute__((packed)) объявляются как какие-то константы. Нашел кстати недоработку в extended asm. Было бы прикольно, если бы можно было вставить сегментный регистр переменной в памяти. Полезно, когда у тебя стек не flat и следовательно есть разница, в каком регистре хранится указатель.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #47

32. Сообщение от Аноним (32), 27-Авг-25, 22:50   +/
> Опять же, время сборки ядра Линукса как пример, и все эти бесконечные header-only библиотеки.

Э... А как же разделы для экспорта. Насколько я понимаю ничто не мешает делать то же самое использую модули. Модули - только сахар не решающие не одну проблему.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30

33. Сообщение от Аноним (33), 27-Авг-25, 22:59   +1 +/
Это типа как в Паскале, да? Уже не первый раз встречаю такую штуку, когда кто то что то хейтит, а потом вдруг оказывается, что он не прав.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #34

34. Сообщение от Аноним (34), 27-Авг-25, 23:40   +1 +/
А разве Паскаль за модули хейтят? В первую очередь, за некраткость begin-end'ов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #39

38. Сообщение от Аноним (38), 27-Авг-25, 23:52   –1 +/
Так делают, 1С, Глагол, ДРАКОН вот только зачем они нужны остальному миру?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #45

39. Сообщение от Аноним (39), 28-Авг-25, 00:29   +1 +/
> за некраткость begin-end'ов

И это проблема у сишников, которые пишут пятикаскадные семиэтажные шаблонные шаблонные идентификаторы длиною длиннее паскалевской программы?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34 Ответы: #44

40. Сообщение от Аноним (39), 28-Авг-25, 00:30   +/
вся суть сишников в одной фразе :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

41. Сообщение от neon1ks (ok), 28-Авг-25, 03:04   +1 +/
Это же Си, могу предположить, что каким-то чудом может через макросы получиться такая конструкция.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

44. Сообщение от penetrator (?), 28-Авг-25, 06:11   –1 +/
он привел реальный аргумент и перманентную причину

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

разницу чувствуешь?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #64

45. Сообщение от Голдер и Рита (?), 28-Авг-25, 07:02   +/
> ДРАКОН
> зачем они нужны остальному миру?

Медики, экономисты и бизнесу он нужен, они его юзают. Неплохой язык для не программистов.

https://link.springer.com/article/10.1007/s10209-022-00934-3

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

46. Сообщение от Голдер и Рита (?), 28-Авг-25, 07:05   +/
Так вот же, делают: https://gitflic.ru/project/alekseinedoria/trivil-0 😉
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #65

47. Сообщение от анонимммм (?), 28-Авг-25, 07:06   +/
Сгементный регистр же можно в памяти сохранить. Вариант mov такой точно есть.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

48. Сообщение от а (?), 28-Авг-25, 07:09   +1 +/
дак скорее всего так оно теперь и происходит
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

49. Сообщение от Аноним (49), 28-Авг-25, 08:41   +/
UB это проблемы созданные компиляторами, т. к. не смотря на явное указание архитектуры и процессора они ведут себя неадекватно, ссылаясь - в стандарте не описано поведение, но в стандарте все не описано т. к. нельзя охватить поведение для всех возможных текущих и будущих архитектур. потому и получается, что сдвиг 64 битного числа вправо на константу 32 на 64 битной машине с 64 битными регистрами приводит в компиляторе к UB, потому этот сдвиг при оптимизации О3 выкидывается.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #50, #55

50. Сообщение от Аноним (49), 28-Авг-25, 08:44   +/
выкинуть меньшее из зол, часть компиляторов просто обнуляют значение, т. к. приводят оба операнда к 32 битам
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #51

51. Сообщение от Аноним (49), 28-Авг-25, 08:58   +/
не знаю выводят ли компиляторы сейчас предупреждение при компиляции с O3, что выкинули или доработали пользуясь UB, раньше таких сообщений не было.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

52. Сообщение от Аноним (52), 28-Авг-25, 10:18   +1 +/
> asm((std::string_view("nop")) ::: (std::string_view("memory")));

А что за оператор такой :::
Что-то новенькое?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #63

53. Сообщение от Соль земли2 (?), 28-Авг-25, 10:44   –1 +/
А ты уже погуглил? В github/gitlab поискал примеры? У ИИ спросил?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

54. Сообщение от Соль земли2 (?), 28-Авг-25, 10:46   +/
Печально, что до сил пор пишут С и С++ вместе. Это разные языки и сходятся они чисто ситуативно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

55. Сообщение от Anon62513512124 (?), 28-Авг-25, 11:47   +/
Не очень понял в этом примере логику компилятора, почему он выкидывает эту операцию?
На первый взгляд звучит как очевидный баг оптимизации
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49

62. Сообщение от Аноним (39), 28-Авг-25, 17:57   +/
а если мне не нужен этот \n, я просто хочу несколькими инклюдами слепить цельный идентификатор из нескольких частей, например?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

63. Сообщение от Аноним (39), 28-Авг-25, 18:01   +1 +/
Всё ближе к брейнфаку приближается. Без таблицы-дешифратора уже не поймёшь, что за набор символов в коде.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52

64. Сообщение от Аноним (39), 28-Авг-25, 20:50   +/
Было бы всё нормально с инструментом и руками, люди бы не стали изобретать паскалеподобный раст.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

65. Сообщение от DasKolbass (?), 28-Авг-25, 23:18   +/
Да, спасибо, интересный проект. Надо всем поизучать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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