Repository navigation
Releases: apple/swift-network-evolution
Releases · apple/swift-network-evolution
Release list
0.6.0
What's Changed
SemVer Major
- Make NetworkContext concurrency aware. Adopt swift concurrency in NetworkConnection by @porchdog in #258
- SwiftQUIC: PERF: Optimize overhead in serviceStreamDataToSend by @agnosticdev in #271
SemVer Minor
- Give WriteRequest and ReadRequest flags and per-request state, and queue writes by priority by @tfpauly in #267
- QUIC tests on virtual time by @rnro in #263
- Added support for Keying Material Exporters for TLS by @mohakvni in #273
SemVer Patch
- SwiftQUIC: PERF: Optimize retain / release usage in buildSinglePacketForKeyState by @agnosticdev in #262
- SwiftQUIC: PERF: Reduce CPU usage on write path for outgoingIPCodepoint by @agnosticdev in #261
- SwiftQUIC: Prevent overlapping access to sendFrames for safety by @agnosticdev in #259
- ECN: make per-path ECN state non-optional and fix L4S setup ordering by @rpaulo in #252
- SwiftNetwork: Optimize for speed functions that do not optimize well in -Osize compilation by @agnosticdev in #274
- Make sure all of the fields are captured in the DataTransferSnapshot by @agnosticdev in #272
Other Changes
- Give each qlog test a directory of its own by @rnro in #260
- Bump swiftlang/github-workflows/.github/workflows/swift_package_test.yml from 0.0.15 to 0.0.16 in the swiftlang-actions group by @dependabot[bot] in #264
New Contributors
Full Changelog: 0.5.0...0.6.0
0.5.0
What's Changed
SemVer Major
- Protocol Stack Refactor by @tfpauly in #165
- DataTransfer: expose snapshot and establishment report APIs publicly by @rpaulo in #189
- Move fields from Endpoint class to EndpointCommon struct by @tfpauly in #205
- SwiftQUIC: Add event for QUICPath assigned by @agnosticdev in #178
- Make the value-typed protocol options
Sendableby @rnro in #213 - Turn Endpoint into a sendable struct by @tfpauly in #240
- Make the QUIC options value types by @rnro in #257
SemVer Minor
- Define parameter to opt out of local network usage by @tfpauly in #172
- TCP: add TCP protocol configuration and options access by @rpaulo in #188
- Expose direct interface on path properties by @tfpauly in #193
- Make EndpointFlow a non-copyable struct by @tfpauly in #195
- Route writes to the protocol options through scoped calls by @rnro in #239
- Make IPv4Address/IPv6Address raw values and IPv4-mapped accessors public by @kpodosin in #243
SemVer Patch
- SwiftQUIC: PERF Reduce exclusivity checks for building outbound stream frames by @agnosticdev in #176
- SwiftQUIC: PERF: Reduce Exclusivity on the Inbound path by @agnosticdev in #174
- Update private network context storage by @tfpauly in #186
- QUIC: fix DCID reassignment on connection ID rotation by @josephnoir in #180
- Endpoint: make matchesPattern stricter about pattern types by @kpodosin in #203
- QUIC: don't prefetch a datagram batch when sending on a non-current path by @kkuk24 in #194
- Fix flakiness in testQUICConnectionIdleTracksOwedAck by @tfpauly in #207
- QUIC: fix congestion control state loss on ECN and background switches by @rpaulo in #210
- Fix stateless reset response size by @josephnoir in #187
- SwiftQUIC: ACK timer aborts with an exclusivity conflict when it sends a PMTUD probe by @agnosticdev in #208
- EndpointFlowExtension: route bridged TCP flows through user IP stack by @rpaulo in #209
- Make
FramePadding.countLeadingZeroBytesfaster by @MahdiBM in #190 - Create the header protection cryptor once per key by @rnro in #198
- Encode HKDF labels in temporary storage by @rnro in #199
- SwiftQUIC: PERF: Move CongestionControl state to a common struct by @agnosticdev in #204
- Keep retained capacity in
FrameArray.add(frames:)by @rnro in #196 - Seal and open packets through CryptoKit's span API where the OS has it by @rnro in #197
- Dispatch immediate tasks without a work item by @rnro in #200
- Sum
checksum16in 64-byte blocks with an add-with-carry chain by @rnro in #224 - Code inlining by @rnro in #192
- Store a sent packet's first stream send inline by @rnro in #201
- Fix nightly-main build: guard versioned canImport(CryptoKit) checks by @deadcaf3 in #226
- Update Swift versions and one trunk flag on CI by @finagolfin in #228
- Add Android support by @finagolfin in #222
- Fix fuzzer compilation in release builds by @tfpauly in #233
- Keep QUIC frame handlers out of
processFrame's stack frame by @rnro in #237 - TransportParameters: use NetworkDuration for ack delay parameters by @rpaulo in #235
- SwiftQUIC: PERF: Change pipeAckSamples to an InlineArray by @agnosticdev in #236
- QUIC: scale received ACK delay by the peer's ack_delay_exponent by @deadcaf3 in #214
- TransportParameters: enforce RFC 9000 decoding validation by @rpaulo in #238
- Don't drop a datagram when it can't be sent because it won't fit by @holleman in #161
- RTT: fix base RTT rollover timestamp not advancing by @rpaulo in #245
- QUIC: cap queued RETIRE_CONNECTION_ID frames by @deadcaf3 in #218
- Fix client hang when server closes during handshake by @josephnoir in #182
- Mock clock by @rnro in #191
- RTT: align base history interval boundaries to fixed steps by @rpaulo in #248
- CongestionControl: fix spurious loss recovery undo by @rpaulo in #244
- Detect incomplete IPUDPTransfer datagrams by @danielsyauqi in #251
- SwiftQUIC: PERF: Create a reusable scratch buffer to run xor operations by @agnosticdev in #253
- SwiftQUIC: PERF: Reduce Memory Layout of QUICStreamInstance by 20% by @agnosticdev in #247
- Update IPv4Address/IPv6Address string parsing by @kpodosin in #246
Other Changes
- Fuzzing: add libFuzzer targets for QUIC packet and transport parameter parsing by @rpaulo in #147
- Fix
testQUICEcho1MiBAckBundlingbuild after the handler became `Sen… by @rnro in #225 - Bump actions/cache from 4 to 6 by @dependabot[bot] in #221
- Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #220
- Bump apple/swift-nio/.github/actions/pull_request_semver_label_checker from 2.103.0 to 2.104.0 by @dependabot[bot] in #254
New Contributors
- @MahdiBM made their first contribution in #190
- @deadcaf3 made their first contribution in #226
- @finagolfin made their first contribution in #228
Full Changelog: 0.4.0...0.5.0
0.4.0
What's Changed
SemVer Major
- Clock reads go via the scheduler by @rnro in #146
- Frame: add hardware checksum offload and TSO metadata by @rpaulo in #154
- SwiftQUIC: Adding QUICUtilities API for creating out of band version negotiation packet by @agnosticdev in #156
SemVer Minor
- Fixed for custom-link protocol usability by @tfpauly in #162
- SwiftTLS: implement record layer instance and enable HAS_SWIFTTLS_RECORD by @kpodosin in #167
SemVer Patch
- QUIC: fix safety issues found by fuzzing by @rpaulo in #157
- SwiftQUIC: Additional Datagram Support by @agnosticdev in #155
- SwiftQUIC: PERF: Optimize serviceStreamDataToSend for CPU by ~20% by @agnosticdev in #160
- Update flow control credit when inbound stream data is abandoned by @tfpauly in #158
- QUIC: Capitalize log message strings by @rpaulo in #164
- Frame: fix aggregate buffer length and metadata handling by @rpaulo in #163
- IPProtocol: fix leak on fragment received for super-packet by @rpaulo in #170
- IPProtocol: support single-IP aggregate frame chains on receive by @rpaulo in #166
- Fix build issues from Collections 1.7 by @agnosticdev in #171
- Use BridgeDatagramProtocol in IPUDPTransfer benchmark by @danielsyauqi in #168
- Update swift-tls to 0.1.2 by @kpodosin in #175
- IPProtocol infrastructure updates by @agnosticdev in #173
- SwiftQUIC: PERF: Resume StreamSendBuffer from a known index when building stream frames by @agnosticdev in #179
- SwiftQUIC: Remove padding checks from RETRY packets by @agnosticdev in #177
- Fix formatting in PacketParser by @agnosticdev in #181
Other Changes
- run CI checks on a schedule by @rnro in #159
- Bump apple/swift-nio/.github/actions/pull_request_semver_label_checker from 2.102.0 to 2.103.0 by @dependabot[bot] in #169
New Contributors
- @danielsyauqi made their first contribution in #168
Full Changelog: 0.3.0...0.4.0
0.3.0
What's Changed
SemVer Major
- SwiftQUIC: Provide path events when QUICPath changes or is validated by @agnosticdev in #107
- Schedule timers with a
NetworkDurationinstead of whole milliseconds by @rnro in #115 - NetworkClock: fix duration arithmetic and improve descriptions by @rpaulo in #125
- SwiftQUIC: Expose Stateless Reset Token when CID is retired by @agnosticdev in #123
- Add CustomLinkProtocol + unit test by @porchdog in #139
- SwiftNetwork: Optimize Serializer by @agnosticdev in #149
SemVer Minor
- Support reading with spans in completions by @tfpauly in #119
- Add Sendability to various members of Parameters by @rnro in #110
- Path: expose TSO max segment size properties by @rpaulo in #140
- Checksum: add hardware assist capability flags by @rpaulo in #152
SemVer Patch
- SwiftQUIC: PERF: Optimize CPU for ACK related function by 68% by @agnosticdev in #112
- Recompute maximumStreamDataSize when the stream send buffer drains by @kkuk24 in #100
- SwiftQUIC: PERF: Reduce exclusive access checks by 1.1 gigacycles in the send path by @agnosticdev in #114
- Finalize frames before returning early by @aryan-25 in #118
- SwiftNetwork: PERF: Optimize Serializer by @agnosticdev in #122
- Count leading zeroes a few bytes at a time by @glbrntt in #126
- SwiftNetwork: PERF: Optimize UDP checksum16 by @agnosticdev in #120
Cubicpacing rate tolerates a zero smoothed RTT by @rnro in #109- QUIC: flush pending flow control credit when the application drains by @kkuk24 in #128
- Server Initial packets should not carry tokens by @josephnoir in #121
- Guard and protect against faults/crashes on invalid requests by @holleman in #127
- Thread 'now' through the stack by @rnro in #116
- Optimize recovery sent packet lookup by @tfpauly in #130
- SwiftQUIC: Infrastructure update for stats by @agnosticdev in #132
- SwiftQUIC: PERF: Avoid temporary frame array in the send path by @agnosticdev in #129
- SwiftNetwork: Inline Migration Part One by @agnosticdev in #135
- SwiftQUIC: Eliminate Temporary Allocations in dequeueReassembledData by @agnosticdev in #136
- SwiftNetwork: Deserializer / Serializer performance tweaks by @agnosticdev in #137
- SwiftQUIC: switch from inline(__always) to inline(always) by @agnosticdev in #138
- SwiftQUIC: Move FrameAck to non-copyable in preparation for non-copyable collection by @agnosticdev in #143
- SwiftQUIC: PERF: Optimize redundant code and exclusivity in the inbound path by @agnosticdev in #141
- SwiftQUIC: Fix Packet Parsing issue for malformed packets by @agnosticdev in #144
- SwiftQUIC: PERF: Small optimizations for the tx path by @agnosticdev in #148
- Enable use of CustomLinkProtocol for embedded by @porchdog in #150
- SwiftQUIC: Fix off-queue scheduled event by @agnosticdev in #151
Other Changes
- CI: re-enable nightly-main test job by @rpaulo in #124
- Socket test improvements by @rnro in #108
- Bump apple/swift-nio/.github/actions/pull_request_semver_label_checker from 2.101.3 to 2.102.0 by @dependabot[bot] in #134
- Bump swiftlang/github-workflows/.github/workflows/swift_package_test.yml from 0.0.11 to 0.0.15 in the swiftlang-actions group across 1 directory by @dependabot[bot] in #117
- IPProtocol: adopt ifnet hardware assist flags by @rpaulo in #153
New Contributors
Full Changelog: 0.2.0...0.3.0
0.2.0
What's Changed
SemVer Major
SemVer Minor
- Add a new Socket Stream Protocol by @PayasR in #47
- Make ProtocolLevel Hashable by @kpodosin in #77
- Add datagram demux protocol by @tfpauly in #76
- Add OneToOneDatagramToStreamProtocol by @holleman in #83
- Make endpoint types sendable by @porchdog in #80
SemVer Patch
- Access string length via utf8 (Embedded fix) by @tfpauly in #71
- Remove overhead from Logger metadata in the datapath by @agnosticdev in #72
- Swift IPv6 Outbound Fragmentation support by @agnosticdev in #68
- Reduce size of Frame by @glbrntt in #69
- Don't gate PTO packets on address validation by @rnro in #49
- Fail pending requests before stopping the flow by @kkuk24 in #81
- SwiftQUIC: PERF: Avoid per-path scan unless round trip time has elapsed by @agnosticdev in #79
- Reduce Deserializer CPU Usage by almost 3x by @agnosticdev in #82
- SwiftQUIC: PERF: Delivery data directly to the flow by @agnosticdev in #89
- SwiftQUIC: PERF: Reduce CPU using in processIncomingStreamData by 29% by @agnosticdev in #88
- SwiftUDP small infrastructure additions by @agnosticdev in #92
- SwiftQUIC: PERF: Avoid calling inboundStarting and inboundStopped when not applicable by @agnosticdev in #93
- NetworkClock: add manually advanced clock for deterministic tests by @rpaulo in #74
- Optimize fast path for event firing by @tfpauly in #95
- Consider all unix domain socket secure by @guoye-zhang in #84
- SwiftQUIC: PERF: Switch on the decoded frame type directly when parsing frames by @agnosticdev in #98
- SwiftQUIC: PERF: Avoid duplicate path lookup in handleInbound by @agnosticdev in #96
- Mark the connection non-idle before timer-driven transmissions and pending ACKs by @kkuk24 in #90
- Make harness protocols available without QUIC by @tfpauly in #105
- Make hashing cheaper on hot paths by @glbrntt in #85
Other Changes
- SwiftQUIC: New inbound streams should enqueue the inboundDataAvailable event by @agnosticdev in #73
- Add SemVer machinery. by @rnro in #78
- Allow QUICTestHarness to be extended by @holleman in #86
- Bump actions/checkout from 6 to 7 by @dependabot[bot] in #94
- Bump swiftlang/github-workflows/.github/workflows/swift_package_test.yml from 0.0.11 to 0.0.14 in the swiftlang-actions group by @dependabot[bot] in #99
- Workflows: enable shell_check. by @rpaulo in #101
- CI: extract build/test commands into shared scripts by @rpaulo in #87
- Enable documentation checks in SwiftNetwork. by @rpaulo in #104
- Workflows: enable iOS build target. by @rpaulo in #111
- Workflows: enable api_breakage_check. by @rpaulo in #102
New Contributors
- @PayasR made their first contribution in #47
- @holleman made their first contribution in #86
- @guoye-zhang made their first contribution in #84
- @porchdog made their first contribution in #80
Full Changelog: 0.1.2...0.2.0
0.1.2
What's Changed
- Swift IPv4 add support for outbound fragments by @agnosticdev in #56
- SwiftQUIC: Bugfix in inboundShortheader by @agnosticdev in #57
- Avoid allocating while parsing packet numbers by @glbrntt in #59
- Support attaching application-layer stream protocols to existing flows by @mishtak00 in #61
- Reuse the sent packet deque across sendFrames calls by @glbrntt in #58
- Stop logging a fault for valid PTO cases by @ekinnear in #62
- Add CIDR and domain pattern matching as utilities by @kpodosin in #63
- Use closeMutex for setting closeWithErrorHandler by @tfpauly in #66
- Reuse the received frame deque by @glbrntt in #64
- Allow application event to influence batch sending by @tfpauly in #65
- Simple optimizations for Deserializer performance by @tfpauly in #67
New Contributors
Full Changelog: 0.1.1...0.1.2
0.1.1
What's Changed
- SwiftQUIC: Fix variance in Spin Bit testing by @agnosticdev in #41
- Avoid allocating in FrameArray empty init by @glbrntt in #39
- Updates to Swift UDP by @agnosticdev in #42
- Move SHIM_CRYPTO_SPAN_APIS to a trait that disables the shim by @agnosticdev in #45
- Streams that never send data should still close cleanly by @josephnoir in #43
- Add NAT64 support in Utilities by @kpodosin in #34
- SwiftQUIC: Expose remote datagram frame size through connection metadata by @agnosticdev in #46
- Fixing a leak in IPv4 Reassembly by @agnosticdev in #48
- SwiftQUIC: Calculate mock header length by hand by @agnosticdev in #54
- Increase timeout for testQUICEcho40KiBMultistreamWithMetrics by @agnosticdev in #52
- Add Reassembly support for Swift IPv6 by @agnosticdev in #51
- Tear down old path after migration by @kkuk24 in #50
- SwiftQUIC: Reduce CPU overhead in getting inbound stream data delivered to the stream by @agnosticdev in #53
- Added listener-side support bits for QUIC connection migration by @mishtak00 in #9
New Contributors
- @mishtak00 made their first contribution in #9
Full Changelog: 0.1.0...0.1.1