Skip to content

Tags: Antonito/gfile

Tags

v0.2.0

Toggle v0.2.0's commit message
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

v0.1.0

Toggle v0.1.0's commit message
Fixed stats copy

v0.0.2

Toggle v0.0.2's commit message
Second release, stable

v0.0.1

Toggle v0.0.1's commit message
First release