What's Changed
- refactor: remove unsafe
advance_mut
code by @huster-zhangpeng in #2 - test(qbase): token unit test by @Borber in #1
- refactor: protect VarInt from being modified casually by @huster-zhangpeng in #3
- docs(license): Create LICENSE by @huster-zhangpeng in #4
- docs: update issue templates by @huster-zhangpeng in #5
- feat(qudp): imple sendmmsg by @metah3m in #7
- refactor(qcongestion): Unify observer variable name by @Borber in #6
- docs: add some comments and modify some codes by @Borber in #8
- style: Apply rustfmt for code formatting by @metah3m in #9
- docs: improve README by @huster-zhangpeng in #13
- refactor(qbase): add missing is_empty by @Borber in #10
- ci: add code coverage test by @huster-zhangpeng in #14
- docs: add License/build/codecov badge in README by @huster-zhangpeng in #15
- test(qbase): add number unit test and some doc by @Borber in #12
- refactor(qudp): recvmsg returns enum instead of tuple by @metah3m in #17
- refactor(qbase, qrecovery, qunreliable): move DatagramFlow into crate by @eareimu in #19
- refactor(qrecovery, qconnection): remove Transmit traits by @eareimu in #20
- fix(qudp): remove ?Sized bound by @eareimu in #22
- refactor(qrecovery): divide reliable into small modules by @eareimu in #21
- test(qconnection): add anti_amplifier unit test by @Borber in #23
- refactor(qbase): move IndexQueue to qbase::util by @huster-zhangpeng in #24
- test(qconnection): add validate unit test by @Borber in #25
- test(qconnection): add closing unit test by @Borber in #27
- refactor(qconnection): refactor qconnection/auto.rs by @eareimu in #26
- test(qcongestion): bbr test by @metah3m in #28
- docs: add english readme by @huyumars in #30
- docs: update README by @huster-zhangpeng in #32
- feat(qconnection): validate timeout fail by @Borber in #31
- feat(qbase): connection id allocator by @eareimu in #29
- ci: remove formatlint in build-* by @eareimu in #34
- refactor(qconnection): validate use timeout instead sleep by @Borber in #35
- refactor(qunreliable): remove DatagramQueue by @eareimu in #38
- refactor(qcongestion): congestion control using ArcRtt by @metah3m in #40
- fix(qrecovery): fix overlap_seg and try_append by @eareimu in #42
- Feat/connection by @eareimu in #33
- feat: improve cid registry by @huster-zhangpeng in #36
- fix(qunreliable): bug fix and test by @eareimu in #39
- feat(congestion): imple new reno by @metah3m in #37
- Feat/connection by @eareimu in #43
- fix(qunreliable): replace tokio Mutex with std Mutex by @eareimu in #45
- feat(qconnection): connection observer and path observer by @metah3m in #46
- feat(qrecovery): transport by @eareimu in #44
- feat(qconnection): path challenge and path with anti_ampkifier by @Borber in #47
- feat(qconnection): anti_amplifier poll apply return option by @Borber in #49
- style(qconnection): code review by @Borber in #50
- refactor/fix by @eareimu in #48
- refactor(qconnection): Remove epoch and pn in sending records by @Borber in #51
- test(qconnection): adjust validate unit tests by @Borber in #54
- test: add test for cid and its registry by @huster-zhangpeng in #53
- feat(qconnection): implement endpoint by @eareimu in #52
- refactor(qconnection): remove initializer by @Borber in #55
- refactor(qconnection): endpoint receive_protected_packet by @Borber in #57
- feat/path: path send packet by @metah3m in #58
- feat(qconnection): usc receives packets and distributes to endpoint by @metah3m in #61
- feat: get path pto time by @Borber in #60
- feat: cleaning path by @eareimu in #59
- feat: notify congestion control when receiving packets by @metah3m in #62
- fix(qconnection): fix generic_dispatch epoch by @eareimu in #64
- feat(qconnection): path challenge and anti_amplifier by @Borber in #65
- Feat/state by @eareimu in #63
- Doc/qunreliable by @eareimu in #56
- refactor(congestion): remove ovserver in congestion by @metah3m in #67
- feat: make CidRegistry more easy to use by @huster-zhangpeng in #70
- refactor: make flow controller more easy to use by @huster-zhangpeng in #72
- feat: add handshake module in qbase by @ai-codepen in #73
- refactor: improve handshake module in qbase by @huster-zhangpeng in #74
- Feat/pipe macro by @eareimu in #75
- refactor: improve handshake module in qbase by @huster-zhangpeng in #76
- refactor: add Raw/Closing/Draining connection in qconnection by @huster-zhangpeng in #79
- refactor: remove ConnFrame/PathFrame/PureFrame, move them to Frame by @huster-zhangpeng in #80
- refactor: let ArcReliableFrameDeque be a single independent module by @huster-zhangpeng in #81
- refactor: path state by @metah3m in #82
- feat: impl DrainingConnection by @huster-zhangpeng in #83
- refactor: improve ConnError by @huster-zhangpeng in #84
- feat: abstract some interface for ArcConnection by @huster-zhangpeng in #85
- refactor(qrecovery): refactor the interface of CryptoStream for app layer, more user-friendly by @huster-zhangpeng in #88
- feat(qconnection): improve path state by @metah3m in #86
- Feat/raw_connection by @eareimu in #87
- refactor(qrecovery): simplify CryptoStream by @huster-zhangpeng in #89
- feat(qconnection): add Handshake signal in RawConnection by @huster-zhangpeng in #90
- feat(qconnection): closing connection by @Borber in #92
- refactor: optimize Frame parse by @eareimu in #91
- feat(qconnection): implement new version tls session by @huster-zhangpeng in #93
- refactor: rename some name, include variable and struct name by @huster-zhangpeng in #94
- refactor(qbase): rename TransportParameters to Parameters by @huster-zhangpeng in #95
- feat(qconnection): connetcion close by @Borber in #96
- feat(qconnection): use rcvd ccf instead of conn error by @Borber in #98
- feat(qconnection): add initial/handshake/data scope by @huster-zhangpeng in #99
- refactor(qconnection): use initial/handshake/data scope in RawConnection by @huster-zhangpeng in #100
- feat: handshake and recv transport parameters by @eareimu in #97
- refactor(qconnection): litter rename, reorganization by @huster-zhangpeng in #102
- feat(qconection): read frame into packet by @metah3m in #101
- feat(qconnection): add PathFrameBuffer by @huster-zhangpeng in #103
- feat(qudp): udp sync send by @metah3m in #105
- refactor: rename TransportLimit to Burst by @huster-zhangpeng in #106
- Feat/parameters by @eareimu in #104
- feat(qconnection): add sending_closure for Initial and Hadshake scope by @huster-zhangpeng in #107
- feat: write every NewCidFrame issued by ArcLocalCids to ArcReliableFramesDeque by @huster-zhangpeng in #108
- feat(qcongestion): remove anti amplification in congestion by @metah3m in #110
- refactor(qrecovery): move ReliableFrame to qbase,for using Into in ReliableFrameDeque by @huster-zhangpeng in #109
- feat(qconnection): improve packing initial/handshake/0rtt/1rtt packet by @huster-zhangpeng in #111
- refactor: qbase by @huster-zhangpeng in #112
- feat(qconnection): handshake by @eareimu in #113
- refactor(qconnection): remove the path state by @metah3m in #114
- refactor: rollback CryptoStreamWriter AsyncWrite by @eareimu in #117
- refactor(qbase): remove PacketWrapper, use (&mut [u8], usize) to represent a packet by @huster-zhangpeng in #116
- Feat/conn state and router by @Borber in #115
- feat: assemble path logic with connection by @huster-zhangpeng in #118
- feat(qconnection): improved path validation by @metah3m in #119
- refactor: renmae Burst to Constraints by @huster-zhangpeng in #120
- fix: try read streams and datagrams by @eareimu in #122
- feat: improve reading data to send by @huster-zhangpeng in #123
- fix: datagram padding first by @eareimu in #124
- feat: move Contraints from qbase to qconnection by @huster-zhangpeng in #125
- feat: connection receive flow control by @metah3m in #126
- feat: basically complete the sending logic by @huster-zhangpeng in #127
- fix(qconnection): sending packet must contain at least 20 bytes payload by @huster-zhangpeng in #128
- feat(qconnection): sending connection frames by @metah3m in #129
- feat(qconnection): switch conn state when error by @Borber in #130
- refactor: improve packet reader by @eareimu in #131
- feat: generic cid registry by @huster-zhangpeng in #133
- fix: fix the right time of setting handshake done by @huster-zhangpeng in #134
- feat(qconnection): set sending task for each path on its construction by @huster-zhangpeng in #136
- refactor(qbase): primiary implement by @eareimu in #132
- feat: remove some TODO by @huster-zhangpeng in #137
- feat: write ack frame and reliable frames into buffer by @huster-zhangpeng in #138
- feat(qconnection): conn switch state by @Borber in #135
- feat(qconnection): conn switch state by @Borber in #140
- fix: fix clippy too_complex by @eareimu in #121
- fix(qconnection): fix poll_read_inner by @eareimu in #139
- feat: improve the closing state of connection by @huster-zhangpeng in #142
- feat(qconnection): improve router deref by @Borber in #143
- feat(qconnection): the right way to enter closing state, maybe fall back to draining state by @huster-zhangpeng in #144
- feat: add ReceiveFrame trait, where T is one type of Frame by @huster-zhangpeng in #145
- feat: remove entry in router when receiving a RetireCidFrame by @huster-zhangpeng in #147
- feat(qconnection): address validate by @metah3m in #146
- feat: add interface for QuicClient and QuicServer by @huster-zhangpeng in #148
- refactor(qconnection): remove the address validator by @metah3m in #149
- feat: introduce ArcPath and random DCID generation by @Borber in #150
- feat(quic): add quic module by @huster-zhangpeng in #151
- feat(quic): read cert and key from file by @huster-zhangpeng in #153
- feat(quic): all interfaces of Client/ServerBuidler use owned self by @huster-zhangpeng in #154
- feat: generate initial keys for client connections by @huster-zhangpeng in #155
- feat(qudp): path handle usc send error by @metah3m in #156
- feat(qconnection): introduce PathState and track data receive time by @Borber in #157
- feat(quic): usc receive packet and dispatch by @metah3m in #158
- feat: update path recv time by @Borber in #159
- fix(qconnection): fix sending task (error handling) by @eareimu in #161
- fix: fix encrypt and decrypt problem by @huster-zhangpeng in #162
- feat(quic): server accept new connection by @metah3m in #160
- feat: add connection example by @Borber in #163
- docs: update README by @huster-zhangpeng in #164
- docs: update README by @huster-zhangpeng in #165
- refactor: remove unnecessary VarInt encoding by @Borber in #166
- fix(qconnection): fix sending task by @eareimu in #167
- fix(qudp): fix udp recv Infinite loop by @metah3m in #168
- feat: improve QuicClient::connect interface by @huster-zhangpeng in #169
- fix: turn DatagramReader from mpmc into mpsc by @eareimu in #171
- feat: send_via_path_way method on ViaPathWayExt trait by @eareimu in #174
- feat(quic): add quic client example by @huster-zhangpeng in #175
- feat(quic): quic server demo by @metah3m in #173
- refactor(quic): improve quic server demo by @metah3m in #176
- fix: remove unnecessary truncate call by @Borber in #177
- fix: let tls session read from crypto stream and write correctly by @huster-zhangpeng in #178
- fix(quic): update path receive time for existing connections by @Borber in #179
- feat(qcongestion): congestion do tick by @metah3m in #180
- fix: fix remove protection of short header, use the right addr for the initial path by @huster-zhangpeng in #181
- ci: add clippy check by @huster-zhangpeng in #182
- fix: fix single_match and too_long_first_doc_paragraph by @eareimu in #183
- ci: use nightly version to run
cargo +nightly clippy
by @huster-zhangpeng in #184 - fix(congestion): fix record ack when recv pakcet by @metah3m in #185
- fix: prevent RecvBuf panic when recv data by @Borber in #187
- fix(qconnection): handshake encrypt use local key by @metah3m in #189
- refactor: replace CidCell::set_cid with RemoteCids::revise_initial_cid by @huster-zhangpeng in #190
- feat(qbase): client and server parameters by @eareimu in #186
- feat(qbase): new util: AsyncCell by @eareimu in #188
- fix(qconnection): encrypting 0rtt packet with local key by @huster-zhangpeng in #191
- fix(qconnection): fix sending 1rtt packet by @huster-zhangpeng in #192
- fix(qconnection): make tls send the finish msg in handshake packet by @huster-zhangpeng in #194
- refactor(qconnection): update path recv time on every packet by @Borber in #195
- feat: add data streams's api for ArcConnection by @huster-zhangpeng in #196
- fix(qconnection): if binding ip is specified, matching any ip by @metah3m in #197
- fix(qrecovery): correct the shutdown behavior of data stream writer by @huster-zhangpeng in #199
- feat(quic): quic client example can request file from quinn server by @huster-zhangpeng in #200
- docs: remove extra quote of the listening address by @Borber in #201
- feat: rewtite ConnError, CidCell and RecvBuffer by @eareimu in #193
- fix(qrecovery): let stream_reader read the eof event finally by @huster-zhangpeng in #202
- feat: transport parameters by @eareimu in #198
- refactor: decouple DataStreams/StreamIds and Parameters as much as possible by @huster-zhangpeng in #204
- refactor: replace Extend with SendFrame by @huster-zhangpeng in #205
- fix: fix remote_params sync, simplifies AsyncCell by @eareimu in #206
- fix(qconnection): handling congestion control may lost by @metah3m in #203
- feat: finish DataStreams by @eareimu in #207
- docs(qbase): add docs for encrypting and decrypting by @huster-zhangpeng in #208
- fix: cargo doc ci by @eareimu in #209
- ci: comment cargo doc ci by @eareimu in #214
- feat(qcongestion): improve handle ack by @metah3m in #212
- docs(qunreliable): docs and bug fix by @eareimu in #210
- refactor(qbase): remove belongs_to method from BeFrame by @Borber in #211
- docs: pass cargo doc by @eareimu in #216
- feat: mpsc Future and mpmc AsyncCell by @eareimu in #215
- build: optimize for size by @huster-zhangpeng in #218
- docs(qcongestion): add docs for qcongestion by @metah3m in #217
- docs: add docs for packet header by @huster-zhangpeng in #220
- fix(qconnection): fix RemoteParameters block on reading by @eareimu in #219
- docs: add docs for packet type/number/signal/keys modules by @huster-zhangpeng in #222
- docs: improve docs for packet by @huster-zhangpeng in #223
- docs: add docs for ConnectionId and LocalCids by @huster-zhangpeng in #224
- refactor: path state use util::Future instead and fix ack frame encode size calc by @Borber in #221
- fix: bugs by @eareimu in #225
- docs: add docs for RemoteCids by @huster-zhangpeng in #226
- docs(qbase): add docs for VarInt by @huster-zhangpeng in #228
- docs(qbase): improve docs for frames by @huster-zhangpeng in #229
- docs: add docs for QUIC error module by @huster-zhangpeng in #230
- docs(qbase): add docs for flow controller by @huster-zhangpeng in #231
- feat(qudp): usc windows support by @metah3m in #227
- docs(qbase): add docs for stream id by @huster-zhangpeng in #233
- docs(qbase): add docs for handshake by @huster-zhangpeng in #234
- docs(qbase): add docs for IndexDeque by @huster-zhangpeng in #235
- perf(qbase): use reference in GetRemoteKeys by @eareimu in #236
- perf(qconnection): refactor remote params to reduce the usage of Arc by @eareimu in #237
- docs(qbase): add docs for async deque by @huster-zhangpeng in #238
- docs(qrecovery): document qrecovery by @eareimu in #232
- ci: use the clippy from stable toolchain by @eareimu in #241
- feat(h3-shim): implement h3::quic::* by @eareimu in #239
- docs(qbase): document util::Future, fix clippy warns by @eareimu in #240
- fix(qconnection): test gm-quic as Server, fix bugs and implement necessary features by @eareimu in #242
- feat(qconnection): impl NO_VIABLE_PATH error by @eareimu in #243
- fix tasks wont finish when connection closed by @eareimu in #244
- ci: use nightly clippy for stricter lint by @eareimu in #245
- refactor: hide global static variables, improve codes by @eareimu in #246
- docs(qbase): add doc for qbase library by @huster-zhangpeng in #249
- refactor(qbase): rename qbase::config to qbase::param module by @huster-zhangpeng in #250
- feat: let DataStream::stream_ids be able to send StreamsBlockedFrame by @huster-zhangpeng in #253
- feat(qudp,quic): improve ArcUSC and QuicServer by @eareimu in #248
- fix(qconnection): fix enter unreachable code by @eareimu in #252
- feat: send ccf in closing connection by @eareimu in #254
- fix(qconnection): fix dead lock when connection closed by @eareimu in #255
- refactor: remove uncessary Mutex and wrong asserting by @eareimu in #256
- feat: add streams concurrency strategy to limit the streams created by peer by @huster-zhangpeng in #258
- refactor: split streamids into handy, local_sid, remote_sid modules by @huster-zhangpeng in #259
- fix: fix wrong padding after 1rtt,let 1rtt do the fill by @eareimu in #257
- docs(qconnection): add doc for {router, tls, usc, parameters}.rs by @eareimu in #260
- feat: delay sending RetireCidFrame by @huster-zhangpeng in #261
- feat: recv STREAMS_BLOCKED frames and handle them by @huster-zhangpeng in #262
- feat: add io state for each data stream by @huster-zhangpeng in #263
- feat: http3 server/client examples by @eareimu in #264
- refactor: move StreamReset to ResetStreamError in qbase by @huster-zhangpeng in #265
- docs(qconnection):add document for ArcPaths, Paths, ArcPath and Path by @eareimu in #266
- refactor: open or accept streams with their StreamId by @huster-zhangpeng in #267
- refactor: split codec of params into independent file by @huster-zhangpeng in #268
- feat(quic): add bind_with methods on {Server, Client}Builder by @eareimu in #269
- refactor: remove the SendFrame trait implemention for ArcAsyncDeque by @huster-zhangpeng in #270
- refactor: remove spawning the cancel task for stream by @huster-zhangpeng in #271
- refactor: unify and shorten the names of those sending stream-related frames structure by @huster-zhangpeng in #272
- refactor: delete the Raw prefix in the name by @huster-zhangpeng in #273
- refactor: remove async stop and update rcv_wnd tash for receiving streams by @huster-zhangpeng in #274
- refactor(qrecovery): mininize the trait bounds for the Sender's states by @huster-zhangpeng in #275
- refactor(qrecovery): rename some var name to clearify their semantics by @huster-zhangpeng in #276
- feat: export streams concurrency controller by @huster-zhangpeng in #277
- refactor: rename connection module to conn by @huster-zhangpeng in #278
- feat(qrecovery): once a stream rcvd all the data, it should check if terminated by @huster-zhangpeng in #279
- refactor/qconnection: rename Reader/Writer and abstract abort_with_error by @huster-zhangpeng in #281
- feat: adapt reqwast, re-export q* modules in quic, shim by @eareimu in #282
- feat(h3-shim): use reqwest in h3-client example by @eareimu in #283
- docs(qconnection): add doc for path/util.rs by @eareimu in #284
- feat(quic): add re/unbind methods, force strict mode on server by @eareimu in #285
- build: optimize dependencies, remove unused futures, deps by @eareimu in #287
- build(deps): update rustls-native-certs requirement from 0.7 to 0.8 by @dependabot in #280
- fix(h3-shim): fix examples, add feature flag ring in dev-deps by @eareimu in #291
- fix(h3-shim): fix example h3-client by @huster-zhangpeng in #292
- feat: add PacketWriter by @huster-zhangpeng in #290
- feat(quic): support certificate key in pem format by @metah3m in #289
- refactor(qconnection): hide many fields of Path and Connection by @eareimu in #293
- feat(qconnection): impl reuse_usc_sockets, bind addrs like UdpSocket by @eareimu in #288
- feat: add specs for FrameType by @huster-zhangpeng in #294
- refactor(qconnection): remove var is_just_ack while reading each space by @huster-zhangpeng in #295
- docs(quic): add docs for QuicServer by @eareimu in #296
- refactor: rename Space in qrecovery to Journal by @huster-zhangpeng in #297
- refactor: move Epoch to qbase module by @huster-zhangpeng in #298
- docs(quic): add docs for QuicClient by @eareimu in #299
- fix: fix docoding certs, quic client, improve err msg by @eareimu in #301
- docs: update readmes by @eareimu in #300
- fix(qudp): windows unspecified ip send error by @metah3m in #304
- test: add http3 test by @eareimu in #302
- refactor(qunreliable): improve qunreliable by @eareimu in #303
- refactor(qbase): use RAII to return back the borrowed cid by @eareimu in #306
- fix: probe timeout retransmit packet by @metah3m in #308
- build(deps): update thiserror requirement from 1 to 2 by @dependabot in #307
- feat: add Transaction to marshal packets by @huster-zhangpeng in #312
- test: extend the time of h3 test, allow conn to drain by @eareimu in #313
- test(qbase): add tests for AsyncDeque by @eareimu in #311
- feat: apply transaction to assemble packets in different spaces by @huster-zhangpeng in #314
- feat: prepare transaction with scid, token and constraint buffer by @huster-zhangpeng in #315
- refactor: make FlowController send DataBlockedFrame and MaxDataFrame inside by @huster-zhangpeng in #316
- feat: improve the transaction for data space by @huster-zhangpeng in #319
- feat: release v0.0.1 and publish to crates.io by @eareimu in #320
- docs: add crates.io badges by @huster-zhangpeng in #321
New Contributors
- @Borber made their first contribution in #1
- @metah3m made their first contribution in #7
- @eareimu made their first contribution in #19
- @huyumars made their first contribution in #30
- @ai-codepen made their first contribution in #73
- @dependabot made their first contribution in #280
Full Changelog: https://github.com/genmeta/gm-quic/commits/v0.0.1