Skip to content

hyper-util's "client-legacy" feature forces use of mio, but wasn't required in hyper 0.14.x #3842

Open
@erickt

Description

@erickt

Version
List the version(s) of hyper, and any relevant hyper dependency (such as h2 if this is related to HTTP/2).

hyper 1.6.0, hyper-util 0.1.10

Platform
The output of uname -a (UNIX), or version and 32 or 64-bit (Windows)

Fuchsia

Description
Enter your issue details here.
One way to structure the description:

I work on the Fuchsia operating system, and we're running into problems updating hyper from 0.14.x to 1.x with this in our Cargo.toml:

hyper = { version = "0.14.19", default-features = false, features = ["stream", "http1", "client", "server"] }
hyper-rustls = { version = "0.24.2", default-features = false }
...

This is requiring us to also update our hyper-rustls from 0.24.2 to 0.27.5, which now depends on hyper-util 0.1.x to wrap the client library. This causes our version of tokio to enable the mio feature, which doesn't support Fuchsia and fails to compile.

From what I can tell, this worked back in hyper 0.14.x because these subset of feature flags allowed hyper-rustls 0.24.x to expose most of it's functionality it needed based off the lower level connection API. It seems that hyper-util 0.1.10's client-legacy feature merged that functionality together that requires tokio. Would it be possible to restore this old functionality? It'd be unfortunate for us to have to essentially fork hyper-rustls and hyper-util to allow it to work with a non-tokio executor. I'd be happy to help with a refactor there's interest in this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-clientArea: client.C-bugCategory: bug. Something is wrong. This is bad!K-hyper-utilCrate: hyper-util

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions