LINUX.ORG.RU

Rust основан на LLVM?

 , , ,


2

8

В одном треде высказывалось мнение, что язык Rust зависит от LLVM. Когда я написал, что его вполне можно собрать с GCC, мне ответили, что он точно так же будет зависеть от GCC и вообще он паразитирует на компиляторе C++.

Но ведь и GCC, и Clang написаны на C и C++ соответственно и что же, они паразитируют сами на себе?

Как я понимаю процесс сборки Rust: некий компилятор C++ собирает базовый компилятор Rust, который уже собирает полный компилятор Rust. Таким образом Rust может работать на тех платформах, на которых можно собрать его базовый компилятор, написанный на C++.

Верны ли мои представления или я заблуждаюсь?

Ответ на: комментарий от nebanbmenyapls

Оо.. ты прибежала. Как же это тема про Rust и без твоих высеров. Иди долбись сишками и плюсами.

tintobras
()
Ответ на: комментарий от xpahos

Зачем метать бисер перед свиньей? Видно же это обдолбаный фанатик. Словно его пытали Rust-ом. У него гениальный аргумент:

LLVM на C++, значит и Rust - C++. Тогда можно сказать C++ в конечно счете компилируется в машинные инструкции, значит все есть машинные инструкции. C++ и любой ЯП это кусок огрызка и паразит на машинными инструкциями. Гениально, итить его в тор!

tintobras
()
Ответ на: комментарий от xpahos

Вот непонятно, что сказать-то ты хотел? Что царя занесло? Ну его постоянно заносит. Что ты охренительно крут? Да всем, в общем-то, пофиг. Нафига вся эта софистика про переписывание стеков и прочая чушь?

Если отбросить весь пафос царя, то он говорит примерно следующее: rustc использует llvm, без которого он скомпилировать программу в машинный код не может. Значит, спопобность rustc генерировать машинный код зависит от llvm. llwm написан на с++ и, до тех пор, пока он не будет написан на чем-то другом, полностью зависит от состояния компилятора c++, которым этот llwm компилируется. Вот и все.

В свете тезиса о полной (напомню, там выше 0.3% упоминалось) независимости rustc от компилятора c++ предложение царя выкинуть llwm и показать истинную независимость выглядит органично. Нет?

anonymous
()

Выскажу замечание.

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

iZEN ★★★★★
()
Ответ на: комментарий от anonymous

предложение царя выкинуть llwm и показать истинную независимость выглядит органично.

И зачем это нужно? Я думаю, никто из разумных людей не сомневается, что бэкенд компилятора можно написать и на Rust.

И кстати - когда остановиться? libc выкидываем? Ядро выкидываем? Переписываем на Rust всё, включая небо и аллаха?

tailgunner ★★★★★
()
Ответ на: Выскажу замечание. от iZEN

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

Помню времена, когда сборка gcc занимала почти 2 часа.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Помню времена, когда сборка gcc занимала почти 2 часа.

Сейчас он на той машине небось вообще не соберётся.

madcore ★★★★★
()
Ответ на: комментарий от tailgunner

Момент первый: до тех пор, пока кто-либо (неважно кто) не покажет proof of concept, «никто не из разумных людей не сомневается» - это дешевая демагогия и манипуляция. Но мы не про это.

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

Момент третий: при чем в контексте rustc ядро, libc и т.д.? Тут разговор о том, что есть конкретная технология, без которой главный rust-компилятор не работает. Что за чушь ты пишешь?

anonymous
()

Почему язык реализации транслятора вообще имеет значение для кого-то кроме его, транслятора, авторов?

inb4: адепты подмена понятий говно множу на ноль

anonymous
()
Ответ на: комментарий от anonymous

Момент первый: до тех пор, пока кто-либо (неважно кто) не покажет proof of concept, «никто не из разумных людей не сомневается» - это дешевая демагогия и манипуляция.

Т.е. тебе нужен «proof of concept» бэкенда на Rust. Для чего? Во что ты уверуешь, когда его увидишь? А чего ради демонстрировать «истинную независимость»?

