Skip to content
This repository has been archived by the owner on Mar 26, 2024. It is now read-only.
NatrixAeria edited this page Mar 19, 2020 · 3 revisions

WASI - WebAssembly System Interface

- WASI will not be used in this project. WASI is and probably will be slow on browsers.
- This page may be deleted in future.

WASI ist eine verallgemeinerte Schnittstelle zu einem virtuellen Betriebssystem. Das heißt, man kann durch diese Schnittstelle in WebAssembly unixoide Funktionen nutzten, wie z.B. fd_read() oder clock_time_get(). Leider sind Informationen zu dem Thema noch Mangelware und es scheint nicht garantiert zu sein, dass es sich durchsetzt. Informative Weblinks unten.

Läuft WASI einfach so im Browser?

Dazu liefert uns die Wasmtime overview-page Infos:

Can WASI apps run on the Web? Yes! We have a polyfill which implements WASI and runs in browsers. At the WebAssembly level, WASI is just a set of callable functions that can be imported by a .wasm module, and these imports can be implemented in a variety of ways, including by a JavaScript polyfill library running within browsers. And in the future, it's possible that builtin modules could take these ideas even further allowing easier and tighter integration between .wasm modules importing WASI and the Web.

TL;DR es ist noch nicht in Browsern implementiert, was aber noch in Aussicht steht. Stattdessen gibt es eine js-Implementation namens polyfill

Javascript Polyfill

Was sich nach einem schlechten Programm anhört, das Polygone ausfüllen soll, entpuppt sich als eine inperformante Softwareimplementation von WASI auf js-Ebene. s. source code

Problem: Wenn wir WASI nutzen wollen, dann nur aus Performance-Gründen, um zum Beispiel einen effizienten Timer für die Game Loop zu bekommen. Allerdings würde das js-polyfill unsere Anwendung langsamer machen, als eine alternative Implementation über setInterval, daher steht jetzt die Frage offen, ob man WASI nutzen soll und das Risiko eingeht, dass es möglicherweise nie eine effiziente Anbindung zum Web-Browser gibt, oder weiterhin die hässliche Lösung mit setInterval nutzt.

Wasmtime - Was ist dieser Wasmtime / Kann man das essen?

Das ist eine WebAssembly runtime hauptsächlich von Mozilla-Menschen. WASI war wohl eines von deren kranken Methoden, Menschen zu mobben.

Läuft Wasmtime im Web?

Nö. Wäre ja auch zu schön gewesen.

WASI und Rust

Scheint recht reibungslos zu laufen. Es gibt sogar ein eigenes target wasm32-wasi für WASI. Sogar rust-std nutzt mittlerweile WASI-syscalls (https://doc.rust-lang.org/std/time/struct.Instant.html#underlying-system-calls).

Siehe zudem noch

Navigation

Brainstorming:
      Sessions Liste 📃
      Letzte Session ◀️
      Nächste Session ▶️
      Last Design-Session 👈
      Next Design-Session 👉
      Dunkle Seite 🌈
Design:
      Sound 🎧
      Grafikdesign 🤺
      Animationen 🎞️
      Gamedesign 📝
Programmierung:
      Gamelogik ⚙️
      Frontend 👾
      Backend 🗄️
Spielprotokoll 🧻

Clone this wiki locally