The OpenNET Project / Index page

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



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

Оглавление

Релиз набора компиляторов LLVM 9.0, opennews (??), 20-Сен-19, (0) [смотреть все] +1

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


73. "Релиз набора компиляторов LLVM 9.0"  +2 +/
Сообщение от meantraitor (?), 21-Сен-19, 22:24 
Во время линк-тайм оптимизаций нет никаких языков и границ между ними.
Есть кривые руки авторов компилятора rust.
Ответить | Правка | Наверх | Cообщить модератору

74. "Релиз набора компиляторов LLVM 9.0"  –1 +/
Сообщение от Ordu (ok), 21-Сен-19, 22:50 
> Во время линк-тайм оптимизаций нет никаких языков и границ между ними.

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

> Есть кривые руки авторов компилятора rust.

Ну если ты хочешь сводить всё к кривым рукам, то авторы компилятора rust как раз справились. Кроме rust'а, LTO работает с C/C++, Haskell'ом, и может ещё одним-двумя языками. При таком раскладе, выходит, кривые руки почти у всех, но не у разработчиков rust'а. Остающиеся проблемы, в общем, связаны скорее с багами LLVM, которые не проявляют себя на оптимизациях C/C++, но проявляют себя на оптимизациях rust'а, в силу того, что rust позволяет больше оптимизаций проводить.

Я выше кинул ссылку на статью, которая в общих чертах описывает эпопею с запиливанием межъязыкового LTO для раста, чтобы компилировать firefox не парясь о недооптимизации на границе между C++ и Rust. Ты почитай её на досуге, чтобы оценить сложность проблемы, это позволит тебе более обоснованно судить о том, является ли неспособность запилить для языка LTO с C/C++ признаком кривых рук или нет.

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

103. "Релиз набора компиляторов LLVM 9.0"  +1 +/
Сообщение от meantraitor (?), 23-Сен-19, 14:54 
Я-то эту статью прочитал. И, в отличие от тебя, понял, что там написано.
И как компиляторы работают я знаю получше тебя, так что не надо меня поучать.


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

104. "Релиз набора компиляторов LLVM 9.0"  –1 +/
Сообщение от Ordu (ok), 23-Сен-19, 18:44 
> Я-то эту статью прочитал. И, в отличие от тебя, понял, что там
> написано.
> И как компиляторы работают я знаю получше тебя, так что не надо
> меня поучать.

Это видно, просто на лбу написано. Что ж ты глупости такие говоришь тогда? У меня, впрочем, есть возможный ответ на этот вопрос: твоё "лучшее" знание компиляторов сугубо теоретично. Книжку прочитал какую, аль убелённый сединами препод тебе курс теории трансляторов прочитал? Я очень уважаю теорию, но при всём при этом, я всегда помню одну вещь (и тебе очень рекомендую): теория не подкреплённая практикой -- пустое место. Если ты читал книжку по теории трансляции и не написал ни одного транслятора, и не попытался использовать код существующих компиляторов для чего-либо, то лучше бы ты использовал эту книжку для дел сортирных, больше пользы бы извлёк.

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

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

125. "Релиз набора компиляторов LLVM 9.0"  +/
Сообщение от meantraitor (?), 24-Сен-19, 16:04 
Ну хорошо, допустим, я тупица, теоретик и не видел ни одного компилятора.
Просвети же меня, о мудрейший, какие такие свойства раста мешали использованию Rust+C LTO?
Я еще, видимо, и английский не понимаю. Может твои объяснения по-русски пойму?


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

128. "Релиз набора компиляторов LLVM 9.0"  +/
Сообщение от Ordu (ok), 24-Сен-19, 17:02 
> Ну хорошо, допустим, я тупица, теоретик и не видел ни одного компилятора.
> Просвети же меня, о мудрейший, какие такие свойства раста мешали использованию Rust+C
> LTO?

Я где-то говорил, что свойства раста мешали использованию Rust+C? Ты продолжаешь мыслить теоретически. LTO -- это не теоретическая штука, это не какая-то абстрактная идея о том, как можно проводить link-time оптимизации. LTO -- это кусок кода внутри llvm. _Внутри_, то есть не стоЯщий отдельно, а искусно погнутый так, чтобы без зазоров соединяться с другими кусками кода. Кусок кода имеющий множество точек входа, и каждая точка входа может принимать аргументы как явно, так и неявно. Чтобы понять как нужно дёргать этот кусок кода, чтобы он сделал именно то, что тебе нужно, требуется куча времени по изучению этого куска кода и смежных с ним. Иногда это происходит потому, что что-то там недокументировано, иногда потому что документировано, но ты не нашёл документацию, иногда потому, что ты что-то совершенно другое сделал не так и не заметил, и оно падает с ошибкой, несмотря на то, что здесь ты делаешь всё правильно, дёргаешь нужные функции API, в нужном порядке и с нужными аргументами. Ты знаешь, что косяки лезут в файле X в N'ой строке, но ты знаешь, что там всё правильно сделано, реальная ошибка где-то ещё. И вот ты сидишь в дебуггере, отслеживая как выполняется программа, которая работает, и сравнивая это с тем, как работает твоя программа, которая не работает. Тебе не знаком этот опыт? Это видно, и именно поэтому я и говорю о том, что у тебя какой-то излишне теоретический взгляд на чисто техническую проблему.

