Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDK demands imports that aren't part of the spec #104

Closed
Spoonbender opened this issue Apr 29, 2021 · 2 comments
Closed

SDK demands imports that aren't part of the spec #104

Spoonbender opened this issue Apr 29, 2021 · 2 comments

Comments

@Spoonbender
Copy link

I'm trying to create a plugin using proxy-wasm-rust-sdk which will run inside a proxy-wasm-go-host.
My plugin fails to initialize due to missing imports (not provided by the Go host).
These missing imports are not a part of the ABI spec as it appears here
They include the following functions:

  • proxy_clear_route_cache
  • proxy_continue_request
  • proxy_continue_response
  • proxy_get_configuration
  • proxy_send_local_response

I understand these functions are a part of Envoy specifically, but not a part of the ABI.

I propose that any such function which isn't part of the ABI will be excludable using the Rust conditional compilation feature, e.g. by having an envoy feature (to opt-in all envoy-specific functions) or a abi-x.y.z feature (to opt-out any function which doesn't comply with this ABI version).

(If accepted and some implementation guidelines are provided, then I can issue a PR)

@PiotrSikora
Copy link
Member

Thanks for the report!

I agree that any Envoy specific ABI extensions should be guarded by a feature. However, that's not what's happening here. Those functions are in fact part of the ABI v0.1.0, which Rust SDK implements (update to ABI v0.2.1 is pending merge in #64).

Proxy-Wasm Go Host claims support for ABI v0.1.0 and v0.2.0, but it doesn't implement either correctly (see: mosn/proxy-wasm-go-host#10).

Note that the vNEXT in proxy-wasm/spec repo is a work-in-progress for the next iteration of the specification (hence vNEXT), and there is no documentation for either ABI v0.1.0, v0.2.0 or v0.2.1, so Envoy and SDKs are effectively the specification for those versions.

@Spoonbender
Copy link
Author

@PiotrSikora thank you for the clarification!
It would be nice if this information would be reflected in the markdown files in the spec repo, I'll see if I can PR to improve that.
In any case - I'm closing this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants