Difference between revisions of "WebAssembly/Roadmap"

From Lazarus wiki
Jump to navigationJump to search
m
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 
 
|
 
|
|Implement direct function calls, with passing basic parameters (that don't require any memory. I.e. int and floats)
+
|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

See Also