Repository navigation
xray-rust 0.7.0
Support the project
If you find this project useful, consider supporting its development with a donation:
- TON (TON network): UQCIpU1qagwDltuqPUZh4EuI2zXvismk6esCCTWUVphj_o4y
- ETH (Ethereum network): 0x96A9a65E188c439a95267a3dA6920884C530f57f
- BTC (Bitcoin network): bc1qxxk42z2ty8wx702sk5cammwhchl95y39kf2wdc
- SOL (Solana network): D4xFX2GwPniSetHZWn2XRTBaSM6m1k1wMtacr6TMVHQD
Thank you for your support!
Stable 0.7.0 source release. Native Apple and Android packages are distributed separately through xray-rust-mobile.
-
Add Hysteria 2 and standard WireGuard client outbounds for SOCKS, HTTP,
TUN and routed DNS, with bounded TCP/UDP resources and independent native
server interoperability checks. WireGuard supports up to eight peers,
IPv4/IPv6, PSKs and authenticated peer isolation. -
Add protected carrier rebinding and bounded mobile network-change recovery.
Preserve active WireGuard sessions and keep TUN download/cancellation
responsive while an upload is blocked. -
Forward client TCP FIN through TUN after draining buffered upload, preserving
server replies after half-close and releasing naturally closed connections. -
Allow up to 512 WireGuard UDP sessions, allocated on demand, so short requests
using fresh source ports do not exhaust the old 16-session budget before
TUN idle cleanup. Retain bounded queues and verify budget reclamation. -
Reduce shared async setup allocations, bound packet-protocol TUN upload
queues, reuse WireGuard TCP receive storage and improve QUIC ACK handling.
The CLI defaults to two Tokio workers and preserves the explicit override.
Improve XHTTP/H3 receive batching without waiting for future data. -
Expose capability discovery, shared profile import and network-change
notifications through the additive C ABI 1.7 and matching Swift/Kotlin APIs. -
Retain the pinned Xray-core v26.7.28 compatibility target. Supported options
and bounds are documented; this release does not claim full upstream parity. -
Defer the higher XHTTP/H2 TUN RSS to a future version by owner decision.
Separate Hysteria2 latency/short WAN duplex gaps remain documented; complete
performance parity has not been established. See performance evidence. -
Preserve device/performance measurements of clean candidate
3533166and
validate stable promotion as version/documentation/evidence tooling only.
Runtime, dependencies, ABI and build inputs must remain unchanged. -
Record two explicit owner decisions: Android cellular handover was not tested;
the investigated rare Android WireGuard timeout case is accepted for 0.7.
Original failures remain visible; no root-cause fix or general reliability
allowance is claimed. See stable evidence. -
Require versioned exact-candidate Apple/Android evidence for 0.7 publication.
New checks include both protocols, both Android adapter paths, recovery and
legacy regression coverage; old v0.6 evidence remains independently validated. -
Add shared Rust import for Hysteria2 links and WireGuard configuration files,
exposed through C ABI 1.5 and equivalent Swift/Kotlin SDK APIs. Advertise
protocol/import capabilities and validate bounded input with redacted errors.
Preserve WireGuard peers, PSKs and split routes; require explicit real DNS. -
Prepare Hysteria 2 and all WireGuard peer endpoint DNS before mobile tunnel
setup on Apple and Android, preserving profile addresses and credentials.
Apple adds outer-carrier route exclusions; Android keeps socket protection. -
Reject FakeDNS-only mobile routes that require real destination DNS through
WireGuard or Freedom, including balancer candidates and fallbacks. Preserve
VLESS/Hysteria remote resolution and IP-only split routes.
Measured device/performance evidence: immutable archive.
Final source validation: GitHub Actions, result accepted-with-exceptions. No new physical-device campaign is claimed for the version-only promotion.
Release checks: full candidate CI and tag CI.
Final publication checks, public SwiftPM/Maven Central consumer results and complete logs are retained in the release confirmation snapshot. The original measured archive and accepted limitations remain unchanged.