Rust использует виртуальную машину?

Rust компилируется в нативный код или в байт код и использует виртуальную машину?! Нигде нет информации по этому поводу.
  • Вопрос задан
  • 665 просмотров
Решения вопроса 1
@Ariox41
Rust - это язык программирования, виртуальная машина - это среда выполнения. Вы можете скомпилировать Rust в wasm и запускать под виртуальной машиной (node.js или в браузере), или можете скомпилировать в машинный код и запускать как как обычное приложение. Правда, пока что экосистема wasm еще не развита, но в целом работает, да и сам язык до зрелости еще не дотягивает.

Отличие от языков, изначально рассчитанных на виртуальную машину, заключается в том, что сам Rust не содержит предположений по этому по этому поводу и не предоставляет дополнительных функций, основанных на возможностях виртуальной машины. В частности, в нём нет возможности управлять jit-компиляцией. Впрочем, всё то же самое можно сказать и про C++, но там исторически сложилось, что долгое время под него просто не было виртуальной машины (сейчас его тоже можно скомпилировать в wasm или в JavaScript).

На практике Rust компилируется в LLVM - байт код, с которым можно делать что угодно - компилировать в машинный код, запускать напрямую на виртуальной машине (теоретически) или транслировать куда-то еще.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Видимо, данный вопрос возник из-за того что код на Rust сначала компилируется в LLVM-байткод, а далее этот байт-код компилируется в машинный код для заданной системы. Примерно так работает LLVM: исходный код → фронтенд (компилятор языка) → LLVM → бэкенд (транслятор из LLVM-байткода в машкод целевой платформы) → бинарник в машкодах целевой системы.
Таким образом, готовый бинарник является нативным кодом и не использует виртуальную машину или байт-код.

P.S. Ну конечно когда мы компилируем в wasm, то получается код для виртуальной машины, потому что WebAssembly ею является, но для этой машины полученный код является нативным. Вот так всё просто и понятно!:)
Ответ написан
Комментировать
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Нет, не использует
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы