github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/design/services.md (about)

     1  ## Top-level sections
     2  
     3  - [General principles: WASM](#general-principles-wasm)
     4  - [General principles: VSQL DDL](#general-principles-vsql-ddl)
     5  - [Development](#development)
     6  
     7  ---
     8  ## General principles: WASM
     9  
    10  Development
    11  
    12  - Extension language
    13    - Development: Go
    14    - Compilation: TinyGo
    15  
    16  Runtime
    17    - wazero
    18    - Preallocated Buffer
    19      - Used to send data from the host
    20      - WasmPreallocatedBufferSize: 64K + 25% growth if necessary
    21      - Per wazero module
    22    - Garbage collection is not used
    23      - Reason: too slow (even when runtime is a compiler) and unreliable
    24      - In case of memory overflow the memory is restored to the initial state and function call is repeated
    25  
    26  ### Related components
    27  
    28  Voedger Engine
    29  - [pkg: iextengine](../../pkg/iextengine)
    30  - [pkg: iextenginebuiltin](../../pkg/iextenginebuiltin)
    31  - [pkg: iextenginewazero](../../pkg/iextenginewazero/README.md)
    32  
    33  SDK
    34  - [pkg: github.com/voedger/exttinygo](../../staging/src/github.com/voedger/exttinygo/README.md)    
    35  
    36  ---
    37  ## General principles: VSQL DDL
    38  
    39  - No NULL values
    40    - NULL-reference is just zero value
    41  - Not possible to update an unique field
    42  
    43  ### Related components
    44  - [pkg: parser](../../pkg/parser)
    45  
    46  ---
    47  ## Development
    48  ### Principles
    49  
    50  *Folder Structure*
    51  - vddl files
    52  - `extwasm` folder
    53  
    54  ### Related components
    55  
    56  - [cli: vpm](../../cmd/vpm/README.md)
    57  
    58