Skip to content

Releases: loopholelabs/frisbee-go

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

Refactoring Packets and fixing ConnContext

04 Mar 21:31
908d072
Compare
Choose a tag to compare
Merge pull request #69 from loopholelabs/staging

Release v0.2.1

PacketContexts and Garbage Collection

22 Feb 22:44
e77c7c0
Compare
Choose a tag to compare
Pre-release

Fixes

  • pkg/ringbuffer (now called pkg/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 and PacketContext functions have been added to allow the context.Context package to be used within Handler functions

Bug fixes, improved test cases

25 Nov 00:41
3585f8f
Compare
Choose a tag to compare
Pre-release

What's Changed

Full Changelog: v0.1.5...v0.1.6

Improved connection handling

16 Nov 23:36
a4f30ae
Compare
Choose a tag to compare
Pre-release

What's Changed

Full Changelog: v0.1.4...v0.1.5

Minor Bug fixes, Preparing for CNCF Proposal and Lynk

04 Oct 03:53
f04d019
Compare
Choose a tag to compare
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

28 Jul 18:10
05538a0
Compare
Choose a tag to compare
Pre-release

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 and Client 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 a uint64 (which makes UUID generation easier)
  • TestStreamIOCopy now uses net.Conn instead of net.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

15 Jun 01:09
50e348c
Compare
Choose a tag to compare

Features

  • Adding Write, Read, WriteTo, and ReadFrom functionality to frisbee.Conn to make it compatible with io.Copy
    functions

Fixes

  • Improving README.md with public build status
  • Improving test case stability

Changes

  • Read and Write functions are now called ReadMessage and WriteMesage respectively