Size: a a a

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

2021 March 09

TP

Tim Plotnikov in WebAssembly — русскоговорящее сообщество
ничего не должно мешать сделать gc который будет по linear memory гулять и подчищать всё
источник

AT

Alexander Tchitchigi... in WebAssembly — русскоговорящее сообщество
Tim Plotnikov
Погодите-ка, может тупой вопрос, почему мы говорим про стэк и GC в одном контексте? Насколько я помню, GC собирает мусор в хипе. А стек освобождается при выходе из скоупа
Google "GC roots".
источник

AT

Alexander Tchitchigi... in WebAssembly — русскоговорящее сообщество
Георгий
что за стек к которому нет доступа?
t.const c

   Push the value t.const c to the stack.

Вот этот самый.
источник

Г

Георгий in WebAssembly — русскоговорящее сообщество
ну можно внутри васм модуля легко определять свои руты, а вот с внешкой проблемы, выдал в жс объект и все, или я все-таки че-т не понимаю
источник

AT

Alexander Tchitchigi... in WebAssembly — русскоговорящее сообщество
Георгий
ну можно внутри васм модуля легко определять свои руты, а вот с внешкой проблемы, выдал в жс объект и все, или я все-таки че-т не понимаю
Shadow stack? Геморройно и медленно, но можно. Так и делают. Либо RC. Других вариантов нет.
источник

VC

Vladimir Chebotarev in WebAssembly — русскоговорящее сообщество
u can't remove
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Tim Plotnikov
Народ, привет)
Когда там уже GC завезут?)
В v8 довольно скоро уже
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Tim Plotnikov
wasmtime же вроде себе там какой-то refcount запилил или я ошибаюсь?
только для external reference types
источник

TP

Tim Plotnikov in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
Google "GC roots".
Немного погуглил. Правильно ли я понимаю, что чтобы запустить gc cycle нам нужно с чего-то начать траверсить. А это «что-то» есть gc roots (например локальные переменные, которые в стеке, но к которым у нас нет доступа)?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Tim Plotnikov
Немного погуглил. Правильно ли я понимаю, что чтобы запустить gc cycle нам нужно с чего-то начать траверсить. А это «что-то» есть gc roots (например локальные переменные, которые в стеке, но к которым у нас нет доступа)?
правильно
источник

TP

Tim Plotnikov in WebAssembly — русскоговорящее сообщество
А планируют они добавить такой доступ к стеку?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Tim Plotnikov
А планируют они добавить такой доступ к стеку?
нет. Разве что через некоторую абстракцию вроде этой
https://github.com/WebAssembly/design/issues/1359

или полностью скрыть это через Wasm GC. Основная причина как я понимю это из соображений безопасности
источник

TP

Tim Plotnikov in WebAssembly — русскоговорящее сообщество
MaxGraey
нет. Разве что через некоторую абстракцию вроде этой
https://github.com/WebAssembly/design/issues/1359

или полностью скрыть это через Wasm GC. Основная причина как я понимю это из соображений безопасности
Интересно, спасибо
источник

TP

Tim Plotnikov in WebAssembly — русскоговорящее сообщество
Вопрос по другой теме: wasm modules. В спеке пишут что это основная единица программы. Только я до конца не понял что это: может ли 1 .wasm-файл содержать несколько модулей или wasm-файл это и есть модуль?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Tim Plotnikov
Вопрос по другой теме: wasm modules. В спеке пишут что это основная единица программы. Только я до конца не понял что это: может ли 1 .wasm-файл содержать несколько модулей или wasm-файл это и есть модуль?
Может содержать несколько модулей и некотрые рантаймы это поддерживают, но большинство поддерживают только один модуль в файле, так как в 99% случаев этого достаточно. Модули как единица важны для изоляции памяти, глобальных переменных и таблицы вызовов. В дальнейшем эти модули смогут динамически линковаться
источник

TP

Tim Plotnikov in WebAssembly — русскоговорящее сообщество
MaxGraey
Может содержать несколько модулей и некотрые рантаймы это поддерживают, но большинство поддерживают только один модуль в файле, так как в 99% случаев этого достаточно. Модули как единица важны для изоляции памяти, глобальных переменных и таблицы вызовов. В дальнейшем эти модули смогут динамически линковаться
Спасибо, понял)
источник

TP

Tim Plotnikov in WebAssembly — русскоговорящее сообщество
А кто над чем работает связанным с wasm?
Кто что ожидает от этой технологии?)
источник

AT

Alexander Tchitchigi... in WebAssembly — русскоговорящее сообщество
Tim Plotnikov
А кто над чем работает связанным с wasm?
Кто что ожидает от этой технологии?)
Я ожидаю удобный переносимый универсальный code generation target для компиляции всяких языков, DSL в частности. Поэтому жду GC and Interface Types.
источник

TP

Tim Plotnikov in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
Я ожидаю удобный переносимый универсальный code generation target для компиляции всяких языков, DSL в частности. Поэтому жду GC and Interface Types.
Да, без GC тяжеловато компилировать языки в васм)
источник

TP

Tim Plotnikov in WebAssembly — русскоговорящее сообщество
Думаете будут на нем пилить фронт-приложения?
источник