Skip to content

Releases: apple/swift-network-evolution

0.6.0

0.6.0 Pre-release
Pre-release

Choose a tag to compare

@rnro rnro released this 26 Oct 17:02
d823191

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

0.5.0 Pre-release
Pre-release

Choose a tag to compare

@tfpauly tfpauly released this 15 Oct 23:47
cd6339a

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 Sendable by @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.countLeadingZeroBytes faster 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 checksum16 in 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 testQUICEcho1MiBAckBundling build 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

Full Changelog: 0.4.0...0.5.0

0.4.0

0.4.0 Pre-release
Pre-release

Choose a tag to compare

@tfpauly tfpauly released this 29 Sep 02:14
ea74abb

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

Full Changelog: 0.3.0...0.4.0

0.3.0

0.3.0 Pre-release
Pre-release

Choose a tag to compare

@rnro rnro released this 17 Sep 17:16
bf5c6c5

What's Changed

SemVer Major

  • SwiftQUIC: Provide path events when QUICPath changes or is validated by @agnosticdev in #107
  • Schedule timers with a NetworkDuration instead 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
  • Cubic pacing 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

0.2.0 Pre-release
Pre-release

Choose a tag to compare

@rnro rnro released this 25 Aug 17:51
3550e84

What's Changed

SemVer Major

  • Allow starting standalone timers on NetworkContext by @tfpauly in #97

SemVer Minor

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

Full Changelog: 0.1.2...0.2.0

0.1.2

0.1.2 Pre-release
Pre-release

Choose a tag to compare

@tfpauly tfpauly released this 06 Aug 18:50
cb3e557

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

0.1.1 Pre-release
Pre-release

Choose a tag to compare

@tfpauly tfpauly released this 27 Jul 15:39
491430a

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

Full Changelog: 0.1.0...0.1.1

0.1.0

0.1.0 Pre-release
Pre-release

Choose a tag to compare

@rnro rnro released this 02 Jul 12:35
6fb079f

Initial release of Swift Network.

Take a look at the README to see the current scope of the project, how to get started, and how to contribute!