Releases: singchia/geminio
Releases · singchia/geminio
Release list
v1.3.0-rc.2
Second release candidate for v1.3.0. Picks up an upstream scheduler race fix and real make test / make bench wiring.
Changes since v1.3.0-rc.1
Dependency fixes
go-timer/v2→ v2.2.2. Fixes a data race in the scheduler'scontrol()loop wherecountIncomingReqs/countProcessedReqswere read plainly while worker goroutines wrote them atomically. Surfaced as a persistentRace detectorCI flake; now gone at the root. See singchia/go-timer#26.
Build / CI
make testnow runs the full test tree (unit, integration, regression, e2e, security, harness, chaos) with explicit per-suite timeouts — previously it only ran regression.make benchtarget added (the README has been pointing at it for releases; now it works).- Chaos suite opts out of
go test -short. The heartbeat-waiting tests (HalfOpenSendOnly ~94s, WireBitFlip ~105s) were pushing the multi-platform CI step past the default 10-minute wall on macOS runners. The dedicatedChaos testsjob still runs the full suite.
No library code changes
No functional or behavioral change to geminio itself versus rc.1. All tests green under -race on main.
Full diff: v1.3.0-rc.1...v1.3.0-rc.2
v1.3.0-rc.1
Chaos-hardening release candidate. Two rounds of chaos testing (26 new tests across 7 batches) surfaced nine library bugs — all fixed in this RC. Benchmarks refreshed with Apple M4 numbers + ops/sec reporting; READMEs translated into five new languages.
Library fixes since v1.2.3
RPC path
stream.doRPC: panic-recover added; handler panics no longer crash the process (5e83c38).stream.rpcCancels: always register WithCancel; previously only registered with deadlines, leaking server-side handlers (5e83c38).stream.handleOutRequestCancelPacket: new case forRequestCancelPacket— cancel packets were silently dropped client-side (5e83c38).packet.Decode: TypeRequestCancelPacket dispatch added — cancel packets were rejected server-side (5e83c38).
Stream / dialogue teardown
stream.Write: now holds RLock across the select AND closesmonitorStopbeforesm.mtx.Lock()infini— fixes a send-on-closed-channel panic and a Write-vs-Close deadlock (d33d23d,5cb2898).stream.Write: tearDown escape arm on fullwriteInChso a stuck writer can unblock (5cb2898).multiplexer.dialogue.handleInDismissPacket: Case B now bypasseswriteInChso in-flight ACKs can reach the peer during dismiss (d33d23d).
Conn / end teardown
conn.fini: removed channel-field nil assignments that racedbaseConn.writePkt(5cb2898).application.End.fini: removedend.tmr = nilrace withnewStream(5cb2898).
Packet decode
packet.DecodeFromReader:MaxDecodablePacketLencap — prevents OOM when a peer declares a huge length (d33d23d).
Tests added (26 across 7 batches)
test/chaos/kill_peer_test.go— abrupt SIGKILL-style peer loss during various statestest/chaos/dismiss_chaos_test.go— dismiss race, reentrant close, close during opentest/chaos/rpc_chaos_test.go— handler panic, blocking handler, bi-RPC deadlock, cancel under reconnecttest/chaos/wire_chaos_test.go— bit flip, oversized declaration, truncation, heavy corruptiontest/chaos/flow_control_chaos_test.go— slow reader, server never reads, huge payloadstest/chaos/kill_schedule_test.go— randomized kill schedules, concurrent kill + active streams, kill-restart loopstest/chaos/steady_state_test.go— goroutine-stable / memory-stable soak tests
Benchmarks
- Every
Benchmark*now reports anops/secmetric via a shared helper. - Apple M4 (2024 laptop-class) headline numbers:
BenchmarkMessage: 8977 MB/s, 68495 ops/secBenchmarkEnd: 5132 MB/s, 39159 ops/secBenchmarkStream: 5069 MB/s, 38680 ops/secBenchmarkRPC: 3082 MB/s, 23515 ops/sec
Docs
- Overview / design images updated, hero image refreshed.
- README now in seven languages: English, 简体中文, 日本語, 한국어, Español, Français, Deutsch.
- 60-second demo swapped to server-push file transfer (pure
io.Copyover stream). - Design deep dive:
docs/MULTIPLEXING.md.
CI
- Chaos binary timeout bumped 300s → 600s (suite now ~5 min on warm runner).
TestHandshakeMultipleClientsinternal timeout 5s → 30s to survive race + coverage load.
Full changelog: v1.2.3...v1.3.0-rc.1
v1.2.3-rc.1
Full Changelog: v1.2.0...v1.2.3-rc.1
v1.2.2-rc.2
v1.2.2-rc.1
v1.2.1-rc.1
v1.2.0
What's Changed
- build(deps): bump golang.org/x/crypto from 0.17.0 to 0.45.0 by @dependabot[bot] in #104
- fix: oom while packet too big by @singchia in #105
- Fix/heartbeat by @singchia in #106
Full Changelog: v1.1.8...v1.2.0
v1.1.9-rc.1
What's Changed
- build(deps): bump golang.org/x/crypto from 0.17.0 to 0.45.0 by @dependabot[bot] in #104
- fix: oom while packet too big by @singchia in #105
Full Changelog: v1.1.8...v1.1.9-rc.1
v1.1.8: Merge pull request #103 from singchia/feat/application-bufsize
feat: add application layer size
v1.1.8-rc.1
feat: add application layer size