Есть ли интерпретатор Rust? - PullRequest
2 голосов
/ 17 мая 2019

Я только начинаю с Rust, и мне было интересно: это интерпретатор Rust? При наличии интерпретатора компилятору Rust не нужно будет компилировать все исходные файлы каждый раз, когда он вызывается, и он будет интерпретировать код только после его изменения. Это то, как JavaScript и Python не имеют реального времени компиляции.

Есть инкрементная компиляция с Rust, но она все еще очень медленная для больших проектов. Это было бы благом для разработки GUI с ржавчиной для веб-IMO.

Ответы [ 2 ]

3 голосов
/ 17 мая 2019

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

Есть также работа над RLS 2.0 , которую вы могли бы заинтересовать в просмотре / содействии.

Что касается UI / Web, это другой шарик воска, с которым мне еще не очень повезло.

2 голосов
/ 17 мая 2019

Нет , в настоящее время нет интерпретатора Rust, который можно было бы просто использовать в качестве замены для компиляции с rustc.

Существует miri, который является интерпретатором для MIR, Rust «промежуточного представления среднего уровня» (в основном определяющего управляющий граф потока). Компилятор Rust генерирует код MIR как часть своего обычного конвейера. Этот код MIR обычно переводится в LLVM-IR, который затем переводится в машинный код LLVM. Мири позволяет интерпретировать этот код MIR напрямую.

Однако , Miri на самом деле не предназначена для программистов, чтобы интерпретировать свой проект вместо его компиляции. По крайней мере, пока. Вместо этого он построен главным образом для проверки небезопасного кода на неопределенное поведение: инструмент динамического анализа кода / дезинфицирующее средство. Кроме того, Мири все еще заметно ограничена. В частности, в прошлый раз, когда я проверял, extern "C" вызовы не поддерживались.

Я бы также сказал, что Rust не так хорошо подходит для полной интерпретации, как другие языки. Компилятор Rust выполняет значительный объем тщательного анализа исходного кода, который необходимо выполнить в тот или иной момент, так или иначе.

...