Design: Wasmroutinen

Erstellt am 30. Dez. 2019  ·  5Kommentare  ·  Quelle: WebAssembly/design

Der Vorschlag für bestehende WebAssembly-
Ich glaube, dass WebAssembly einzigartig positioniert ist, um die Vorteile des Go-Threading-Modells praktisch jeder Multithread-Anwendung zu verleihen, die in wasm kompiliert werden kann. Die Idee ist, dass das kompilierte Programm nicht geändert werden muss, um die grünen Threads zu nutzen, dies wird die Entscheidung des Hosts, wie es ausgeführt wird.
Ein weiteres wichtiges Merkmal von WebAssembly ist die deterministische Ausführung. Bei grünen Threads sollte es einfach sein, den deterministischen Ausführungsmodus für Multithread-Ziele zu implementieren.
Der Strohmann-Name für das Feature ist _Wasmroutines_.

Ich habe ein paar Probleme im Zusammenhang mit "nativen Wasm-Threads" wie https://github.com/WebAssembly/design/issues/126 und https://github.com/WebAssembly/design/issues/1252 gefunden, aber es sieht so aus, als wären sie es als etwas angesehen, das wasm irgendwann bekommen könnte, aber an diesem Punkt ziemlich theoretisch.

Ich glaube, dass die _Einzelsystem-Thread-Implementierung_ mit relativ geringem Aufwand durchgeführt werden kann (z. B. könnte der normale lineare Speicher verwendet werden) und eine Menge Wert bieten (wie das Ausführen eines Multithread-Programms ohne Modifikation), das es wert ist, als separates Design zu haben Vorschlag.

Hilfreichster Kommentar

Es gibt ein Video, in dem @rossberg vorgeschlagenes Design für Fortsetzungen präsentiert (erwähnt von @lukewagner).

https://youtu.be/pq-Pa2Fj4nE?t=3231

Alle 5 Kommentare

Möglicherweise interessiert Sie Asyncify , ein angehalten und

Danke @tlively. Asyncify sieht nach einer coolen Notlösung für mein Problem aus. Ich werde versuchen, darüber einen Prototypen zu bauen. Idealerweise möchte ich ein beliebiges Multithread-WebAssembly-Programm ohne Änderungen ausführen und nur die Funktionen verwenden, die der Host bereitstellt.

@mfateev ich denke du hast recht; Es wäre von großem Wert, Koroutinen zu unterstützen. Es gab bereits einige Vorgespräche über die Vereinheitlichung von Ausnahmebehandlungen und Coroutinen im Rahmen algebraischer Effekte. Dies wird im alten Ausnahmebehandlungsvorschlag besprochen , und ich denke, @rossberg hat einige neuere Design Thinkings, die mit dem neuen Ausnahmebehandlungsvorschlag kompatibel sind.

Es gibt ein Video, in dem @rossberg vorgeschlagenes Design für Fortsetzungen präsentiert (erwähnt von @lukewagner).

https://youtu.be/pq-Pa2Fj4nE?t=3231

Danke für das Video. Das "Stack Switching" ist eine sehr mächtige Abstraktion, die die Vielzahl von Anwendungsfällen ermöglichen würde. Freue mich auf Unterstützung.

Mein Blickwinkel ist irgendwie anders, wenn es darum geht, keine neuen Funktionen im Wasm-Bytecode vorzuschlagen. Ich überlege, die deterministische Ausführung für jeden Multithread-Code bereitzustellen, der atomic.wait/notify und andere atomare Operationen verwendet. Ich glaube, dass wir einen speziellen Host-Ausführungsmodus angeben können, der im Wesentlichen auf Coroutinen basiert, aber für eine Web Assembly-Anwendung wie eine Multithread-Laufzeit aussieht.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

JimmyVV picture JimmyVV  ·  4Kommentare

badumt55 picture badumt55  ·  8Kommentare

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6Kommentare

Thaina picture Thaina  ·  8Kommentare

bobOnGitHub picture bobOnGitHub  ·  6Kommentare