Skip to content

Releases: Meulengracht/libgracht

Gracht Protocols/RPC 2.5.0

29 Jul 10:36
Compare
Choose a tag to compare

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

11 Oct 06:23
Compare
Choose a tag to compare

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

02 Jun 20:31
Compare
Choose a tag to compare

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

10 May 06:37
Compare
Choose a tag to compare

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

06 May 17:24
b1e2fa1
Compare
Choose a tag to compare

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

02 May 20:44
Compare
Choose a tag to compare

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

28 Apr 11:43
Compare
Choose a tag to compare

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

15 Apr 05:59
Compare
Choose a tag to compare

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)