S4 objects are natively encoded (also PR #18)
The vignette based on the JSS paper no longer uses a macro available only with the R-devel version of jss.cls, and hence builds on all R versions
Support for version 3 of the Protcol Buffers API
Added 'syntax = "proto2";' to all proto files (PR #17)
Updated Travis CI script to test against both versions 2 and 3 using custom-built .deb packages of version 3 (PR #16)
Improved build system with support for custom CXXFLAGS (Craig Radcliffe in PR #15)
New vignette based on JSS publication (v71 i02)
Some documentation enhancements were made, as well as other minor cleanups to file modes and operations
Unit-test vignette no longer writes to
/tmp per CRAN
The new Windows toolchain (based on g++ 4.9.*) is supported
Declare additional imports from methods in
Travis CI tests now run faster as all CRAN dependencies are installed as binaries.
tools/winlibs.R script now tests for R (< 3.3.0)
before calling the (soon-to-be phased out)
Several small edits were made to
DESCRIPTION to clarify
library dependencies, provide additonal references and conform to
now-current R packaging standards.
Address changes suggested by anonymous reviewers for our Journal of Statistical Software submission.
EnumDescriptor objects subsettable with
length() method for
names() method for
Clarify order of returned list for descriptor objects in
Correct the definition of
return a proper list instead of a named vector.
Update the default print methods to use
fill=TRUE instead of
show() to eliminate the confusing
 since the classes in RProtoBuf are not vectorized.
Add support for serializing function, language, and
environment objects by falling back to R's native serialization
unserialize_pb to make it
easy to serialize into a Protocol Buffer all of the more than 100
datasets which come with R.
normalizePath instead of creating a temporary
file.create when getting absolute path names.
Add unit tests for all of the above.
Document and add a test for the deprecated group functionality.
CITATION file pointing to the arXiv.org preprint.
Fix a bug in the
show method for
Import all top-level enums from imported
Removed duplicate enum value type from the unit tests that caused problems with the most recent libprotobuf-2.5. (without option allow_alias).
Changes to support CRAN builds for MS Windows.
can_serialize_pb plus documentation from Jeroen Ooms
inst/python with some Python examples.
Added Jeroen Ooms as author.
Vignettes have been converted to the R 3.0.0 or later use of
external vignette builders, no longer need a
Added missing methods to dollar completion list for Message, Descriptor, EnumValueDescriptor, and FileDescriptor classes.
Add missing export for
to allow completion on that class.
Add more than 15 additional pages to the main Intro vignette documenting better all of the S4 classes implemented by RProtoBuf, updating the type mapping tables to take into account 64-bit support, and documenting advanced features such as Extensions.
Added better error checking in EnumDescriptors to catch the case when wrong types are provided.
Updated the FileDescriptor
name() method to accept a boolean
for full paths just like the generic
Correct a bug that incorrectly dispatched
as.list() was called on Descriptor objects.
$ dispatch to work properly for
the names of fields defined in the FileDescriptor, instead of
NULL even for types returned by
Added a reservation for extension fields in the example tutorial.Person schema.
Support setting int32 fields with character representations
and raise an R-level
stop() error if the provided string can
not be parsed as a 32-bit integer, rather than crashing the R
Update the project TODO file.
Add better documentation and tests for all of the above.
Corrected the handling of uint32 and fixed32 types in protocol buffers to ensure that they work with numbers as large as 2^32 - 1, which is larger than an integer can hold in R since R does not have an unsigned integer class. These values are stored as doubles internally now to avoid losing precision.
Added unit tests to verify behavior of RProtoBuf with extreme values for uint32 types.
Removed old exception handling code and instead rely on the more modern Rcpp::stop method maintained in Rcpp.
Add better error messages when setting a repeated field of messages to inform the user which element index was of the wrong type and what the expected type was.
Add an optional 'partial' argument to readASCII allowing uninitialized message fragments to be read in.
(internal) Added const qualifiers in more places throughout the C++ code for type safety.
(internal) Standardize coding conventions of the C++ files and run them through clang-format for consistency. A STYLE file has been submitted to R-Forge with details about the coding standards and how they are enforced with Emacs and clang-format.
Applied changes suggested by Kevin Ushey to the
class handling to support both the currently released Rcpp as
well as the currently pending next version.
Fixed a bug that erroneously prevented users from setting raw byte fields in protocol buffers under certain circumstances.
Give a user friendly error message when seting an extension to a message of the wrong type instead of causing a C++ check failure that terminates the Rsession.
Change object table lookup slightly to allow users to use the
<<- operator in code using RProtoBuf without hitting a
stop() error in the lookup routine.
enum_type method and improve show method for
Improve documentation and tests for all of the above.
tests/ script calling RUnit tests
Added support for setting and getting 64-bit integer types as character strings of decimal integers to work around R's lack of native 64-bit integer types.
Added better error handling, documentation, and tests to the extensions support (getExtension and setExtension).
Add support to P for returning extension descriptors.
Improved error messages to include field names when invalid fields are specified to protocol buffer messages with new, update, etc.
Improved configure to detect and pass -std=c++0x if it is available to enable long long 64-bit integer support in Rcpp.
Improved configure in the case when pkg-config is not available or does not know about the google protocol buffer includes.
Replaced newly deprecated Rcpp macros with a simplified macro functionality to avoid warnings on the latest development version of Rcpp.
Added support for Protocol Buffer extensions through the new getExtension and setExtension methods for Message objects, and added top-level extensions to the descriptor pool.
Added more user-friendly
show() methods for Messages,
Descriptors, and other RProtoBuf objects. A common source of
confusion on the mailing lists is to confuse Messages and
Descriptors. The new
show() methods succinctly display more
information about e.g. the number of set fields in a message to
make it a little clearer to users what type of object they are
Added has method for EnumDescriptor objects to test existance of a named constant in an enumeration, and fix a bug in the length method for these objects.
Added a number method for EnumValueDescriptor objects to return the number of a named enumeration constant directly.
Improved documentation and unit tests.
Applied several more patches by Murray to
correct '_' and '__' mismatches in wrapper calls
update a few manual pages for style, and add examples
fix a bug where NAs were silently treated as TRUE for logical/bool types
fix a bug that caused crashes when adding vectors to optional fields
fix bugs in readASCII that returned empty protocol buffers when the file or connection could not be opened
distinguish between non-existant and not-set fieldswith has() by returning NULL in the former case.
fix a bug that caused non-deterministic behavior when setting a repeated message field in a protobuf to a single Message.
add unit tests for all of the above.
Added Murray to Authors: field in DESCRIPTION
Removed old and unconvincing example on RProtoBuf for storage and serialization in an imagined HighFrequencyFinance context
Applied patches by Murray to
correctly deal with nested Protocol Buffer definitions, and also add new unit test for this
test a a protocol buffer for missing required fields before serializing it, also add a unit test
add a small stylistic fix and examples to the 'add.Rd' manual page
Moved inst/doc/ to vignettes/ per newer CRAN Policy
Applied several patches kindly supplied by Murray Stokely to
properly work with repeated strings
correct C++ function naming in a few instances
add an example of ascii export/import of messages
Suppport g++-4.7 and stricter #include file checking by adding unistd
Made small improvements to the startup code
Protect UINT64 and INT64 with '#ifdef RCPP_HAS_LONG_LONG' which itself is valid with either g++ <= 4.4, or newer versions if the -std=c++0x is used
The documentation Makefile now uses the $R_HOME environment variable
The documentation Makefile no longer calls clean in the all target
Applied two patches by Murray Stokely which
correct a typo preventing some functions from being called,
add bounds checking in call to google protobuf library,
add a new name method
add a tiny unit test for the above
add more graceful error handling
add support for import patterns other than .proto$,
add simple reading file that does not exist (exception) test
add simple repeated field unit test
Support for raw bytes added thanks to a patch by Koert Kuipers
Second release with numerous internal changes made possible by changes in Rcpp
Initial CRAN release