*Objectives*


Provide an Nginx module that is compatible with proxy-wasm standard and
exposes API to APISIX



*Wasm SDK*



reusing SDK from proxy-wasm

https://github.com/proxy-wasm/spec



*Which Wasm VM does we choose*



Candidates:

   1. wasmtime
   https://docs.wasmtime.dev/c-api/
   2. wasmer
   https://github.com/wasmerio/wasmer/tree/master/lib/c-api

*Implementation ideas of wasm-nginx-module*



Main modules.

   1. Encapsulate a layer of Wasm VMs to interface with various Wasm VM
   implementations
   2. Wrapping a context layer, which contains the VM abstraction, context
   switching, etc.
   3. Implementing the proxy-wasm standard host API for injection into the
   Wasm VM
   4. Expose the C API for Lua to call via ffi, enabling Lua to drive the
   Wasm VM



1 and 2 refer to:

https://github.com/proxy-wasm/proxy-wasm-cpp-host



some host API in 3 may be implemented by calling Lua.



*The interaction between Wasm VM, Nginx C, and Lua VM*



All three are in the same process, so they can call each other





6.1 Can be implemented as step 1

6.2 can be implemented as the second step, it is important to consider
whether a generic Wasm VM <=> Lua VM call protocol is needed, or whether it
should be implemented as a simple API

Reply via email to