High-performance Rust implementation of mihomo proxy core.
We were playing Honkai: Star Rail, ready for a big pull, prayers done, finger on the button...
Mental preparation: READY
Ritual performed: COMPLETE
Finger pressed: YES
GC Stop-The-World: 50ms
Result: "Network error, please retry"
Gacha luck: RUINED
That 50ms latency spike from Go's garbage collector? It cost us a 5-star character (probably).
So we rewrote the entire proxy protocol layer in Rust. Zero GC, zero jitter, zero excuses.
Now our pulls are smooth. Our trades execute on time. Our real-time apps don't stutter.
Was it overkill? Absolutely. Was it worth it? Also absolutely.
Beyond gacha gaming, mihomo-rust is built for scenarios where latency stability matters more than raw speed:
- Trading systems: Where milliseconds = money
- Real-time gaming: Competitive multiplayer, gacha pulls
- Live streaming: OBS, Discord, real-time communication
- High-frequency applications: 10K+ concurrent connections
- API gateways: Edge proxies, latency-sensitive routing
Traditional Go proxy implementations suffer from:
- GC-induced latency spikes: Garbage collector causes unpredictable 10-100ms pauses
- p99.9 jitter: Tail latency spikes under pressure
- Memory bloat: GC overhead grows with connection count
mihomo-rust eliminates these issues:
- Zero-cost abstractions: No runtime GC, deterministic memory
- Predictable latency: Stable p99.9 even under sustained load
- 10x lower memory: Per-connection overhead dramatically reduced
| Protocol | Status | TLS Warm Pool |
|---|---|---|
| Direct | ✅ | N/A |
| HTTP | ✅ | N/A |
| SOCKS5 | ✅ | N/A |
| Shadowsocks | ✅ | N/A |
| Trojan | ✅ | ✅ (99.8% hit) |
| VLESS | ✅ | ✅ |
| VMess | ✅ | ❌ |
Pre-established TLS connection pool with predictive warmup:
- Eliminates TLS handshake latency for Trojan/VLESS
- 99.8%+ cache hit rate under steady load
- Automatic pool sizing based on traffic patterns
Test Setup:
- 1000 requests per protocol, 50 concurrent connections
- 4 client regions: Singapore, Tokyo, US-East, EU-West
- Server: GCP us-central1 (xray)
- Date: 2026-01-15
| Protocol | mihomo-rust RPS | mihomo-go RPS | Rust Win Rate |
|---|---|---|---|
| HTTP | 49.1 | 40.9 | 100% |
| SOCKS5 | 59.3 | 39.7 | 100% |
| VMess | 53.1 | 34.5 | 100% |
| VLESS | 51.6 | 46.5 | 100% |
| Shadowsocks | 50.5 | 42.7 | 100% |
| Trojan | 47.3 | 42.7 | 75% |
Summary: Rust wins 23/24 RPS comparisons across all regions and protocols.
| Protocol | mihomo-rust | mihomo-go | Improvement |
|---|---|---|---|
| HTTP | 555ms | 829ms | -33% |
| SOCKS5 | 498ms | 839ms | -41% |
| VMess | 513ms | 644ms | -20% |
| VLESS | 560ms | 723ms | -23% |
| Shadowsocks | 574ms | 708ms | -19% |
| Trojan | 573ms | 793ms | -28% |
| Region | Avg p99 (ms) | Avg RPS | Notes |
|---|---|---|---|
| Singapore | 2297.7 | 48.82 | Best latency |
| US-East | 2500.8 | 50.80 | Best throughput |
| Tokyo | 2627.2 | 43.73 | Stable |
| EU-West | 2670.4 | 42.64 | Highest latency (farthest) |
- Rust p99 wins: 18/24 (75%) - lower tail latency
- Rust RPS wins: 23/24 (96%) - higher throughput
- Most stable protocol: HTTP (lowest cross-region variance)
- Best Rust advantage: SOCKS5 in Singapore (84 RPS vs 40 RPS, +110%)
| Metric | mihomo-rust | mihomo-go | Improvement |
|---|---|---|---|
| CPU Usage | ~1% | ~12% | 91% less |
| Memory | ~15MB | ~50MB | 70% less |
| GC Pauses | 0ms | 10-100ms | Eliminated |
# From source
cargo build --release
# Binary at target/release/mihomo-rustCompatible with mihomo YAML format:
log-level: warning
mode: rule
inbound:
mixed:
listen: "0.0.0.0:7890"
udp: true
dns:
enable: false
rules:
- MATCH,DIRECTMIT License - see LICENSE for details.