Skip to content

Releases: loopholelabs/frisbee-go

Version 0.4.4

21 Apr 17:53
9437d3c
Compare
Choose a tag to compare

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

20 Apr 23:39
e869d8d
Compare
Choose a tag to compare

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

20 Apr 22:35
83a7cc1
Compare
Choose a tag to compare

Changes

  • Refactored the RPC Generator to use the text/template
    package (#90)
  • Updated pkg/packet.Decoder to require only a []byte to create a new decoder, instead of
    a *packet.Packet (#92)
  • Updated Trunk Linter to v0.10.0-beta (#92)

Hotfixes for bugs introduced in v0.4.0

24 Mar 15:48
54e9bfa
Compare
Choose a tag to compare
Pre-release

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, and SetPreWrite functions to not error out if a valid function is used
  • Async test cases are less flaky

Utility functions, better logging

24 Mar 13:17
b035542
Compare
Choose a tag to compare
Pre-release

Changes

  • Changing Connect signatures and Start signatures for servers, and clients
  • Changing the functionality of Server.Start so that it blocks and returns an error
  • Adding ServeConn and FromConn 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, and preWrite hooks for the Server private, and creating Setter functions that
    make it impossible to set those functions to nil

Fixes

  • Fixing panics from ConnectSync and ConnectAsync functions when the connection cannot be established - it now
    returns an error properly instead

Better Server Scaling

19 Mar 01:46
9969d0d
Compare
Choose a tag to compare
Better Server Scaling Pre-release
Pre-release

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`

13 Mar 06:49
7c10aed
Compare
Choose a tag to compare
Pre-release

Fixes

  • Fixes a protoc-gen-frisbee bug where the client message type didn't have the correct offset

Adding RPC Framework Generator

12 Mar 06:20
7ea7472
Compare
Choose a tag to compare
Pre-release

Changes

  • Moving github.com/loopholelabs/packet into Frisbee under github.com/loopholelabs/frisbee/pkg/packet
  • Added pkg/metadata and pkg/content packages to work with the pkg/packet package
  • Added initial version of protoc-gen-frisbee CLI for generating an RPC Framework with Frisbee

Updating Contexts

11 Mar 22:58
c9874ba
Compare
Choose a tag to compare
Updating Contexts Pre-release
Pre-release

Changes

  • Update packet to v0.2.5
  • Added UpdateContext function for both the server and client

Bug Fixes and Refactors

09 Mar 19:48
67310d3
Compare
Choose a tag to compare
Pre-release

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 the internal/queue package to allow the killGoroutines function in async.go to
    drain the queue once it had closed it and once it had killed all existing goroutines
  • The heartbeat function in client.go was modified to exit early if it detected that the underlying connection had
    closed
  • The async connection type was modified to hold stale data once a connection is closed. The killGoroutines
    function will drain the incoming queue after killing all goroutines, and store those drained packets in
    the async.stale variable - future and existing ReadPacket calls will first check whether there is data available in
    the stale variable before they error out
  • Refactored the handlePacket functions for both servers and clients to be clearer and avoid allocations
  • The close function call in Async connections was modified to set a final write deadline for its final writer flush