Момент третий: при чем в контексте rustc ядро, libc и т.д.? Тут разговор о том, что есть конкретная технология, без которой главный rust-компилятор не работает

Ядро и libc при том, что без ядра и libc rustc тоже не работает.

Он же вас просто за слова ловит.

Смешно.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Зависимость rustc от LLVM - вообще не вопрос. По-моему, все разговоры тут про то что царь не различает язык и его реализацию. Не он один, кстати, тот же скотинко... чувствуете тенденцию? :D

anonymous
()
Ответ на: комментарий от tailgunner

Помню времена, когда сборка gcc занимала почти 2 часа.

GCC — это набор компиляторов, система компиляции и кросс-компиляции, а не язык программирования. Вот Go имеет классический бутстрап из Go-1.4.3, и вместе с последней версией Go-1.11.3 всё собирается в архивы для дальнейшего распространения за 4 минуты с нагрузкой на процессор 20-30%. И то - половину времени заняла упаковка бинарников.

Rust-1.31.0 же собирается сорок минут с нагрузкой 95-100% на все ядра процессора.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

GCC — это набор компиляторов, система компиляции и кросс-компиляции, а не язык программирования

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

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Итак, для тех, кто в танке:
Комментарий, на который ты ответил мне первый раз, касался rustc. Если ты не различаешь rustc и Rust, то это не ко мне. Способность rustc выдать машкод зависит от состояния компилятора c++, которым компилируется llwm.

В ответ ты безапеляционно выдаешь тезис, который ты ничем подтвердить не можешь, так как у тебя нет ни статистики опросов, ни работающего хотя бы на 10% от rustc компилятора, причем написать ты его не можешь, иначе за столько лет срачей уже бы написал. Вышеперечисленное, вообще говоря, и не обязательно иметь, если ты пишешь в стиле «теоретически, потому что ...» (ну, или намекнул бы, что про теорию). Но написал так, как написал. А теперь съезжаешь с темы. Аргументы какие-то про веру. При чем здесь РПЦ? Да напиши уже, что ты никому ничего не должен. Так будет канонично. На ЛОРе часто так делают.

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

И что дают эти 5%? О чем они говорят в контексте моего комментария к реплике царя? И почему ты отвечаешь на мой коммент, а не на царев? Я ведь, по сути, его процитировал. Или ты сагрился на любой коммент, при условии, что его писал не царь?

anonymous
()
Ответ на: комментарий от anonymous

Что характерно, ты не ответил ни на один вопрос.

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

Для начала, перестань писать llwm вместо LLVM; а о зависимости компилятора Rust от LLVM я написал сам.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Очень характерно. Восприятие - проблема акцептора.

Да мы уже заканчиваем; за своим правописанием следи, раз аргументов нет.

И это тоже характерно. Этот тезис был основным в моих комментах.

anonymous
()
Ответ на: комментарий от tailgunner

Ну, там же написано Just use Cretonne.

Я как раз писал о том, что найдутся те, кто решит переписать. Вообще я хз зачем нужно не зависить от LLVM, если все и так работает.

xpahos ★★★★★
()

Как я понимаю процесс сборки Rust: некий компилятор C++ собирает базовый компилятор Rust, который уже собирает полный компилятор Rust. Таким образом Rust может работать на тех платформах, на которых можно собрать его базовый компилятор, написанный на C++.

Да все верно. У тебя есть язык X, можно написать компилятор этого языка на этом же языке X, вопрос кто его соберёт, если ещё нет ни одного бинарника этого компилятора? Соответственно нужен сперва бинарник компилятора языка X написанного на другом языке (хоть на машинных кодах).

DukeNukem
()
Ответ на: комментарий от xpahos

Вообще я хз зачем нужно не зависить от LLVM, если все и так работает.

Вот и я не понимаю. А царь не объясняет.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Rust немножечко более продвинутый, чем Go.

OpenJDK для своей (пере)сборки тоже требует бутстрапа из предыдущей версии JDK или самого себя. Тем не менее, комплект разработчика Java собирается на том же процессоре за 6 минут вместе с построением архива пакета.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

