Releases: Meulengracht/libgracht
Gracht Protocols/RPC 2.5.0
Highlights in V2.5.0
- Support for variants (union, oneof) in protocols
- Support for string arrays in parameters
- Several crash fixes and improvements to protocol generator
Better testing of the client/server protocol library.
Gracht Protocols/RPC 2.4.1
After integration on Vali, we discovered some bugs in the client and server related to packet-usage. This release is a bugfix release for 2.4
Bugfixes:
- link/vali-ipc: Fixed issues with connecting and setting up link that did not return the descriptor
- client: Fixed memory leak when waiting for new messages
- server: Fixed message->index not being set to the buffer size initially.
Gracht Protocols/RPC 2.4.0
A bugfix and also minor release of libgracht. This release fixes a few issues that was discovered after using streaming clients, and it also completes the support for the Vali IPC link.
Changes:
- Vali IPC link has been finished
Bugfixes:
- Fixed issue with streaming clients not being subscribed from the start
- Fixed naming of internal deserializer functions, it was not correctly scoped.
Gracht Protocols/RPC 2.3.0
This is yet another minor update that has come in the wake of integration in Vali.
Changes:
- Restructured the c generator to make it easier to read and maintain the code a little
- Support for variable value types in addition to variable structure members.
- Support for namespaces that only apply to structures, enums and values.
Bug fixes:
- Fixed missing cases in deserialization and serialization
- Fixed wrong naming generated in some cases
Gracht Protocols/RPC 2.2.0
This release fixes some issues that were with library, so this is marked a bugfix release
Changes:
- Added the shared library build
Bug fixes:
- The windows build of the library now confirmed working as intended (atleast so far tests show!)
- Fix a memory issue in the atomic stack
Gracht Protocols/RPC 2.1.0
This is a minor release, fixing some of the earlier issues that still existed with the 2.0 release.
Bug fixes:
- Implemented missing shutdown sequence
- Added missing guards to generated C code
- The syntax for the protocols has been updated to include the id
- Added verification code for ids
- Added missing locks
- Added missing cleanup code
- Better handle serialization buffers
- Fixed the missing support for fixed parameters
Gracht Protocols/RPC 2.0.0
This release is a very large release compared to V1.0. The language parser has been rewritten, the language itself is now a custom language instead of being XML derivative. The core runtime has been extended and changed to fit the new protocol. The library now uses some form of dynamic allocations based on the type of data sent. Only dynamic allocations are used during deserialization if it's sending a variable (: unknown length) message length, otherwise no dynamic allocations are performed during runtime.
Both the client and server now makes use of the memory arena implementation, which is still rather naive, but it provides a quick way of allocating and deallocating memory for messages. No optimizations are really present in the library at this moment yet, but feature-wise we are where we want to be for starters.
Version 2 now features:
- Full support for data-structures
- Full support for custom defined types that are imported from headers and namespaces
- Full support for variadic data messages (uses the [] brackets to indicate 1..N occurrences)
- Improved support for batching of calls
- Improved support for asynchronous calls.
- Server has improved memory footprint.
- Client uses more memory, but behaves faster.
Version 1.0 of Gracht RPC
A lightweight, cross-platform, modular and dependency free protocol library. Gracht is built upon an abstracted concept of links, which can be anything and hence allows gracht to work on any platform. The links that are provided by default are unix/windows-sockets and a native interface for the Vali OS IPC (which the library is originally built for). Gracht protcols are defined in the XML format, where we support different kinds of primitives:
- Datatypes
- Enums
- Synchronous function calls
- Asynchronous function calls
- Asynchronous events with parameters
The library itself supports different kind of ways to send/receive messages. This can be done individually or in bulk. Multiple messages can be invoked and awaited with a single call.
Links are defined in include/gracht/links and are seperate objects that must be created before the client or server gets created/initialized. If you want to implement your own link interface you can take a look at the required functions under /include/gracht/link/link.h.
Supported links:
- Socket
Supported languages for code generation are:
- C
Libraries the core library depends on:
- C11 threads or pthreads (linux only)