Please enable JavaScript in your browser!
Startseite
Erkunden
Hilfe
Anmelden
Matt
/
compilersnotes
Beobachten
1
Favorit hinzufügen
0
Fork
0
Code
Issues
0
Pull-Requests
0
Commits
1
Releases
0
Wiki
Keine Beschreibung
Branch:
master
Branches
Tags
master
compilersnotes
/
webasm.md
webasm.md
1.4KB
Permalink
Verlauf
Originalformat
Summarise Contribution & Motivation
Web is becoming mature and now requires more complex applications to run on it
Javascript is currently only built in language
Javascript is not well equipped to deal with these applications or be a compile target
WebAssembly is a low level bytecode for the web
Aims to provide safe, low overhead execution
Better solution than plugins for safety
Better than asm.js for consistent performance
Methodology
Defines modules for each binary and therefore allows imports
Defines functions, not first class and not nested, call stack not exposed
Instructions based in a stack machine, for compactness
Only defines 4 types, integers and IEEE floating points
Has global and local variables
Memories defined by modules with little endianness, disjoint from code space and stack so programs can only mess up their own environment
Does not offer simple jumps, has structured control flow, gives single pass validation/compilation/SSA
Can do JIT and validation in single pass
Transmitted over wire in binary form, streaming compilation possible due to layout
Critical Assessment
Improves on native client by being available on all browsers as it is not compact and still requires knowledge of underlying system
Traps are not handled but need JS intervention
Still missing features for higher level languages
A compile target for the web with safety by design should prevent many exploits -