Releases: loopholelabs/frisbee-go
Releases · loopholelabs/frisbee-go
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
Refactoring Packets and fixing ConnContext
Merge pull request #69 from loopholelabs/staging Release v0.2.1
PacketContexts and Garbage Collection
Fixes
pkg/ringbuffer
(now calledpkg/queue
) no longer goes into an invalid state when it overflows- Many new test cases for the
pkg/queue
package - Multiple Goroutine leaks
Changes
- Frisbee now reuses byte slices reducing GC pressure with a new *packet.Packet interface
pkg/queue
now has both Blocking and Non-Blocking functionality with differing performance- Benchmarks have been modified to be more thorough and compare performance with raw TCP Throughput
- Handler function signatures no longer differ between Server and Client routing tables, and no longer include connections being passed into the handler
ConnContext
andPacketContext
functions have been added to allow thecontext.Context
package to be used within Handler functions
Bug fixes, improved test cases
Improved connection handling
Minor Bug fixes, Preparing for CNCF Proposal and Lynk
RC For Version 0.1.4 (#43) * Adding utility functions for underlying conn access * Adding some raw write utility functions * Test stability * Test stability * Adding utility func * In golang, io.EOF is served when a network connection is CLOSED, not when it's empty - that's blocking * Adding debugging for lynk (temporary) * Adding debugging for lynk (temporary) * Adding debugging for lynk (temporary) * Adding debugging for lynk (temporary) * Adding debugging for lynk (temporary) * Temporarily removing ReadFrom functionality * Undoing some temp changes * Changing the way streamConns are registered * Testing buffered reader in ReadFrom * Undoing buffered reader stuff * Adding some interface implementations * Adding some interface implementations * Adding some interface implementations * Removing buffer message types from Frisbee * Removing buffer message types from Frisbee * Solidifying tests * Solidifying tests * Moving around waitgroup logic * testing * Swapping to uint64 for frisbee message ID, and adding "FBEE" reserved bytes at start of message (instead of 0s) * Refactoring frisbee conn into async and stream structs * Adding license headers, improving test cases, adding test cases for Sync connections * Removing waitgroup in Sync connection (no goroutines are run) * Adding waitgroups to guarantee all goroutines are dead * Revert "Adding waitgroups to guarantee all goroutines are dead" This reverts commit 054bc30e * Fixing comment, adding atomic shutdown var to server * Testing server waitgroup to make sure server goroutines are shutdown * Testing server waitgroup to make sure server goroutines are shutdown * Adding flaky tests checker * Adding flaky tests checker * Using require for failures * Changing closed error * Making tests less flaky * Making tests less flaky * Making TestStreamIOCopy less flaky * Adding timeouts to testing * More obvious wait logic for client wait group * More obvious wait logic for client wait group * Removing require so we get more debug messages * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Fixing some buggy tests, improving streamChannel usage * Increasing timeouts * Increasing timeouts * Increasing timeouts even more * Update CHANGELOG.md * Updating module path * Fixing paths to github.com/loopholelabs * Adding TLS connection state information * Fixing TLS listener error * Fixing TLS Conn error * Fixing many bugs * Testing small flush bug * Upgrading go version on tests * Updating changelog for release 0.1.4 * Going back to version 1.16 because semaphore doesn't support 1.17 yet, removing unnecessary switch statement * forcing connections to be over TCP
New Features and Increased Stability
Features
- Adding TLS functionality to Frisbee servers and clients
- Separating Frisbee Connections into Synchronous and Asynchronous connections
- Create multiplexed streams on top of existing frisbee connections (Async connections only)
Fixes
- Frisbee
Server
andClient
now wait for goroutines to close when they are closed - Frisbee read loop and write (flush) loops implement deadlines
Changes
- Frisbee Message
ID
field is now auint64
(which makes UUID generation easier) TestStreamIOCopy
now usesnet.Conn
instead ofnet.Pipe
for testing- Removed Buffer messages (for raw data), replaced them with multiplexed streams
Improving test stability, adding io.Writer and io.Reader compatibility to frisbee.Conn
Pre-release
Features
- Adding
Write
,Read
,WriteTo
, andReadFrom
functionality tofrisbee.Conn
to make it compatible withio.Copy
functions
Fixes
- Improving README.md with public build status
- Improving test case stability
Changes
Read
andWrite
functions are now calledReadMessage
andWriteMesage
respectively