Skip to content

VPeeN v4.7.0 β€” Nitro

Choose a tag to compare

@github-actions github-actions released this 04 Nov 15:27
· 10 commits to main since this release

VPeeN v4.7.0 β€” Nitro

The tail-latency release: hedged connects, a resolver cache, and a pool that adapts to reality.

⚑ What got faster

Hedged upstream connects β€” when the chosen server's TLS handshake has not landed within 350 ms, a parallel backup connect to the next-best server starts; the first success wins. A stalled "best" server used to cost every connection of a browsing burst its full 8 s budget β€” it now costs 0.35 s. The loser is reaped in the background (never cancelled mid-handshake: that is a socket-leak path) and gets no breaker penalty. Hedges only fire when a handshake permit is free, so bursts never double their load on the free proxy.

Resolver cache with singleflight β€” every fresh connect used to pay a blocking getaddrinfo (on Windows the resolver also tries LLMNR/mDNS first β€” routinely 50–200 ms). Resolved proxy IPs are now cached for 60 s and shared by every connect, refill wave and latency probe; a 30-socket burst produces ONE lookup instead of 30. A dead resolver serves the stale cached answer instead of failing.

Happy-Eyeballs across DNS records β€” a server given by hostname is expanded to its concrete A/AAAA records and ALL of them race staggered. A blackholed first record costs 150 ms instead of the full timeout. TLS SNI and certificate validation still use the original hostname, so security is unchanged.

🎯 What got smarter

Adaptive warm-pool TTL (8–25 s) β€” servers that reap idle sockets faster than we assumed used to turn warm hits into failed CONNECTs. Each stale entry now shrinks the TTL toward an 8 s floor; it recovers slowly between probe cycles.

Demand-adaptive pool size (12β†’24) β€” the refill target tracks the last 10 s of connection demand. Browsing is bursty; the burst after a burst now starts mostly pre-paid.

Throughput ranking that ages β€” a measured-KB/s number only ranks a server for 10 minutes, and the top candidates are re-measured every ~3 minutes, so a "best" server that collapses under load is demoted mid-session.

Wider handshake window β€” parallel-handshake cap 12 β†’ 16; with the resolver cache each handshake starts without the getaddrinfo hop, so the wider window is no longer a flood. The DNS relay's cache went 30 β†’ 60 s, aligned with the SOCKS-UDP relay.

πŸ–₯ Visible in the UI

The status line now shows "N rescued" β€” hedged connects that saved a stalled handshake β€” next to "N warm". The 30-second log line reports hedges and the adaptive TTL alongside hits/stale.

πŸ“Š The numbers

Scenario v4.6.0 v4.7.0
First connect of a burst getaddrinfo + TCP + TLS + CONNECT cached resolve + TCP + TLS + CONNECT
Best server stalls mid-session every connection waits up to 8 s 0.35 s hedge, backup carries it
Blackholed first DNS record up to 8 s 150 ms
Server reaps idle conns at 10 s warm hits become failed CONNECTs TTL shrinks to fit, hits stay real
Second burst within 10 s pool back to floor 12 pool sized to the burst (≀ 24)
"Best" server collapses under load ranked by a 10-min-old number re-measured every ~3 min

βœ… Quality

135 checks green: 42 speed-pass (10 new for Nitro), 59 regression, 11 integration, 23 web-UI. No settings, commands or file formats changed β€” the SOCKS5/HTTP surface is untouched; the only observable differences are speed, two status fields and one log line.

Full changelog: CHANGELOG-v4.7.0.md


Windows β€” download VPeeN-4.7.0-Windows.zip, extract, run VPeeN.exe.
macOS β€” download VPeeN-4.7.0-macOS.zip; on Sequoia/Tahoe 26 right-click β†’ Open (the binary is ad-hoc signed; see README's Gatekeeper section).
Linux β€” download VPeeN-4.7.0-Linux.tar.gz, extract, run ./VPeeN (or use the AppImage-style launcher inside).