Releases: loopholelabs/frisbee-go
Releases · loopholelabs/frisbee-go
Version 0.4.4
Changes
- Generated RPC Code for decoding objects no longer relies on the
*packet.Packet
structure, and instead works
with[]byte
slices directly - Unit test CI actions now run in parallel
- Benchmark CI actions now run in parallel
- Buf Build Dockerfile updated to use
v0.4.4
Version 0.4.3
Fixes
- Version v0.4.2 did not embed the templates for RPC generation into frisbee, leading to runtime panics when
generating RPC frameworks from outside the frisbee repository directory. This has now been fixed by embedding the
templates into the compiled plugin binary file.
Version 0.4.2
Hotfixes for bugs introduced in v0.4.0
Changes
- Using new
internal/dialer
package to handle dialing for Async and Sync connections with automatic retires - Handling proper backoffs for accept loop in
Server
so server does not just crash when many connections are opened at
once
Fixes
- Fixing
SetBaseContext
,SetOnClosed
, andSetPreWrite
functions to not error out if a valid function is used - Async test cases are less flaky
Utility functions, better logging
Changes
- Changing
Connect
signatures andStart
signatures for servers, and clients - Changing the functionality of Server.
Start
so that it blocks and returns an error - Adding
ServeConn
andFromConn
functions for severs and clients - Updating
protoc-gen-frisbee
to comply with the new changes - Updating the buf.build manifest for
protoc-gen-frisbee
- Making
baseContext
,onClosed
, andpreWrite
hooks for the Server private, and creatingSetter
functions that
make it impossible to set those functions to nil
Fixes
- Fixing panics from
ConnectSync
andConnectAsync
functions when the connection cannot be established - it now
returns an error properly instead
Better Server Scaling
Changes
- Swapping the lock-free Queue out with a simpler locking queue that has significantly less lock contention in scenarios
when multiple buffers are required. - Refactoring server and client to spawn fewer goroutines per-connection.
Hotfix for `protoc-gen-frisbee`
Fixes
- Fixes a
protoc-gen-frisbee
bug where the client message type didn't have the correct offset
Adding RPC Framework Generator
Changes
- Moving
github.com/loopholelabs/packet
into Frisbee undergithub.com/loopholelabs/frisbee/pkg/packet
- Added
pkg/metadata
andpkg/content
packages to work with thepkg/packet
package - Added initial version of
protoc-gen-frisbee
CLI for generating an RPC Framework with Frisbee
Updating Contexts
Changes
- Update packet to
v0.2.5
- Added
UpdateContext
function for both the server and client
Bug Fixes and Refactors
Fixes
- Closing a connection doesn't mean the other side loses data it hasn't reacted to yet
Changes
- A
Drain
function was added to theinternal/queue
package to allow thekillGoroutines
function inasync.go
to
drain the queue once it had closed it and once it had killed all existing goroutines - The
heartbeat
function inclient.go
was modified to exit early if it detected that the underlying connection had
closed - The
async
connection type was modified to holdstale
data once a connection is closed. ThekillGoroutines
function will drain theincoming
queue after killing all goroutines, and store those drained packets in
theasync.stale
variable - future and existing ReadPacket calls will first check whether there is data available in
thestale
variable before they error out - Refactored the
handlePacket
functions for both servers and clients to be clearer and avoid allocations - The
close
function call inAsync
connections was modified to set a final write deadline for its final writer flush