Tags: Antonito/gfile
Tags
v0.2.0 — Modernization release
Large overhaul bringing gfile back to a modern stack after a long
maintenance gap, with a real wire protocol and substantially faster
transfers.
Stack
- Go 1.12 → 1.26.2
- pion/webrtc v2 → v4
- logrus → zerolog
- urfave/cli → cobra
Protocol (see PROTOCOL.md)
- New framed control/data channels with versioning and proper dispatch
- Streaming zstd compression (off by default for already-compressed data)
- Multi-PC mode: --connections N (1..16) stripes a transfer across N
parallel peer connections to work around the per-datachannel
throughput ceiling on high-bandwidth / high-latency links
Performance (same-host, Darwin 24.6, arm64, 500 MB incompressible payload)
- single-PC, --loopback: ~103 MB/s (~93x vs v0.1.0)
- multi-PC, --connections 2, --loop: ~180 MB/s (~163x vs v0.1.0)
- multi-PC, --connections 4, --loop: ~241 MB/s (~219x vs v0.1.0)
Restructure
- Code reorganized into internal/{session,stream,stats,output,
protocol,utils} and pkg/transfer/{sender,receiver}
- Removed legacy pkg/session, pkg/stats, pkg/utils trees and the
_client/web wasm experiment
Tooling
- Travis + Makefile → GitHub Actions (ci.yml, release.yml) + Justfile
- Added golangci-lint config
- Expanded Go tests plus Python e2e + bench harnesses under scripts/
Known issue
- On Darwin 24.6, --connections >= 4 over --loopback intermittently
fails peer-open (ICE/DC open race); environmental, not a protocol
regression. Cross-host real-network runs are unaffected.
PR #12