This package provides R with both the MessagePack (or MsgPack as a shorthand) header files, and the ability to access, create and alter MessagePack objects directly from R.
MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it is faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves. MessagePack is used by Redis and many other projects.
The R Journal
paper describes both the RcppMsgPack
package and MessagePack.
To use the headers from this package, simply add it to the
LinkingTo:
field in the DESCRIPTION
field of
your R package—and the R package infrastructure tools will then know how
to set include flags correctly on all architectures supported by R.
The functions msgpack_pack
and
msgpack_unpack
allow you to serialize and de-serialize R
objects respectively. msgpack_format
is a helper function
to properly format R objects for input. msgpack_simplify
is
a helper function to simplify output from MsgPack conversion.
MsgPack EXT types are converted to raw vectors with EXT attributes
containing the extension type. The extension type must be an integer
from 0 to 127. MsgPack Timestamps are an EXT with type -1. Timestamps
can be encoded and decoded from POSIXct
objects in R to
MsgPack format with msgpack_timestamp_encode
and
msgpack_timestamp_decode
.
Msgpack Maps are converted to data.frames with additional class
“map”. Map objects in R contain key and value list columns and can be
simplified to named lists or named vectors. The helper function
msgpack_map
creates map objects that can be serialized into
msgpack.
A flowchart describing the conversion of R objects into msgpack objects and back.
For more information on msgpack types, see here.
x <- as.list(1:1e6)
x_packed <- msgpack_pack(x)
x_unpacked <- msgpack_unpack(x_packed)
The package is on CRAN and can be installed via a standard
install.packages("RcppMsgPack")
Pre-releases have been available via the ghrr drat repository:
::addRepo("ghrr")
dratinstall.packages("RcppMsgPack")
The package currently includes the MessagePack headers version 2.1.5.
See the BH package for related (and also header-only) libraries from Boost, and the RcppRedis package for simple yet performant Redis support.
The issue tracker can be used for bug reports or feature requests.
Dirk Eddelbuettel and Travers Ching.
Special thanks to Xun Zhu.
The R package is provided under the GPL (version 2 or later). The included MsgPack library is released under the same license as Boost, the BSL-1.0.