Здравствуйте, Mystic Artifact, Вы писали:
_>>Ну так это же речь не про встроенный в VM GC (как в JVM и CLR), а про доступ к некому внешнему.
MA> Ты ж сам знаешь как доступ к внешнему работает. Работает на пинах объектов и опциональном счетчике ссылок поверх. Angular 1 именно тёк по памяти в Хроме из-за этого со страшной силой когда-то.
MA> У меня лично претензий к такому интеропу нет, — я и на JS делал "disposable" и все компоненты кто держали ссылки должны были это делать нормально (зануливать). Иначе память убегала. Хоть это было и не так давно — но я боюсь все просто офигеют если элементы начнут течь в wasm, а средств отладки не будет. Опять же — их в этом случае не будет — объект отправился во вне — GC его не трогает и хорошо. Но хорошо кому?
MA> Вы тут все такие умные и разрулите эти ситуации наверное, в идеале — не дав шанса им возникнуть. А в реале — будет, у "индусов" — будет иначе. Я просто очень плотно отлаживал утечки в JS, в основном свои. Не мои — это ангуляр.
Смешное в ангуляре что у них и метод clear был, да ссылки не зануливал.
MA> А ещё смешнее — что проблему поставили как баг Хрома т.к. в FF и IE на тот момент работало. Смешно прежде всего потому, что кто им блин обещал GC не на основе подсчета ссылок — неясно. А второе — жалко 3 строчки и экономия 80Мб на форме?!
Я на самом деле тоже считаю что интеграция с JS (и соответственно доступ к GC) не нужна. Т.е. в идеальном мире, где всё решается правильностью архитектуры, а не историческим наследием, wasm должны были бы встроить между web api и движком js. Т.е. чтобы wasm ничего не знал про js, а имел доступ только к web api. Причём только он и имел бы, а все остальные движки (дефолтный js и любые другие) уже работали через wasm. Но у нас мир не идеальный, с тяжёлым наследием огромных куч плохо спроектированного кода на js, так что будем иметь не правильную архитектуру, а некий результат компромиссов.
_>>Это если они вообще это реализуют, т.к. для интеграции web api этого не требуется (достаточно внешних дескрипторов), а требуется только для удобной (простая...
MA> DOM и JS неявно требует GC. Вот только это. В остальном — любые API отлично ложаться на разные языки. Ну DOM API влезет даже в C++ без изменений практически.
Работа с DOM не требует ни GC, ни C++. Для её полноценной реализации достаточно всего десятка функций на стареньком C.