комплект разработчика Java собирается на том же процессоре за 6 минут вместе с построением архива пакета.

А он в долг работает - собирается быстро, но при выполнении тормозит.

tailgunner ★★★★★
()
Ответ на: Выскажу замечание. от iZEN

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

Если поставить -O0, то сколько собирается?

Crocodoom ★★★★★
()
Ответ на: комментарий от anonymous

llvm rustc

Народ, rust основан на llvm (кто не понял тот поймёт). И без llvm представляет собой только лишь хороший frontend (что мало). Ахилесова пята rust - llvm, который огнраничивает его рядом платформ, под которые заточен llvm - по хорошему, ARM и X86.

KLIM
()
Ответ на: llvm rustc от KLIM

Ахилесова пята rust - llvm,

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

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Абсолютно согласен, LLVM - прекрасный бэкенд, только он один. Но подумайте сколько существует именно бэкэндов для C,C++, Fortran (примеры). Если кто-то разрабатывает архитектуру, то он часто заботится поддержкой С, С++. Остальное не так важно... Но это так... Я считааю, пока не будет полноценных rust backend кроме llvm, этот язык - нишевый.

KLIM
()
Ответ на: комментарий от KLIM

Ты путаешь причину и следствие - портируй llvm на архитектуру и получи многообразие языков.

Deleted
()
Ответ на: комментарий от Deleted

Не путаю. Портировать llvm на архитектуру ещё сложней, чем соорудить новый backend для С, С++ для этой архитектуры.

KLIM
()
Ответ на: комментарий от KLIM

Но подумайте сколько существует именно бэкэндов для C,C++, Fortran (примеры)

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

Я считааю, пока не будет полноценных rust backend кроме llvm, этот язык - нишевый.

Я считаю, что нишевость языка никак не зависит от количества бэкендов компилятора.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Я хочу сказать, что судьба rust связана с судьбой llvm пока что. На самом деле, надо смотреть через лет 10 на rust.

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

И сейчас существует. Часто они не опрделены как backend. Часто не знаешь под какую архитектуру будет выполнятся твоя программа. Например, POWER9 or x86 + GPU (CUDA). Но ты всегда знаешь - используй C, C++, Fortran и всегда найдётсяч эффективный крмпиллятор ))))А вот с rust проблема в этом смысле.

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

Я считаю, что зависит. Никак не могу доказать это утверждение. ))) Посмотрим....

KLIM
()
Ответ на: комментарий от KLIM

Часто не знаешь под какую архитектуру будет выполнятся твоя программа. Например, POWER9 or x86 + GPU (CUDA).

Ахаха. Да, вот так внезапно твоя программа может потребоваться на CUDA. Пиши еще.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Конечно. А как ещё? Вдруг внезапено нужна более эффективная векторизация или даже, не побоюсь этого слова, тензоризация ))) некоторой части программы )))

KLIM
()
Ответ на: комментарий от KLIM

Да, вот так внезапно твоя программа может потребоваться на CUDA. Пиши еще.

Конечно. А как ещё?

А еще можно знать, что пишешь под обобщенную «традиционную архитектуру с Linux». Или с Windows.

Вдруг внезапено нужна более эффективная векторизация или даже, не побоюсь этого слова, тензоризация )))

«Сколько тебе лет?» (ц)

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от KLIM

Часто не знаешь под какую архитектуру будет выполнятся твоя программа. Например, POWER9 or x86 + GPU (CUDA)

Про CUDA полный бред. Там программы пишутся на специальном надмножестве C++, это надмножество компилируется специальным компилятором nvcc.

Crocodoom ★★★★★
()
Ответ на: комментарий от KLIM

Да, в Rust с поддержкой CUDA действительно пока всё неважно

Crocodoom ★★★★★
()
Ответ на: комментарий от EXL

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

vertexua ★★★★★
()
Ответ на: комментарий от EXL

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

Теперь понятно, почему на главной пусто: всё веселье в форуме. :)

dimgel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.