Skip to content

xray-rust 0.7.0

Choose a tag to compare

@aimalygin aimalygin released this 27 Sep 23:00
· 393 commits to main since this release

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 3533166 and
    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.