Releases: pojntfx/panrpc
Releases · pojntfx/panrpc
v0.8.2
Bug Fixes
- Use correct license in NPM package (Felicitas Pojtinger)
Chores
- Bump GitHub action versions (Felicitas Pojtinger)
release-main
fix: Use correct license in NPM package
v0.8.1
Chores
- Bump version (Felicitas Pojtinger)
v0.8.0
Features
- Introduce per-
Link*()
hooks to Go and TypeScript versions that allow associating a specific call toLink*()
with aremoteID
(Felicitas Pojtinger) - Add GJS + Soup boilerplate replicating the panrpc web example using GTK4 (Felicitas Pojtinger)
Documentation
- Add comments to serialization/deserialization boilerplate, link to other transport/serializer examples in README directly after boilerplate (Felicitas Pojtinger)
Code Refactoring
- Drop broken GJS example (Felicitas Pojtinger)
Chores
- Bump version (Felicitas Pojtinger)
v0.7.2
Features
- Add simple coffee machine example for TypeScript docs (Felicitas Pojtinger)
- Add closure example to coffee server and client CLI in TypeScript (Felicitas Pojtinger)
- Add Go coffee machine server implementation with streaming support (Felicitas Pojtinger)
- Marshal
undefined
values asnull
instead of omitting them for requests in TypeScript (Felicitas Pojtinger) - Add Go coffee machine client implementation with streaming support (Felicitas Pojtinger)
- Add support for broadcasting coffee machine status to other peers (Felicitas Pojtinger)
- Broadcast coffee machine status to subscribed clients for Go version (Felicitas Pojtinger)
- Broadcast coffee machine status to subscribed clients for TypeScript version (Felicitas Pojtinger)
Bug Fixes
- Add notes on TLS via UNIX support in
purl
(Felicitas Pojtinger) - Use correct paths to Go example sources in tutorial (Felicitas Pojtinger)
Documentation
- Start split into per-language documentation, link library API in reference (Felicitas Pojtinger)
- Add draft of new docs for TypeScript version based on new example services (Felicitas Pojtinger)
- Add TypeScript transport and serializer installation & setup docs (Felicitas Pojtinger)
- Add TypeScript server setup docs and notes on streams conversion boilerplate (Felicitas Pojtinger)
- Add docs for creating a client (Felicitas Pojtinger)
- Add TypeScript docs for calling an RPC exposed by the server from the client (Felicitas Pojtinger)
- Start implementing TypeScript docs for calling an RPC exposed by the client from the server (Felicitas Pojtinger)
- Add TypeScript docs for implementing multicast notifications by calling RPCs provided by the client from the server (Felicitas Pojtinger)
- Add TypeScript docs for passing closures to RPCs and link to example source code at the end of the tutorial (Felicitas Pojtinger)
- Add Go server setup tutorial (Felicitas Pojtinger)
- Add Go client setup tutorial (Felicitas Pojtinger)
- Add Go client TUI setup tutorial (Felicitas Pojtinger)
- Add Go tutorial on how to call RPCs on the client from the server (Felicitas Pojtinger)
- Add Go tutorial on how to pass closures to RPCs (Felicitas Pojtinger)
- Add JSDoc to TypeScript implementation's registry (Felicitas Pojtinger)
- Add JSDoc to TypeScript implementation's registry (Felicitas Pojtinger)
- Add notes on limitations on supported method signatures (Felicitas Pojtinger)
- Re-add shell user prefixes (Felicitas Pojtinger)
- Use SVG-only icon, drop logos and replace them with markup layout (Felicitas Pojtinger)
- Add short introductory paragraphs for each tutorial section (Felicitas Pojtinger)
- Add language icons to ease visual docs navigation (Felicitas Pojtinger)
- Add new overview section (Felicitas Pojtinger)
- Add notes on cancelling/aborting ongoing RPC calls (Felicitas Pojtinger)
Builds
- Add README to generated NPM package (Felicitas Pojtinger)
v0.7.1
Documentation
- Use copy-pasteable command blocks and use modern NPM publish action (Felicitas Pojtinger)
Chores
- Bump TypeScript version (Felicitas Pojtinger)
v0.7.0
Features
- Add support for per-call timeouts by cancelling contexts instead of a global timeout (Felicitas Pojtinger)
- Signal in-progress RPCs of global registry errors (Felicitas Pojtinger)
- Add TCP-based registry for TypeScript (Felicitas Pojtinger)
- Add timeouts powered by
AbortController
to TS version (Felicitas Pojtinger) - Add local and remote contexts to link (Felicitas Pojtinger)
- Add new WebSocket link function based on universal message-based linker (Felicitas Pojtinger)
- Add new TCP link function based on universal message-based linker (Felicitas Pojtinger)
- Add minimal TCP server version for TypeScript bindings (Felicitas Pojtinger)
- Add minimal WebSocket server version for TypeScript bindings (Felicitas Pojtinger)
- Start implementation of registry API that is more in line with the Go implementation (Felicitas Pojtinger)
- Implement real remote ID support, implement
forRemote
semantics from Go in TypeScript, connectonClientConnect
/onClientDisconnect
hooks (Felicitas Pojtinger) - Use new
forRemotes
API in TypeScript websocket client example, use remote IDs in local function implementations (Felicitas Pojtinger) - Port
listen()
/dial
support to WebSocket client and servers respectively (Felicitas Pojtinger) - Port
listen()
/dial
support to TCP client and servers respectively (Felicitas Pojtinger) - Start implementation of TypeScript ltsrpc closure support (Felicitas Pojtinger)
- Start implementation of
reflect-metadata
based remote closure detection through theremoteClosure
decorator (Felicitas Pojtinger) - Start implementation of calling the virtual
CallClosure
RPC from TS version (Felicitas Pojtinger) - Add global abort signal for Go closures that are passed to the TS version (Felicitas Pojtinger)
- Start implementation of closure manager skeleton (Felicitas Pojtinger)
- Implement full TypeScript closure manager and closure garbage collector (Felicitas Pojtinger)
- Add basic weron support to
purl
CLI (Felicitas Pojtinger) - Implement per-closure context-based lifecycles for Go implementation (Felicitas Pojtinger)
- Implement per-closure signal-based lifecycles for TypeScript implementation (Felicitas Pojtinger)
- Add CBOR and JSON support to
purl
(Felicitas Pojtinger) - Add stream-based read function and use pipes to invert from messages to streams (Felicitas Pojtinger)
- Handle closing streams for both reads and writes, use empty chain instead of empty stream transform, port TCP examples to new stream-based link function, fix call promise response (Felicitas Pojtinger)
- Port TypeScript WebSocket client and server to new stream-based API (Felicitas Pojtinger)
- Add plain encoding/decoding to TypeScript examples, make intra-TS versions compatible (Felicitas Pojtinger)
- Add TypeScript implementation of throughput client, drop
p.parser
based implementation completely (Felicitas Pojtinger) - Swap out JSON encoding with CBOR for TypeScript until a viable streaming JSON encoder/decoder exists (Felicitas Pojtinger)
- Add ability to switch between JSON and CBOR encoding in TypeScript version throughput benchmark (Felicitas Pojtinger)
- Port all remaining TypeScript examples to streaming JSON encoders (Felicitas Pojtinger)
- Add TypeScript RPS benchmark client implementation (Felicitas Pojtinger)
- Add TypeScript RPS benchmark server implementation (Felicitas Pojtinger)
- Use
Writeable
andPassThrough
instead ofTransform
streams (Felicitas Pojtinger) - Start migration to WhatWG stream API in registry (Felicitas Pojtinger)
- Port all examples to WhatWG streams compatibility layer (Felicitas Pojtinger)
- Implement
Readable
/Writable
-free CBOR encoder/decoder (Felicitas Pojtinger) - Add backpressure support to CBOR version for Readable and Writable (Felicitas Pojtinger)
- Add backpressure support to JSON version for Readable (Felicitas Pojtinger)
- Add support for WhatWG stream JSON encoding/decoding for all TCP examples (Felicitas Pojtinger)
- Add support for WhatWG stream CBOR encoding/decoding for TCP example (Felicitas Pojtinger)
- Add support for WhatWG stream JSON & CBOR encoding/decoding for all TCP benchmarks (Felicitas Pojtinger)
- Add TypeScript support to benchmarks (Felicitas Pojtinger)
- Add TypeScript and Go support for requests/second throughput table (Felicitas Pojtinger)
- Add TypeScript support for throughput benchmark CSV generator (Felicitas Pojtinger)
- Add multi-language support for throughput graph and throughput table renderer (Felicitas Pojtinger)
- Add browser React
panrpc
demo, prefix all demo CLIs (Felicitas Pojtinger) - Add pipe-based stdin/stdout example to Go (Felicitas Pojtinger)
- Add UNIX server and client examples to Go implementation (Felicitas Pojtinger)
- Add UNIX socket support to
purl
(Felicitas Pojtinger) - Add
stdin
/stdout
transport layer support to TypeScript implementation, useSIGHUP
andSIGUSR2
to handle inputs forstdin
/stdout
demos instead of manually passing signal numbes (Felicitas Pojtinger) - Add UNIX server and client examples to TypeScript implementation (Felicitas Pojtinger)
- Port callback demos to TypeScript version (Felicitas Pojtinger)
Bug Fixes
- Use ES6 class methods to prevent broken
this
references, exit after close event in TCP TS example (Felicitas Pojtinger) - Drop debug logging fo...
v0.6.1
Bug Fixes
- Include
dist
in built NPM package (Felicitas Pojtinger)
v0.6.0
Features
- Add packet-based/Frisbee API to
Link()
#1 (Felicitas Pojtinger) - Introduce two separate request/response Frisbee operations #1 (Felicitas Pojtinger)
- Introduce reflection call wrapper to prevent panics on partially sent Dudirekta messages #1 (Felicitas Pojtinger)
- Add stream-based protocol based on the new message-based protocol (Felicitas Pojtinger)
- Start development of Redis example (Felicitas Pojtinger)
- Implement stream reads for Redis example (Felicitas Pojtinger)
- Add Redis stream transport demo (Felicitas Pojtinger)
- Start implementation of throughput benchmarks (Felicitas Pojtinger)
- Add jsoniter-based serializer to benchmark (Felicitas Pojtinger)
- Add CBOR and MessagePack serializers to benchmark (Felicitas Pojtinger)
- Use custom broadcaster for response resolution, enable processing non-resolved responses (Felicitas Pojtinger)
- Add throughput benchmark (Felicitas Pojtinger)
- Add all data types to RPS benchmark (Felicitas Pojtinger)
- Start implementation of TypeScript port for dudirekta-example-websocket-client.ts (Felicitas Pojtinger)
- Implement new Dudirekta protocol in TS (Felicitas Pojtinger)
- Add 1:1 port of WebSocket Go client example for TS (Felicitas Pojtinger)
- Add support for timing out calls in JS version (Felicitas Pojtinger)
- Allow using special nested encoding function for arguments and return values (Felicitas Pojtinger)
- Allow using special nested encoding function for requests, responses and messages (Felicitas Pojtinger)
- Implemented flat transcoder for TypeScript version, implement separate tests for flat and nested transcoding (Felicitas Pojtinger)
- Add simple universal function caller/
curl
equivalent (Felicitas Pojtinger) - Add call timeouts to
durl
(Felicitas Pojtinger) - Allow
listen
ing server-to-client RPC calls fordurl
(Felicitas Pojtinger) - Add WebSocket support to
durl
(Felicitas Pojtinger) - Enable TLS listen and dial support for TCP and WebSocket
durl
(Felicitas Pojtinger) - Implement positional arguments, rework
durl
CLI (Felicitas Pojtinger) - Make tests scriptable by terminating after
n
runs (Felicitas Pojtinger) - Add benchmark script for RPS (Felicitas Pojtinger)
- Add graph and table result renderers for RPS benchmark (Felicitas Pojtinger)
- Add graph renderers for throughput benchmark (Felicitas Pojtinger)
- Add table renderers for throughput benchmark (Felicitas Pojtinger)
- Use new protocol examples and terminology in protocol overview (Felicitas Pojtinger)
Bug Fixes
- Copy the incoming bytes into a separate buffer instead of sending reference since Frisbee modifies it #1 (Felicitas Pojtinger)
- Buffer error channel in registry to prevent deadlock if both
readRequest
andreadResponse
return at the same time #1 (Felicitas Pojtinger) - Ensure that protocol violations inside of RPCs created with
MakeFunc
don't lead to runtime panics (Felicitas Pojtinger)
Documentation
- Add notes on installing
durl
, start adding notes on new serialization-independent framework and add notes on new generics (Felicitas Pojtinger) - Use new
ForRemotes
callback (Felicitas Pojtinger) - Add new examples to examples index (Felicitas Pojtinger)
- Add notes on differences between stream and message-oriented APIs in tutorial and overview section (Felicitas Pojtinger)
Code Refactoring
- Remove dependency on
encoding/json
, use struct- instead of array-based wire format #1 (Felicitas Pojtinger) - Decompose Frisbee server and dialer (Felicitas Pojtinger)
- Use broadcaster with delivery guarantee (Felicitas Pojtinger)
- Drop Frisbee (Felicitas Pojtinger)
- Use explicit JSON keys for stream-oriented API (Felicitas Pojtinger)
- Switch to callback-based API for registry, drop direct lock-free access to remotes map (Felicitas Pojtinger)
- Make
linkWebSocket
synchronous, drop automatic reconnects (Felicitas Pojtinger) - Decompose request, message and response marshalling and unmarshalling (Felicitas Pojtinger)
- Switch to JSON for TCP client/server example (Felicitas Pojtinger)
- Drop separate nested encode/decode functions while still allowing for embedded fragments, strongly type encoder/decoder (Felicitas Pojtinger)
- Use new nested encoding API (Felicitas Pojtinger)
- Port RPS server and client to new nested encode/decode API (Felicitas Pojtinger)
- Port throughput server and client to new nested encode/decode API (Felicitas Pojtinger)
Tests
- Add unit tests for messages, requests and responses (Felicitas Pojtinger)
Builds
- Port TypeScript library to bun APIs (Felicitas Pojtinger)
- Add Makefile, Hydrun config and GitHub action for
durl
(Felicitas Pojtinger) - Disable
js/wasm
target (Felicitas Pojtinger)