oxidecomputer / oxidecomputer/progenitor

WASI HTTP version

Open
#1,280 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
1k
Forks
136
Avg merge
8h 36m
Merged PRs (30d)
14

Description

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No repository files or tests are named. Start by reviewing the existing reqwest-based client path and comparing it with the linked progenitor-wasi-http fork, including its wstd dependency and wasi-http limitations. Done would require an agreed upstreaming design and corresponding implementation scope.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.