Size: a a a

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

2019 May 26

AK

Anton Korotkikh in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
ну с точки зрения импортируемых сисколов врядли что-то изменится (т.к. они posix-like). А так wasi сейчас активно развивается и новые версии sdk появляются каждую неделю-две
как там с IO всё обстоит, я совсем не в теме за wasi, но интересно. как вообще в нём с сетью работается? использует ли он всякую асинхронщину системную типа epoll / kqueue итд?
вы выше упоминали про портирование редиса, какая используется реализация wasi? для редиса как раз нужна очень шустрая работа с tcp, насколько я понимаю
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
Anton Korotkikh
как там с IO всё обстоит, я совсем не в теме за wasi, но интересно. как вообще в нём с сетью работается? использует ли он всякую асинхронщину системную типа epoll / kqueue итд?
вы выше упоминали про портирование редиса, какая используется реализация wasi? для редиса как раз нужна очень шустрая работа с tcp, насколько я понимаю
Сокеты пока не поддерживаются, только в планах, а асинхронщина есть. По поводу редиса, как я уже писал, мы выпилили из него все системные вызовы (включая сеть и асинхронщину) и адаптировали под нашу платформу, в которой ввод/вывод совершается извне васм кода и одна точка входа, принимающая указатель на данные в памяти и их размер.
источник

ID

Ilya Druzhinin in WebAssembly — русскоговорящее сообщество
Anton Korotkikh
имхо быть похожим на го - довольно стрёмное решение. это очень топорный инструмент, как по мне, он взлетел только за счёт корутин, т.к. по сути на рынке их ни у кого не было на уровне всей экосистемы, кроме erlang/elixir c их грин-тредами (из более менее популряных решений)
У clojure вроде как они есть
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
Ilya Druzhinin
У clojure вроде как они есть
Вот полный список ЯП с корутинами: https://en.wikipedia.org/wiki/Coroutine#Programming_languages_with_native_support
источник

PC

Pavel Chebotarev in WebAssembly — русскоговорящее сообщество
Это провокация, в D и в PHP нет корутин.
источник

PC

Pavel Chebotarev in WebAssembly — русскоговорящее сообщество
А это немногие из тех ЯП которые я знаю из того списка. Так что есть подозрения что на счет всего остального там тоже натянуто или просто враки.
источник

AK

Anton Korotkikh in WebAssembly — русскоговорящее сообщество
Ilya Druzhinin
У clojure вроде как они есть
У кложи много платформ, конкретно на jvm корутин нет, но вот на beam (clojerl) таки должны быть.
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
Pavel Chebotarev
Это провокация, в D и в PHP нет корутин.
источник

PC

Pavel Chebotarev in WebAssembly — русскоговорящее сообщество
Да, точно, обрати внимание на вот
import jin.go;
Это все делается через стороннюю либу, которая уж точно не нативная и не интегрируется в остальные конструкции языка. Фактически в D есть только Fiber что является зачатками корутин, но никаких IO планировщиков, ни тем более переносителей корутины из треда в тред нет.
источник

PC

Pavel Chebotarev in WebAssembly — русскоговорящее сообщество
Там самая популярная библиотека с корутинами это vibe-core но и к ней при ближайшем рассмотрении есть немало вопросов.
источник

PC

Pavel Chebotarev in WebAssembly — русскоговорящее сообщество
Так что я согласен что в go корутины сделаны околоидеально и очень хорошо встроены в весь дизайн языка.
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
Pavel Chebotarev
Да, точно, обрати внимание на вот
import jin.go;
Это все делается через стороннюю либу, которая уж точно не нативная и не интегрируется в остальные конструкции языка. Фактически в D есть только Fiber что является зачатками корутин, но никаких IO планировщиков, ни тем более переносителей корутины из треда в тред нет.
Ну есть fibers. Это более низкоуровнево конечно, но тем не менее дает возможность постоить абстракции схожие с корутинами. Так что сказать, что вот совсем нет нативной поддержки
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
Ладно, это все оффтоп
источник

ID

Ilya Druzhinin in WebAssembly — русскоговорящее сообщество
да, я спутал с CSP
источник

ID

Ilya Druzhinin in WebAssembly — русскоговорящее сообщество
Anton Korotkikh
У кложи много платформ, конкретно на jvm корутин нет, но вот на beam (clojerl) таки должны быть.
там акторная модель, похожая на csp, но все же другая
источник
2019 May 27

IB

Ilya Baryshnikov in WebAssembly — русскоговорящее сообщество
а кого можно расспросить насчёт assemblyscript?
источник

AS

Aλexander Syrotenko in WebAssembly — русскоговорящее сообщество
@maxgraey вот его можно)
источник

IB

Ilya Baryshnikov in WebAssembly — русскоговорящее сообщество
@maxgraey привет! если я хочу вернуть массив из васм в джс, как это выглядит? есть какие-то примеры?
источник

NK

ID:414983998 in WebAssembly — русскоговорящее сообщество
На данный момент ты можешь вирнуть только типизированные массивы такие как Uint8Array или Int32Array, но не Array<string> или i32[]. В следующей версии это ограничение снимается.

Для это на стороне хоста используй loader:
https://github.com/AssemblyScript/assemblyscript/tree/master/lib/loader

и module.getArray(UInt8Array, module.exports.someMethodReturnedArray(....))
источник

IB

Ilya Baryshnikov in WebAssembly — русскоговорящее сообщество
а если говорить про код? сейчас поясню
в wasm-bindgen я пишу fn get_array() -> Vec<i32> {}
и сборщик сгенерирует джс, который возьмёт буффер, создаст из него типизированный массив, сделает slice, а потом вызовет маллок чтобы очистить память в васм. как то же самое делается в AS? нужно ли писать джс самому?
источник