Size: a a a

2020 May 23

DS

Doge Shibu in rust_offtopic
Т-34 85
Промежуточное представление в компиляторе можно выцепить и работать с ним как с исходным кодом? Или не в этом суть?
Не в этом, это представление удобное для работы с ним в компиляторе.

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

AI

Alex Ilizarov in rust_offtopic
Т-34 85
Промежуточное представление в компиляторе можно выцепить и работать с ним как с исходным кодом? Или не в этом суть?
Путаешь AST, MIR и IR?
источник

Т8

Т-34 85 in rust_offtopic
Alex Ilizarov
Путаешь AST, MIR и IR?
может, путаю. Вот, пытаюсь разобраться, что к чему
источник

AI

Alex Ilizarov in rust_offtopic
Т-34 85
может, путаю. Вот, пытаюсь разобраться, что к чему
AST - сорс код в виде структурок
MIR - обработка AST, выделение все в простые примитивы, оптимизация на уровне раста, перевод в IR
IR - представление LLVM, LLVM делает свои оптимизации и гонит в бинарный код конкретной платформы.
источник

AI

Alex Ilizarov in rust_offtopic
AST - abstract syntax tree (раст парсит сорцы)
MIR - middle intermediate representation (вроде) (оптимизации которые делает сам раст)
IR - intermediate representation (LLVM, его оптимизации и компиляция в бинарный код)
источник

AI

Alex Ilizarov in rust_offtopic
Но я могу тут где то ошибаться
источник

AI

Alex Ilizarov in rust_offtopic
Вроде все верно
источник

AI

Alex Ilizarov in rust_offtopic
Раньше MIR не было и раст делал IR из AST, пытаясь еще и свои оптимизации добавить. Разработчикам раста это оказалось неудобно и они сделали MIR
источник

Т8

Т-34 85 in rust_offtopic
Alex Ilizarov
Раньше MIR не было и раст делал IR из AST, пытаясь еще и свои оптимизации добавить. Разработчикам раста это оказалось неудобно и они сделали MIR
для оптимизаций нужно более высокоуровневое представление, но из него оверхеднее получать конечный бинарник?
источник

AI

Alex Ilizarov in rust_offtopic
Т-34 85
для оптимизаций нужно более высокоуровневое представление, но из него оверхеднее получать конечный бинарник?
У раста больше инфы по раст программе, некоторые оптимизации логичнее делать имея эту информацию.
источник

AI

Alex Ilizarov in rust_offtopic
А так - нет, скорее даже наоборот
источник

AI

Alex Ilizarov in rust_offtopic
Некоторой информации в IR просто нету, в некоторых местах LLVM ведет себя странно
источник

AI

Alex Ilizarov in rust_offtopic
Поэтому какие то вещи делают на стороне раста
источник

AI

Alex Ilizarov in rust_offtopic
Поюс раст сам по себе может отсечь очень много кода, чтобы LLVM потом получил куда меньший IR.
источник

AI

Alex Ilizarov in rust_offtopic
Я не разработчик компилятора и это мое понимание исходя из тех статей и issue которые я видел.
источник

Т8

Т-34 85 in rust_offtopic
Alex Ilizarov
Поюс раст сам по себе может отсечь очень много кода, чтобы LLVM потом получил куда меньший IR.
а есть тогда смысл в LLVM? Может, выкинуть это звено?
источник

AI

Alex Ilizarov in rust_offtopic
Есть еще miri который умеет интерпритировать MIR и находить UB в unsafe как я читал, но я его не юзал.
источник

AI

Alex Ilizarov in rust_offtopic
Т-34 85
а есть тогда смысл в LLVM? Может, выкинуть это звено?
В LLVM вложили много человекочасов, там много оптимизаций кодогенерации и куча платформ его поддерживающих.

А вообще да, хотят как дополнительный бэкенд добавить carrierwave, это что то вроде LLVM написанное на Rust, но пока что лучше всего carrierwave генерит webassembly ( и последний раз я смотрел - только его).
источник

AI

Alex Ilizarov in rust_offtopic
Еще слышал что хотят gcc бэкенд для Rust. Но опять же, я не шибко слежу за новостями, и я не разработчик компилятора.

Хочешь быть в курсе - подпишись на this week in rust. На самом деле очень много разной работы идет. Есть ощущение что раст точно никуда не уйдет
источник

Т8

Т-34 85 in rust_offtopic
Alex Ilizarov
Еще слышал что хотят gcc бэкенд для Rust. Но опять же, я не шибко слежу за новостями, и я не разработчик компилятора.

Хочешь быть в курсе - подпишись на this week in rust. На самом деле очень много разной работы идет. Есть ощущение что раст точно никуда не уйдет
окей, спасибо, вроде примерно понял, что к чему.

gcc как бэкенд - ты про mrustc?
источник