Re[19]: А что мешает заменить JS?
От: Mystic Artifact  
Дата: 27.03.17 20:39
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Работу с web api (и не только — это будет общий механизм для взаимодействия с любым api программы, в которую встраивается движок wasm) будут обеспечивать эти самые "прозрачные" ссылки (я там выше опечатался — задумался о другом и вставил лишнее "не"): "a new set of operators would be added for allocating, deallocating, loading and storing from integer-indexed cells that could hold references". Т.е. очевидно что это ближе к классическому OS API на дескрипторах, без всяких GC.

Не-не. Opaque — это непрозрачные ссылки. Понятно, что они этим хотят обезопасить среду исполнения + интероперабельность. Да, это ближе к OS API, хотя сути это же меняет: OS-и вполне совершают подсчет ссылок объектов. Так и тут соврешенно ничего не должно мешать иметь маппинг wasm-handle на v8-handle (например). Если аккуратно с ними работать (ну и C++ к этому будет толкать, я надеюсь) — то и проблем быть не должно. А с другими языками — х.з.
Но это всё просто на примитивном API.

А возьмём XMLHttpRequest с его колбэками, немного надуманно, но всё таки (в общем-то Using XMLHttpRequest это и делает).
1. Создали XMLHttpRequest.
2. Подписались на событие "load".
3. Отправили запрос в космос.
4. Освободили ссылку на XMLHttpRequest.
5. Сидим ловим колбэки.

При этом:
Запрос давно отменён браузером, например по причине недоступности сети -> все замыкания/контексты которые ждут события — ждут его бесконечно, и что самое главное — никогда не дождуться и никогда не высвободятся. Это — уже ломает API, потому что в нормальной ситуации это всё заруливает GC. Понятно, что это можно побороть — необходимо хосту давать рулить временем жизни объектов хотя бы частично. Как это зарулить, на том же C++, при этом что бы это было и стандартно и не вырвиглазно — я честно говоря не знаю. Пусть они думают.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.