Skip to content

WASI HTTP version #1280

@vigoo

Description

@vigoo

We are building a platform (Golem) built on the WebAssembly system interface (WASI). Unfortunately reqwest at the moment does not support wasi-http (WASI's http interface), and although there are discussions and draft pull requests to introduce support for it, it does not look like it is going to happen anytime soon.
The most production ready Rust wrapper around wasi-http at the moment is the client in wstd that also includes a wasi compatible async runtime.

I've forked progenitor and made a wstd based version if it: https://github.com/golemcloud/progenitor-wasi-http

It has some serious limitations compared to the real version though, due to the limitations of wasi-http:

  • no websocket upgrade
  • no streaming (body and paging)
  • more constrained requirements for what can be passed as a raw body

With all these limitations it's a very useful library for platforms based on wasi-http.

I would be happy to work on somehow making this part of the official library, but it's not straightforward at all, with reqwest completely replaced and all these other limitations introduced. Maybe it does not worth the effort; I primarily opened this issue to discuss this.
If there is interest in upstreaming it, let's discuss how; otherwise we can just keep it as a fork for now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions