h3 icon indicating copy to clipboard operation
h3 copied to clipboard

Please upload to crates.io

Open g2p opened this issue 3 years ago • 1 comments

Hello, I'm using h3 and h3-quinn in a reverse proxy I'd like to publish someday. I'd like to have the h3 crates uploaded to crates.io. I'm not sure if a proper release is waiting for #34 / #82 (found via #70), but I'd be happy even if the upload has a -pre in the version number. Someone else has uploaded forked versions (https://lib.rs/crates/httproxide-h3, https://lib.rs/crates/httproxide-h3-quinn) with possible changes (.cargo_vcs_info.json points to private commits), and it would be better to be able to use something tagged from this repository. Tangentially related, license information is missing in h3-quinn/Cargo.toml.

g2p avatar Sep 06 '22 17:09 g2p

I'll note that reqwest also wants this (as some kind of prerelease) so they can get an experimental h3 setup going.

passcod avatar Sep 07 '22 05:09 passcod

@eagr @Ruben2424 @stammw @camshaft I'm curious to hear from any of you about how we should start publishing the crate.

Publishing to crates.io will help other early adopters try it out, such as unblocking reqwest experimental usage.

At the same time, it's my opinion that proper expectations of this crate should be made. The purpose of this crate is to strictly implement what is necessary for HTTP/3, without including all the batteries, so that others can mold it into their system (such as hyper). So, the public API is certainly less stable. Especially when we notice things like #145, questioning the traits.

That said, I do suspect that publishing some versions and then getting things like reqwest or tower-h3 using it will help give valuable feedback that the API probably does need to change, and possibly quicker than normal. I also imagine that release a 0.1 is likely worthy of a nice blog post and celebration.

All of that to ask, should it just be tagged 0.1 nowish, announce, and then likely quickly tag a 0.2? Or should we tag something even more unstable than 0.1, so that 0.1 can be a little more stable? It's likely not something to spend too much time debating, but at the same time, likely worth a small discussion instead of just shooting from the hip.

seanmonstar avatar Nov 30 '22 16:11 seanmonstar

I would wait with the 0.1 until h3 supports quinn 0.9. A more unstable tag than 0.1 until quinn 0.9 is supported sounds good to me.

Ruben2424 avatar Nov 30 '22 20:11 Ruben2424

I'd be fine with publishing a 0.0.x as an early first step. Even that is much more convenient than a git dependency.

camshaft avatar Dec 01 '22 04:12 camshaft

I agree with @Ruben2424 that 0.1 could wait until we have resolved the quic trait issues. Maybe just do a 0.0.1 quickly to unblock stuff?

eagr avatar Dec 01 '22 05:12 eagr

We may need to use async trait to support quinn 0.9, that would greatly change the interface.

inflation avatar Dec 01 '22 06:12 inflation

I just saw that we accept the unidirectional encoder and decoder qpack streams in the InnerConnection.poll_control() method. But as far as i can see these receive streams are only stored but never polled to receive data.

And we also do not create these streams.

The qpack spec says:

HTTP/3 endpoints contain a QPACK encoder and decoder. Each endpoint MUST initiate, at most, one encoder stream and, at most, one decoder stream

But also allows the option to avoid creating them?

An endpoint MAY avoid creating an encoder stream if it will not be used (for example, if its encoder does not wish to use the dynamic table or if the maximum size of the dynamic table permitted by the peer is zero).
An endpoint MAY avoid creating a decoder stream if its decoder sets the maximum capacity of the dynamic table to zero.

So I think the dynamic table encoding and decoding does not work right now, right? So do we need to fix this before publishing?

Ruben2424 avatar Jan 24 '23 10:01 Ruben2424

So I think the dynamic table encoding and decoding does not work right now, right?

Correct, we don't currently use the dynamic table, but as you've noticed in the spec, it's not required. It's strictly an optimization, allowing headers that aren't in the static table to be compressed. So I don't think it would block us.

seanmonstar avatar Jan 27 '23 00:01 seanmonstar

What's the status on this? I'd like to use this in my project, and a crates.io release would be really convenient.

ifd3f avatar Feb 14 '23 00:02 ifd3f

So, I'm thinking that within the next couple days, we just publish the crate as-is (on master) as v0.0.1. It doesn't go with a big blog post or anything, it's simply to allow a few experimenters to move forward (such as the reqwest PR). That we might change the API drastically, or need to upgrade to quinn v0.9, etc is fine as 0.0.2.

Basically, the implementation is ready-ish enough, the API is close.

(If any of the collaborators would like to be part of the cargo publish process, I'm happy for that to happen too.)

seanmonstar avatar Mar 01 '23 21:03 seanmonstar

If any of the collaborators would like to be part of the cargo publish process, I'm happy for that to happen too.

What exactly do you mean with "be part of the cargo publish process"?

Ruben2424 avatar Mar 02 '23 22:03 Ruben2424

Basically, do the actual release/publish process (together in chat or something), to spread the knowledge/responsibility. (Probably should document it anyways...)

seanmonstar avatar Mar 03 '23 15:03 seanmonstar

Basically, do the actual release/publish process (together in chat or something), to spread the knowledge/responsibility. (Probably should document it anyways...)

I'm open to opportunities to get involved

Ruben2424 avatar Mar 03 '23 17:03 Ruben2424

It is now published :rocket:

Ruben2424 avatar Mar 09 '23 20:03 Ruben2424