Size: a a a

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

2019 December 22

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Богдан
а у wasm-а разве нет инструкций для выполнения сгенерированного кода подобно тому как в js есть Function(..) ? Если нет то wasm это действительно преграда для jit-языков но с другой стороны можно ведь прокинуть интерфейс jit-а через js - со стороны wasm-а будет отсылаться запрос к js и уже через js будет происходить компиляция и выполнение нового wasm-модуля, на выходе будем иметь тот же jit, разве нет?
Function и eval можно эмулировать через partial или full evaluation или интерпретацию, но при чем здесь JIT? Можно еще выполнять часть динамического кода на стороне хоста (в emscripten это макросы EM_JS/EM_ASM), но слишком частый интереоп приведет только к замедлению
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
MaxGraey
Дело в том что очеь многие мечтают и просят Dart компилировать в wasm, особенно разработчики flutter. Но команда не раз выступала с детальным разбором, что wasm нестабилен, и еще довольно много странных и предвзятых немного доводов, но похоже что истинная причина может как раз в том, что пока они не могут нормально скомпилировать в AOT. Ксати нашел даже в их FAQ завуалированное описание:

Code that’s compiled ahead-of-time (AOT) with a compiler such as dart2native has different performance characteristics from code that’s compiled just-in-time (JIT) in the Dart VM. AOT-compiled code is guaranteed to have fast startup and consistent runtime performance, with no latency during early runs. JIT-compiled code is slower at startup, but it can have better peak performance after it runs long enough for runtime optimizations to be applied.
Нестабильность - это факт, но ещё пол беды, на мой взгляд. Главная проблема - WASM is a "half-assed job" на текущий момент, особенно с точки зрения компиляции managed языков. У меня вот нет никакого желания компилировать в WASM язык со сборкой мусора, не говоря уже про виртуальные вызовы с inline caches. Так что я разработчиков Dart полностью понимаю - пусть сначала хотя бы GC-proposal примут.

А то что у них в FAQ написано - общее место и применимо ко всем языкам с JIT (Java, .NET, JS, whatever). 🤷‍♀️
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
Нестабильность - это факт, но ещё пол беды, на мой взгляд. Главная проблема - WASM is a "half-assed job" на текущий момент, особенно с точки зрения компиляции managed языков. У меня вот нет никакого желания компилировать в WASM язык со сборкой мусора, не говоря уже про виртуальные вызовы с inline caches. Так что я разработчиков Dart полностью понимаю - пусть сначала хотя бы GC-proposal примут.

А то что у них в FAQ написано - общее место и применимо ко всем языкам с JIT (Java, .NET, JS, whatever). 🤷‍♀️
Ну вон тот же GraalVM может нормально в AOT по крайней мере для JVM языков, действительно вроде быстрее чем JIT
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
MaxGraey
Ну вон тот же GraalVM может нормально в AOT по крайней мере для JVM языков, действительно вроде быстрее чем JIT
"Нормально" - понятие относительное. Подозреваю, и для GraalVM можно найти программу, на которой она будет в 16 раз медленнее HotSpot JIT. 😉
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
Для меня и Dart AOT имеет нормальную производительность. Уже хотя бы потому, что я его ни для чего не использую. 😂
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
Для меня и Dart AOT имеет нормальную производительность. Уже хотя бы потому, что я его ни для чего не использую. 😂
Ну до Fluttera он никому и не нужен был. И сейчас никому не нужен был бы, если не успех flutter-а. Как всегда насильственное навязывание языка с какой то более не менее полезной технологией.
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Хотя, если рассматривать Dart как заменуу именно JavaScript, то возможно это и лучше, но настолько ли это лучше TS, Elm, Reason? но это уже оффтоп
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
MaxGraey
Хотя, если рассматривать Dart как заменуу именно JavaScript, то возможно это и лучше, но настолько ли это лучше TS, Elm, Reason? но это уже оффтоп
ReasonML, безусловно, лучше, потому что это полный OCaml, но Dart был первым. 😃
Собственно, он появился раньше всех упомянутых, и на мой взгляд, они not worth the effort. 🤷‍♀️
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
MaxGraey
Ну до Fluttera он никому и не нужен был. И сейчас никому не нужен был бы, если не успех flutter-а. Как всегда насильственное навязывание языка с какой то более не менее полезной технологией.
И как по-вашему можно было бы отвязать Flutter от Dart?
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
Т.е. React ровно в той же степени "насильственно привязан" к JS, как мне кажется.
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
Т.е. React ровно в той же степени "насильственно привязан" к JS, как мне кажется.
Ну у них же есть ReactReason, кроме того недавно и поддержка TS официально появилась, а вообще они к Flow были привязаны и агитировали именно его, собственно одна из причин популярности flow в свое время была, но оыпять же это все оффтоп уже
источник

DB

Dmitry Bubnenkov in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
И как по-вашему можно было бы отвязать Flutter от Dart?
Думаю нет
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
MaxGraey
Ну у них же есть ReactReason, кроме того недавно и поддержка TS официально появилась, а вообще они к Flow были привязаны и агитировали именно его, собственно одна из причин популярности flow в свое время была, но оыпять же это все оффтоп уже
Ну так и ReactDart имеется. Я могу переписать React на любом языке. Как и Flutter. Поэтому и спрашиваю: в чём заключается "насильственная привязка"? 😉
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
Dmitry Bubnenkov
Думаю нет
Уточню: я не спрашивал мнение "можно или нельзя" - я интересовался "каким образом". 😉
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
Уточню: я не спрашивал мнение "можно или нельзя" - я интересовался "каким образом". 😉
официальным. то есть команда из гугл которая работает над flutter сделала sdk на dart и только его и поддерживает. У них есть на это ресурсы. То что можно отвязать flutter от dart и прибандить к reasonml например… наверное можно, но fb не будет заниматься этим потому что NIH синдром сильный) Вон сколько было портов Ruby on Rails на другие ЯП, ну и что? Хоть один из них стал популярным? Хотя Ruby же такой медленный и прибитый в MVP модели
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
MaxGraey
официальным. то есть команда из гугл которая работает над flutter сделала sdk на dart и только его и поддерживает. У них есть на это ресурсы. То что можно отвязать flutter от dart и прибандить к reasonml например… наверное можно, но fb не будет заниматься этим потому что NIH синдром сильный) Вон сколько было портов Ruby on Rails на другие ЯП, ну и что? Хоть один из них стал популярным? Хотя Ruby же такой медленный и прибитый в MVP модели
А ничего, что Flutter написан на Dart? 😉
Dart SDK - это же не байндинги к Си-библиотеке. По-моему, это то же самое, что сказать SWT "насильственно привязан" к Java или JVM. Да, блин, он на ней написан - как по-другому-то?! 😃
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
В каком-то смысле, все Web-фреймворки после RoR - его порты. 😊
При этом, Grails в своё время был весьма популярным, а Django теперь едва ли не популярнее самого RoR.
И да, получается, что Rails "насильственно привязаны" к Ruby - нельзя использовать из других языков, можно только переписать с нуля. 🤷‍♀️
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
А ничего, что Flutter написан на Dart? 😉
Dart SDK - это же не байндинги к Си-библиотеке. По-моему, это то же самое, что сказать SWT "насильственно привязан" к Java или JVM. Да, блин, он на ней написан - как по-другому-то?! 😃
Он не может быть полностью написан на Dart, потому что должен нативно взаимодействовать с iOS и Android, вот ту часть как раз и можно взять за базу, а всю обвязку с Dart переписать на что то другое. Ладно это все оффтоп уже очень серьездный. Предлагаю все про wasm поговорить
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
Давайте уточним: я правильно понял смысл "насильственного привязывания"? Можно завершить оффтоп? 😉
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
В каком-то смысле, все Web-фреймворки после RoR - его порты. 😊
При этом, Grails в своё время был весьма популярным, а Django теперь едва ли не популярнее самого RoR.
И да, получается, что Rails "насильственно привязаны" к Ruby - нельзя использовать из других языков, можно только переписать с нуля. 🤷‍♀️
Ну вот я это пытаюсь донести, что если бы не эта насильственная связь, то некоторые бы языки и не взлетели, а с утратой популярности технологии/фреймворка и языки вдруг вдруг теряют актуальность)
источник