А как насчёт версий llvm? llvm меняется от версии к версии, rust идёт за llvm и привязывается к нему, но нигде нет гарантий, что clang и rust основаны на достаточно близких версиях. Эта проблема уже почти организационного уровня, и очевидно напрашивающийся способ решить её полностью -- это синхронизировать выпуски и их нумерацию шланга и раста. Но это будет очень неудобно, потому что сейчас нумерация версий rust'а привязана к плану разработки rust'а. При этом даже использовать "стабильные" версии llvm будет затруднительно, потому что подчастую используются версии llvm собранные по номеру ревизии в git, потому что именно там был исправлен блокирующий баг llvm.

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

> Я еще, видимо, и английский не понимаю. Может твои объяснения по-русски пойму?

Я думаю, что дело не в способности понимать, а в способности удерживать внимание на тексте достаточно долго, чтобы дочитать до конца. Могу предположить, что дело было так, ты прочитал два абзаца, не увидел ничего нового для себя, и решил что такому специалисту как ты, зазорно читать статью, потому как она написана для нубов. Вместо этого ты пролистал статью сверху вниз, выхватывая отдельные слова. Среди них не оказалось незнакомых, поэтому ты решил, что знаешь всё, что написано в статье. Впрочем это лишь предположение, основанное на моём прошлом опыте совершения подобных ошибок.

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

129. "Релиз набора компиляторов LLVM 9.0"  +1 +/
Сообщение от meantraitor (?), 24-Сен-19, 17:40 
Подожди-ка, мы начали с того, что я сказал, что во время LTO нет уже никаких языков.
Ты мне начал возражать. А теперь начинаешь мне впаривать про интеграционные проблемы.
Эти проблемы не новость и хорошо известны.
Я всего лишь хотел тебе сказать, что эти чуваки поимели бы те же самые проблемы, если бы пытались
точно таким же образом написать свой фронтенд для С, а не Rust. Конкретный язык тут вообще
непричем.

В статье они описали, как их (не)понимание работы LLVM не совпало с тем, как оно работает на самом
деле. Ну, разобрались, молодцы, починили, статью написали.
Но это никакой не подвиг и не прорыв. Обычная работа.

На прощанье могу тебе только посоветовать придерживать свою проницательность и свое ЧСВ,
и пытаться слышать других а не только себя любимого.
Иногда попадаются умные люди (это я не про себя), у которых многому можно научиться и узнать.


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

132. "Релиз набора компиляторов LLVM 9.0"  +/
Сообщение от Ordu (ok), 24-Сен-19, 18:02 
> Подожди-ка, мы начали с того, что я сказал, что во время LTO
> нет уже никаких языков.
> Ты мне начал возражать. А теперь начинаешь мне впаривать про интеграционные проблемы.

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

Это как-то у тебя не состыковывается со всем остальным, что я написал?

> Эти проблемы не новость и хорошо известны.
> Я всего лишь хотел тебе сказать, что эти чуваки поимели бы те
> же самые проблемы, если бы пытались
> точно таким же образом написать свой фронтенд для С, а не Rust.

Не совсем. Баги, ради исправления которых разработчики rust'а шлют патчи в llvm, подчастую носят как раз характер багов, не проявляющихся на C/C++, но проявляющихся на rust'е. LTO тестировался до rust'а на C, C++ и Haskell'е. Пришёл rust и нашёл новую пачку багов. Некоторые из них, вероятно, порождение реализации, и другая реализация rust'а или C, может и не столкнулась бы с ними, а некоторые вызваны особенностями rust'а как языка, и с ними у компилятора C было бы примерно ноль шансов столкнуться.

> В статье они описали, как их (не)понимание работы LLVM не совпало с
> тем, как оно работает на самом
> деле. Ну, разобрались, молодцы, починили, статью написали.
> Но это никакой не подвиг и не прорыв. Обычная работа.

Ну, да. Но и "кривые руки" тут не при чём, не так ли? Ребята справились с этой работой, мне хочется их поздравить -- я представляю себе через какие глубины фрустрации им пришлось пройти, решая описанные проблемы.

> На прощанье могу тебе только посоветовать придерживать свою проницательность и свое ЧСВ,
> и пытаться слышать других а не только себя любимого.

Мне показалось, или я что-то слышал про бревно в глазу?

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

Где? Где тебе попадаются такие люди? Реально мало таких мест. И с каждым годом всё меньше и меньше. Я никак понять не могу -- это мои стандарты к уму собеседника растут, или люди тупеют.

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

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

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




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

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