Size: a a a

WebAssembly — русскоговорящее сообщество

2020 November 05

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Для клэнга прямая генерация LLVM и так хорошо работает
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Был доклад в одной из групп про effect handling, это тоже может быть вариантом middle IR для более высокоуровневых языков: https://github.com/WebAssembly/meetings/blob/5c46403b3bf0e7fd0732814f564dedc7124eba52/stack/2020/presentations/2020-10-05-lindley-effect-handler-oriented-programming.pdf
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
(доклад не про IR, но представить как это можно использовать для IR не сложно)
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Petr Penzin
Был доклад в одной из групп про effect handling, это тоже может быть вариантом middle IR для более высокоуровневых языков: https://github.com/WebAssembly/meetings/blob/5c46403b3bf0e7fd0732814f564dedc7124eba52/stack/2020/presentations/2020-10-05-lindley-effect-handler-oriented-programming.pdf
Ну рассматривать wasm даже с effect handlers в качестве Mid IR я бы не стал, если я правильно тебя понял
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Mid IR не для движка, а для компилятора исходного языка
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Petr Penzin
Mid IR не для движка, а для компилятора исходного языка
Я так и понял) Проблема с wasm в качестве IR это, то что нужно будет его нормировать в SSA форму вернее ее эмулировать в структурном стеке. Такое себе на самом деле. Еще у wasm очень сецифичный граф для циклов, его тоже придется во что то преобразовывать. В общем неудобно
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
А, понял! :)
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Да. не подойдёт, ещё один уровень нужен
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Petr Penzin
Да. не подойдёт, ещё один уровень нужен
Ну вот тот же Binaryen аж 3 вида использует. И еще Rlooper для финализации циклов)
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Интересно - они один в другой преобразуются или друг друга дополняют?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Petr Penzin
Интересно - они один в другой преобразуются или друг друга дополняют?
StackIR и SSA - преобразуемые и существуют в виде отдельных проходов в пайплайне, а сам Binaryen IR - это уже более абстракная махина над всем этим, а релупер вообще в отдельной категории (это скорее как трансформация для CFG)
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Понятно, почти что MLIR в миниатюре :)  А Mid IR для AS будет находится над всем этим?
источник

AR

Alex Raud in WebAssembly — русскоговорящее сообщество
Кто посоветует: у нас есть Pawn. У него есть своя наподобие m3 машина которая крутит его байткод. Насколько думаете сложно один байткод странслировать в другой (m3) чтобы портануть все Pawn игры wowcube на wasm движок? Или какой еще подход посоветуете?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Petr Penzin
Понятно, почти что MLIR в миниатюре :)  А Mid IR для AS будет находится над всем этим?
Да как обычно AST -> Mid IR -> Binaryen в грубом приближении
источник

PP

Petr Penzin in WebAssembly — русскоговорящее сообщество
Какой Mid IR будет?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Petr Penzin
Какой Mid IR будет?
Без явной SSA формы, вернее там гибрид Regions (как у RVSDG) + SoN + CPS с def-use цепочкой (но не SSA)
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
У LMIR ктати тоже regions есть
источник

P🍣

Pavel 🍣 in WebAssembly — русскоговорящее сообщество
источник

P🍣

Pavel 🍣 in WebAssembly — русскоговорящее сообщество
*transpile, fixed
источник

Г

Георгий in WebAssembly — русскоговорящее сообщество
я уж думал новое действие из будущего
источник