Releases: EAimTY/tuic
tuic-server-1.0.0
The TUIC project has been totally refactored and has been split into 4 crates. The new version is not compatible with the old version.
Crate tuic-server is a minimalistic TUIC server implementation as a reference.
Comparing with version 0.8.5, changes:
- Completely new codebase
- Built on TUIC protocol version 5
- A seperate IPv6 UDP socket can be enabled for relaying UDP packet on IPv6 stack
- Dynamically increase incoming stream capacity
- Treat dual-stack socket more transparently
- New config
send_window
andreceive_window
- New config
task_negotiation_timeout
- Dropped command-line config input
- New config file format
- Various bug fixes and optimizations
tuic-quinn-0.1.0
The TUIC project has been totally refactored and has been split into 4 crates. Crate tuic-quinn is a thin layer on top of quinn to provide functions for TUIC. Features:
- Initiate relay task without dealing with low-level protocol details
- Parse incoming stream / datagram as TUIC commands
- Abstraction for
CONNECT
andPACKET
command
tuic-quinn only implemented the newest TUIC protocol version 5. Full protocol specification can be found at https://github.com/EAimTY/tuic/blob/a299ef02d9f4ab5a0edbf58b9998f41bf768b332/SPEC.md
tuic-client-1.0.0
The TUIC project has been totally refactored and has been split into 4 crates. The new version is not compatible with the old version.
Crate tuic-client is a minimalistic TUIC client implementation as a reference.
Comparing with version 0.8.5, changes:
- Completely new codebase
- Built on TUIC protocol version 5
- Replace the relay connection guard worker with a new mechanism that tasks mutual exclusively getting relay connection handler. This hugely reduced the code complexity and improved the performance
- Dynamically increase incoming stream capacity
- Treat dual-stack socket more transparently
- New config
send_window
andreceive_window
- Dropped command-line config input
- New config file format
- Various bug fixes and optimizations
tuic-5.0.0
The TUIC project has been totally refactored and has been split into 4 crates. Crate tuic contains:
- Command header abstraction
- Non-IO protocol model abstraction, providing packet fragmentation, task counter, etc.
- Sync / async flavor command marshaling / unmarshaling
TUIC Protocol version 5 is the newest iteration of the TUIC protocol. It is not compatible with the previous versions. Changes include:
- 0-RTT TCP proxying
- UDP packet fragmentation
- Connection bound authentication using TLS Keying Material Exporter
- Better multi-user support
- Removing header command
Response
- Changing the size of header field
ASSOC_ID
from 32 bits to 16 bits - Adding new fields
PKT_ID
,FRAG_TOTAL
andFRAG_ID
in header commandPacket
(for fragmentation) - Header command
Heartbeat
is now being sent through datagrams - Rise the limit of error handling
Full protocol specification can be found at https://github.com/EAimTY/tuic/blob/a299ef02d9f4ab5a0edbf58b9998f41bf768b332/SPEC.md