Skip to content

Releases: KxSystems/protobufkdb

v1.0.2

12 Aug 11:34
2dfa9e5

Choose a tag to compare

Fix for parsing serialised data where the message has a self-referencing field.

In the following schemas, the 'parent' field could have caused an issue

proto2

message MessageLoopTest {
    optional string id = 1;
    optional string name = 2;
    optional string country = 3;
    optional MessageLoopTest parent = 4;
    optional double parentScalingFactor = 5;
}

proto3

message MessageLoopTest {
    string id = 1;
    string name = 2;
    string country = 3;
    MessageLoopTest parent = 4;
    double parentScalingFactor = 5;
 }

using the following q code would have caused a crash

scalars:("testID";"testName";"testCountry";(::);5.0);
x:.protobufkdb.serializeArrayFromList[`MessageLoopTest; scalars];
scalars~ .protobufkdb.parseArrayToList[`MessageLoopTest; x]          // crashed previously
scalars:("testID";"testName";"testCountry";("testID";"testName";"testCountry";(::);5.0);5.0);
x:.protobufkdb.serializeArrayFromList[`MessageLoopTest; scalars];
scalars~.protobufkdb.parseArrayToList[`MessageLoopTest; x]          // crashed previously

MacOS prebuilt binaries temporarily unavailable from release. Follow documentation for building from source.

v1.0.1

16 Sep 16:49
d3f3af2

Choose a tag to compare

Previous linux release package (protobufkdb-linux-1.0.0.tgz) was incorrectly using a debug version of libprotobuf.a
This has been fixed and the linux build instructions clarified in the readme.

Initial Stable Release

18 Jun 09:40

Choose a tag to compare

Promotion of 1.0.0-rc.2 to 1.0.0

Second release candidate for version 1.0.0

08 Jan 16:16
ac1e9f5

Choose a tag to compare

Protobufkdb enhancements:

  • Message representation
    Previously protobufkdb represented a proto message in kdb as a mixed lists of field values in field positional order. This is for performance reasons and to more closely tie in with how protobuf serializes messages.
    However, some users may prefer messages to use a dictionary from symbol field names to a mixed list of field values, more similar to how JSON is represented. In this case each field is be looked up by its name so the positional order is no longer required.
    Both styles are now supported by separate APIs.
  • Type mapping updates
    Proto string fields are mapped to kdb+ char lists
    Proto bytes fields are mapped to kdb+ as byte lists
    Proto map-key string fields are mapped to kdb+ symbols
  • Bugfixes
    Messages where are fields have the same type can be serialized
    Dynamic import errors are cleared correctly

Initial release candidate for version 1.0.0

06 Oct 17:29
f9310a6

Choose a tag to compare

Protobuf/Google Protocol Buffers is a flexible data interchange mechanism for serializing/deserializing structured data wherever programs or services have to store or exchange data via interfaces while maintaining a high degree of language interoperability. The binary encoded format used to represent the data is considerable more efficient, both in terms of raw processing speed and compact data size, than other encodings such as JSON or XML.

What's New:

  • Serialization and parsing functions for converting between kdb+ objects and proto-serialized binary
  • Automatic mapping of all scalar protobuf field types along with repeated, map and oneof field specifiers
  • Support for kdb+ temporal types via protobuf field options
  • Type checking that kdb+ object is compatible with the message schema during serialization
  • Ability to dynamically import .proto message schema definitions at runtime