Difference between revisions of "WebAssembly/Roadmap"
From Lazarus wiki
Jump to navigationJump to searchm |
m |
||
Line 1: | Line 1: | ||
− | {|class="wikitable" | + | {|class="wikitable" style="width:100%" |
!Feature | !Feature | ||
!Status | !Status | ||
Line 5: | Line 5: | ||
|- | |- | ||
|Assembly (textual wasm) | |Assembly (textual wasm) | ||
− | | | + | |class="working"|working |
|Pick an assembler utility that's sequence instruction (FPC) friendly | |Pick an assembler utility that's sequence instruction (FPC) friendly | ||
Line 11: | Line 11: | ||
|- | |- | ||
|Basic function calls and local variables | |Basic function calls and local variables | ||
+ | |class="working"|working | ||
+ | |Implement direct function calls, with passing basic parameters (that don't require any memory. I.e. int and floats) | ||
+ | |- | ||
+ | |Verify float-point values | ||
| | | | ||
− | | | + | |As the float points are being converted from the textual format. it's necessary to make sure that the proper values are generated |
|- | |- | ||
|Global variables | |Global variables | ||
− | | | + | |class="working"|working |
|Implement symbol reference to global variables (basic or complex) | |Implement symbol reference to global variables (basic or complex) | ||
Line 21: | Line 25: | ||
|- | |- | ||
|Stack/Call frame support | |Stack/Call frame support | ||
− | | | + | |class="working"|working |
|WebAssembly doesn't have any native stack and/or frame support. | |WebAssembly doesn't have any native stack and/or frame support. | ||
Line 27: | Line 31: | ||
|- | |- | ||
|Indirect function calls | |Indirect function calls | ||
− | | | + | |class="partial"|in progress |
|WebAssembly has a specific way of indirect calls | |WebAssembly has a specific way of indirect calls | ||
Line 35: | Line 39: | ||
| | | | ||
|Support for calls via virtual method table | |Support for calls via virtual method table | ||
+ | |- | ||
+ | |RTL | ||
+ | |class="not"|not in scope | ||
+ | | | ||
+ | |} | ||
+ | ==Long-term== | ||
+ | {|class="wikitable" style="width:100%" | ||
+ | !Feature | ||
+ | !Status | ||
+ | !Description | ||
+ | |- | ||
+ | |Internal Writer | ||
+ | | | ||
+ | |The binary wasm format is well defined and could be implemented within FPC | ||
+ | |- | ||
+ | |Internal Linker | ||
+ | | | ||
+ | | | ||
|} | |} | ||
==See Also== | ==See Also== | ||
*[[WebAssembly]] | *[[WebAssembly]] | ||
[[Category:WebAssembly]] | [[Category:WebAssembly]] |
Revision as of 15:16, 17 October 2019
Feature | Status | Description |
---|---|---|
Assembly (textual wasm) | working | Pick an assembler utility that's sequence instruction (FPC) friendly
FPC should produce a textual assembly file |
Basic function calls and local variables | working | Implement direct function calls, with passing basic parameters (that don't require any memory. I.e. int and floats) |
Verify float-point values | As the float points are being converted from the textual format. it's necessary to make sure that the proper values are generated | |
Global variables | working | Implement symbol reference to global variables (basic or complex)
Consider linking - as the index of symbols can change. (Wasm binaries are index based ) |
Stack/Call frame support | working | WebAssembly doesn't have any native stack and/or frame support.
It has to be emulated using global and local variables. |
Indirect function calls | in progress | WebAssembly has a specific way of indirect calls
Needed for vmt and procedure variables (callback) calls |
VMT | Support for calls via virtual method table | |
RTL | not in scope |
Long-term
Feature | Status | Description |
---|---|---|
Internal Writer | The binary wasm format is well defined and could be implemented within FPC | |
Internal Linker |