v0.2.0
Summary
- Fixed multiple stability issues
- Added standard qlog support and qvis compatibility
- New utility interfaces added
- Improved transport control
- Better performance and cross-platform compatibility
- More tests and examples (http0.9, http3, ssh and sshd over http3)
- Integrated automated testing (http3 performance, QUIC interop)
What's Changed
- test: add test for parallel stream transmission by @eareimu in #354
- build(deps): update rand requirement from 0.8 to 0.9 by @dependabot in #347
- build(deps): update nom requirement from 7 to 8 by @dependabot in #348
- refactor(qunreliable): make ext optional, rename structs, improve API by @eareimu in #355
- fix(qbase): compatible with nom8 by @huster-zhangpeng in #357
- fix(gm-quic): fix reuse interface option opposite behavior by @eareimu in #358
- fix(qinterface): fix guard crossing await causing deadlock by @eareimu in #359
- fix(qinterface): fix usc delivering datagrams in reverse order by @eareimu in #356
- fix(qrecovery): flow limit exceeded when loading multiple streams by @eareimu in #360
- fix: fixed burst deadlock duo to quota too small by @eareimu in #361
- fix(qbase): fixed send too many data blocked frames by @eareimu in #362
- fix: fixed parse ack delay as millisecond by @eareimu in #363
- fix: add enable_gso feature flag for usc by @metah3m in #364
- fix(qudp): sendmmsg return the number of packets sent instead of the batch by @metah3m in #365
- feat(qlog): qlog structures, and their (de)serialization by @eareimu in #367
- feat: update congestion algorithm and set socket buffer size by @metah3m in #368
- refactor(qbase): remove public in frames' definations by @huster-zhangpeng in #370
- fix: retire loss packet by @metah3m in #366
- feat(qlog): telemetry, collector and handy exporter by @eareimu in #369
- fix: fix param parse, keep alive and server shutdown by @eareimu in #371
- fix(qrecovery): response ResetStreamFrame with correct final size for StopSendingFrame by @huster-zhangpeng in #372
- fix(qrecovery): use the total sent bytes as the final size in RSF by @huster-zhangpeng in #373
- refactor(qbase): protect field in the QUIC Headers by @huster-zhangpeng in #374
- feat: emit (part of) qlog events by @eareimu in #377
- fix: fixed h3-shim provide no err when accept failed by @eareimu in #378
- feat(qlog): improve code, emit packet dropped, impl legacy qlog and compatibility layer from new qlog to old by @eareimu in #379
- refactor(qrecovery): make RcvdJournal::rotate more simple and semantic by @huster-zhangpeng in #380
- fix: fixed generated ack frame being larger than buffer by @eareimu in #381
- style: migration rustfmt: version-sort like algorithm by @eareimu in #383
- feat: emit granular stream states update by @eareimu in #384
- fix: fixed send and recv at same time cause deadlock by @eareimu in #385
- refactor: rename Endpoint to EndpointAddr by @huster-zhangpeng in #386
- fix: fixed the qlog span discontinuity and no rollback by @eareimu in #387
- refactor: rename qinterface::path::Socket to qinterface::path::Netway by @huster-zhangpeng in #388
- refactor: simplify the logic of the SenderState machine by @huster-zhangpeng in #390
- refactor: simplify the logic of the ReceiverState machine by @huster-zhangpeng in #391
- feat: emit packet lost event by @eareimu in #389
- fix(qudp): retry when sending wouldblock by @metah3m in #392
- refactor: clean up trace level tracing by @eareimu in #393
- refactor: move qinterface::path to qbase::net, rename Netway to Link by @huster-zhangpeng in #394
- feat: add ToEndpointAddr by @huster-zhangpeng in #395
- feat: it is not support to write after sending stream was shutdown by @huster-zhangpeng in #396
- feat(qbase): let send task not exclusively occupy the flow ctrl by @eareimu in #398
- fix: reduce unnecessary padding by @metah3m in #400
- fix: make sure all data has been sent before sending eos by @metah3m in #402
- feat(qbase): atomicU64 is no longer used to support 32-bit plat by @eareimu in #404
- feat: multi path rotate pn by @metah3m in #401
- feat: a more accurate and efficient sending wake-up mechanism by @eareimu in #403
- refactor: rename the utils related to SendWaker by @huster-zhangpeng in #405
- refactor: remove specific SendWaker/SendWakers by @huster-zhangpeng in #406
- feat(qcongestion): emit RecoveryMetricsUpdated event by @eareimu in #407
- refactor: rename addr to route, waker to tx in qbase::net module by @huster-zhangpeng in #408
- refactor(qbase): use VarInt to represent FrameType by @huster-zhangpeng in #409
- fix: fixed panic on UninitializedField by @eareimu in #410
- feat: filter to control the generation of qlog events and raw info data by @eareimu in #411
- perf: not iterating over dashmap by @eareimu in #412
- refactor: improve h3-server and h3-client examples by @eareimu in #414
- fix(qbase): fixed unknown transport parameter ID not accepted by @eareimu in #417
- fix: fixed connection driver never end by @eareimu in #418
- fix: fixed auth transport params at the wrong time by @eareimu in #415
- fix(qrecovery): fixed miscalculating the size of the ack frame by @eareimu in #422
- fix(qbase): rewrite SendWaker using safe code by @eareimu in #421
- fix: may loss packets do not trigger congestion control by @metah3m in #413
- fix: handshake pto timeout by @metah3m in #416
- build(deps): update h3 requirement from 0.0.6 to 0.0.7 by @dependabot in #420
- refactor: impove qrecovery by @huster-zhangpeng in #423
- fix(gm-quic): force disabling 0rtt to avoid parsing old params by @eareimu in #424
- feat: add an interface for obtaining origin_dcid by @eareimu in #425
- refactor/qudp by @metah3m in #427
- fix: fixed burst multiple segments by @metah3m in #428
- refactor: remove is_closed field of RecvController by @eareimu in #426
- revert: refactor: impove qrecovery by @huster-zhangpeng in #429
- refactor: improve interfaces by @eareimu in #430
- feat: improve congestion by @huster-zhangpeng in #431
- fix: call handshake_done at the corrent time by @huster-zhangpeng in #432
- fix(qconnection): correct the usage of ArcSendWaker in aa by @eareimu in #433
- feat: general transport parameters by @eareimu in #435
- perf: optimize packet space ack recv performance by @metah3m in #434
- feat: let SendJournal record sent_time, retran_time, expire_time by @huster-zhangpeng in #436
- chore: change license to Apache-2.0 by @eareimu in #438
- fix: call handshake.done at correct time for both server and client side by @huster-zhangpeng in #440
- feat(qbase): separate parsers for client and server parameters by @eareimu in #439
- refactor: rename some Packet related structure's name by @huster-zhangpeng in #441
- refactor: move CipherPacket and PlainPacket to qinterface by @huster-zhangpeng in #442
- fix(qconnection): dedup connection state transfer events by @eareimu in #443
- refactor: rename some names, makes codes more semantic by @huster-zhangpeng in #444
- refactor: hide PathStatus in qcongestion by @huster-zhangpeng in #445
- refactor: remove duplicate and unused dependencies by @eareimu in #446
- feat: send ping packet by @eareimu in #437
- feat: rcvd journal record ack state by @metah3m in #447
- feat: begain to organize logs by @huster-zhangpeng in #448
- feat: add error log by @huster-zhangpeng in #449
- fix: fixed discard sent records before loss or ack by @eareimu in #450
- fix: cc deadlock by @metah3m in #451
- perf: rcvd journal check triger ack by @metah3m in #452
- fix(qbase): fixed parse reset token as varint by @eareimu in #453
- fix: reset loss timer when discard epoch by @metah3m in #454
- feat: add fast retranmission for send journal by @huster-zhangpeng in #455
- fix: fix infinit loop parse Retry or VN packet by @huster-zhangpeng in #456
- fix: clarify the interface and functions of qinterface by @eareimu in #457
- fix: congestion use path mtu by @metah3m in #458
- feat: fully automatic benchmark by @eareimu in #460
- feat: support parsing extended frames by @metah3m in #459
- feat/sshd: implement ssh client and sshd server over h3 protocol by @huster-zhangpeng in #462
- feat: use basic auth for simple ssh example by @huster-zhangpeng in #463
- feat: adjust some error message format by @huster-zhangpeng in #464
- refactor: move all certs and keys to test/keychain by @huster-zhangpeng in #465
- feat: improve ssh client, support bsd by @huster-zhangpeng in #466
- refactor: put some structures in more appropriate locations by @huster-zhangpeng in #467
- feat: hide password for the ssh command by @huster-zhangpeng in #468
- build(deps): update base64 requirement from 0.21 to 0.22 by @dependabot in #469
- build(deps): update crossterm requirement from 0.28 to 0.29 by @dependabot in #470
- fix: fix ack-eliciting packet, rename qudp::PacketHeader to DatagramHeader by @huster-zhangpeng in #472
- feat: rewrite tests and examples, support interop by @eareimu in #473
- feat(qconnection): add api for waiting for handshake and termination by @eareimu in #474
- fix: fixed not sending packets with ccf correctly by @eareimu in #475
- ci(ci): fixed macos benchmark by @eareimu in #476
- feat: release v0.2 by @eareimu in #477
Full Changelog: v0.1.0...v0.2.0