Browse by type
TravisCI:
AppVeyor: Coveralls:
These days, JSON (JavaScript Object Notation, see ECMA-404) is used in many cases where data has to be exchanged. Lots of protocols between different services use it, databases store JSON (document stores naturally, but others increasingly as well). It is popular, because it is simple, human-readable, and yet surprisingly versatile, despite its limitations.
At the same time there is a plethora of alternatives ranging from XML over Universal Binary JSON, MongoDB's BSON, MessagePack, BJSON (binary JSON), Apache Thrift till Google's protocol buffers and ArangoDB's shaped JSON.
When looking into this, we were surprised to find that none of these formats manages to combine compactness, platform independence, fast access to sub-objects and rapid conversion from and to JSON.
We have invented VPack because we need a binary format that
All this gives us the possibility to use the same byte sequence of data for transport, storage and (read-only) work. Using a single data format not only eliminates a lot of conversions but can also reduce runtime memory usage, as data does only need a single in-memory representation.
The other popular formats we looked at have all some deficiency with respect to the above list. To name but a few:
Any new data format must be backed by good C++ classes to allow
The VelocyPack format is an attempt to achieve all this, and our first experiments and usage attempts are very encouraging.
This repository contains a C++ library for building, manipulating and serializing VPack data. It is the reference implementation for the VelocyPack format. The library is written in good old C++11 so it should compile on most systems.
See the file VelocyPack.md for a detailed description of the VPack format.
See the file Performance.md for a thorough comparison to other formats like JSON itself, MessagePack and BSON. We look at file sizes as well as parsing and conversion performance.
The VPack library can be built on Linux, MacOS and Windows. It will likely compile and work on other platforms for which a recent version of cmake and a working C++11-enabled compiler are available.
See the file Install.md for compilation and installation instructions.
Please consult the file examples/API.md for usage examples, and the file examples/Embedding.md for information about how to embed the library into client applications.
We welcome bug fixes and patches from 3rd party contributors!
Please follow the guidelines in CONTRIBUTING.md if you want to contribute to VelocyPack. Have a look for the tag help wanted in the issue tracker!
We also provide a golang version of VPack in the go-velocypack repository and a Java version in the java-velocypack.
Additionally, there is a third party VPack implementation for PHP.
$ claude mcp add velocypack \
-- python -m otcore.mcp_server <graph>