Size: a a a

Compiler Development

2020 December 07

RB

Rustem B. in Compiler Development
Berkus Decker
Переслано от Yuri Buyanov
Кавоооо
источник

h

hazer_hazer in Compiler Development
Berkus Decker
Переслано от Yuri Buyanov
похоже на график уровня либеральности
источник

AT

Alexander Tchitchigi... in Compiler Development
hazer_hazer
похоже на график уровня либеральности
AD&D? Не, не слышал. 😂
источник

K

Kir in Compiler Development
Alexander Tchitchigin
AD&D? Не, не слышал. 😂
Хехе
источник
2020 December 08

PS

Pavel Samolysov in Compiler Development
Нашёл там даже какой-то компилятор, по меньшей мере лексер и парсер. И мне показалось, что там своя UI библиотека?
источник

RB

Rustem B. in Compiler Development
Pavel Samolysov
Нашёл там даже какой-то компилятор, по меньшей мере лексер и парсер. И мне показалось, что там своя UI библиотека?
Нет, Dear ImGui
источник

PS

Pavel Samolysov in Compiler Development
Rustem B.
Нет, Dear ImGui
Спасибо. Но все равно очень достойная работа.
источник

RB

Rustem B. in Compiler Development
Да, тоже понравилось
источник

A

Alexey in Compiler Development
Но, блин, нахрена было завязываться на C++20? В результате оно требует GCC 10.2.0 и не может слинковаться на FreeBSD из-за несовместимости сигнатур llvm::demangle().
источник

PS

Pavel Samolysov in Compiler Development
С++20 вышел же, почему и не завязаться? Во фре ведь llvm по дефолту?
источник

A

Alexey in Compiler Development
Pavel Samolysov
С++20 вышел же, почему и не завязаться? Во фре ведь llvm по дефолту?
Во фре дефолтный (системный) компилятор это Clang 11.0.0, и большинство пакетов собирается им, в частности, LLVM. Но т.к. он еще не умеет в #include <concepts>, в данном случае для сборки приходится задействовать GCC со всеми вытекающими. Вообще, учитывая хрупкость плюсового ABI, использовать самую свежую версию стандарта в опенсорсном софте это имхо моветон; во всяком случае, нормальное олдскульное пакетирование без запекания всех зависимостей это осложняет порядочно.
источник

PS

Pavel Samolysov in Compiler Development
Здесь получается такой выбор - либо использовать последнюю версию или N - 1 (как сам LLVM пытается) без компромиссов, либо городить портянки using или define чтобы собиралось, начиная с С++11, но по возможности использовало фичи более свежих стандартов, если все же собирается современным компилятором. Видел код, написанный по второму подходу, читать его очень не просто, глаз постоянно натыкается на всякие _СXX11_CONSTEXPR, например (ибо вдруг у нас С++11, а там такого ключевого слова нет). #include <concepts> рано или поздно завезут, а код потом переписывать придется. Противоположным примером могу назвать Eclipse OpenJ9 и OMR, т.к. разрабатывается IBM, то вынуждены тянуть совместимость со всякими z/OS, IBM i, где возможно и С++11 нет. Претензия больше к инфраструктуре вокруг С++, нет Reference Implementation, всегда будут платформы, где нет компилятора, поддерживающего последний стандарт.
источник

PS

Pavel Samolysov in Compiler Development
В общем не хочется думать о С++ как о языке, последнюю версию стандарта которого можно использовать только после того, как она перестанет быть последней.
источник

D

Danya in Compiler Development
Alexey
Во фре дефолтный (системный) компилятор это Clang 11.0.0, и большинство пакетов собирается им, в частности, LLVM. Но т.к. он еще не умеет в #include <concepts>, в данном случае для сборки приходится задействовать GCC со всеми вытекающими. Вообще, учитывая хрупкость плюсового ABI, использовать самую свежую версию стандарта в опенсорсном софте это имхо моветон; во всяком случае, нормальное олдскульное пакетирование без запекания всех зависимостей это осложняет порядочно.
Ну для <concepts> клангу достаточно подсунуть libstdc++ от gcc10 и он скушает
источник

M

Michael in Compiler Development
Danya
Ну для <concepts> клангу достаточно подсунуть libstdc++ от gcc10 и он скушает
не знаю как на других дистрах / ОС, но на арчах в бинарях представляют stdlib только от gcc. А если хочется от шланга, то придется ручками компилить и это в 5 / 10 случаев заканчивается матерными криками
источник

A

Alexey in Compiler Development
Danya
Ну для <concepts> клангу достаточно подсунуть libstdc++ от gcc10 и он скушает
Боюсь, так просто в лоб это не получится. Попытался скомпилировать простой пример с концептами с помощью clang++ -nostdinc -nostdlibinc, последовательно добавляя недостающие gcc'шные инклюды, и через несколько итераций увяз в конфликтах со всех сторон.
источник

DF

Dollar Føølish in Compiler Development
Так наверное и нельзя
источник

DF

Dollar Føølish in Compiler Development
Стдлиба часть языка все таки
источник

D

Danya in Compiler Development
Предлагаю статически слинковаться с libstdc++
источник

A

Alexey in Compiler Development
Dollar Føølish
Так наверное и нельзя
Ну да, в успех я и не верил. :-) В общем, опакечу для начала без деманглинга, а там, как говорится, patches welcome.
источник