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

_>>На фоне всех этих разговоров о введение "непрозрачных ссылок" для реализации web api, я подозреваю что там будет некий аналог функции CloseHandle из win api.

MA> "Непрозрачной ссылкой" может выступать хэндл GC. Не спроста же все ведущие браузеры реализуют wasm в своих движках JS. Там уже всё есть: кодогенерация, GC и интероп с сервисами браузера. Остаётся только ждать до чего они там договорятся.
MA> ADD: Я об этом и говорил сразу — прикрутили бы только по человечески, не через pinning / ref counting GC объектов, а через честные GC-ссылки, что бы сразу отcечь все возможные проблемы из-за циклов и т.п.

В теории всё возможно. Но если взглянуть на их планы https://github.com/WebAssembly/design/blob/master/GC.md, то там видно несколько другое.

Работу с 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.

Плюс к этому отдельно (причём наверняка только в браузерном варианте, т.к. оно нужно только для полной интеграции с JS) будет поддержка работы с внешним GC, через "непрозрачные" ссылки (т.е. это будет что-то вроде функции GCAlloc), в которые можно будет писать напрямую (например чтобы эффективным образом вернуть из wasm кода JS объект).

Да, и ещё один нюанс: это всё далёкое будущее, т.к. в ближайшее время у них в планах стоит поддержка многопоточности и SIMD (что гораздо важнее для их основной цели — производительного кода). А это так, размышления о будущем. Так что ещё далеко не факт в какой степени и когда оно будет реализовано (например не факт что после добавления web api обязательно буду реализовывать плотную интеграцию с JS).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.