Closed rnro closed 1 year ago
The API breakage the checker is picking up is under SPI and I believe it is fine.
These are all SPI changes so are safe to ignore:
14:05:45 5 breaking changes detected in NIOHTTP2:
14:05:45 💔 API breakage: func NIOHTTP2Handler.AsyncStreamMultiplexer.createStreamChannel(_:) has generic signature change from <InboundStreamOutput, OutboundStreamOutput> to <InboundStreamOutput, Output where Output : Swift.Sendable>
14:05:45 💔 API breakage: func Channel.configureAsyncHTTP2Pipeline(mode:configuration:position:inboundStreamInitializer:) has generic signature change from <Self, Output where Self : NIOCore.Channel> to <Self, Output where Self : NIOCore.Channel, Output : Swift.Sendable>
14:05:45 💔 API breakage: func Channel.configureAsyncHTTPServerPipeline(http2Configuration:http1ConnectionInitializer:http2ConnectionInitializer:http2InboundStreamInitializer:) has generic signature change from <Self, HTTP1ConnectionOutput, HTTP2ConnectionOutput, HTTP2StreamOutput where Self : NIOCore.Channel, HTTP1ConnectionOutput : Swift.Sendable> to <Self, HTTP1ConnectionOutput, HTTP2ConnectionOutput, HTTP2StreamOutput where Self : NIOCore.Channel, HTTP1ConnectionOutput : Swift.Sendable, HTTP2ConnectionOutput : Swift.Sendable, HTTP2StreamOutput : Swift.Sendable>
14:05:45 💔 API breakage: func SynchronousOperations.configureAsyncHTTP2Pipeline(mode:configuration:position:inboundStreamInitializer:) has generic signature change from <Output> to <Output where Output : Swift.Sendable>
14:05:45 💔 API breakage: func NIOHTTP2Handler.AsyncStreamMultiplexer.createStreamChannel(configuration:initializer:) has been removed
Motivation:
When adding in the SPI methods for exposing async sequences of HTTP/2 streams we moved the stream initialization to a subtly different location so that it was easier to exfiltrate the outputs of those initialization functions (such as protocol negotiation outputs).
In some cases this broke ordering expectations.
Modifications:
Yield the (optionally wrapped) channels as initializer outputs to the async stream when the initialization and activation steps succeed.
Result:
Changes only exist within SPI. Async inbound stream channel initialization now matches previous behavior.