Fixed a crash that could occur when a builder element was aligned exactly at the end of a page. (See #94)
Fixed a crash when encountering an I/O error during builder resolution without an error handler callback. (See #98)
Fixed an error destroying a writer while a builder is open. (See #88)
Fixed an issue with incorrect NULL checks for 0-length buffers. (See #97)
Fixed a string formatting issue on platforms where
intis not 32 bits. (See #103)
Cleaned up some references to old unit test buildsystem. (See #95)
- Maps and arrays can now be built dynamically without specifying their size up front. See
doublecan now be disabled individually on platforms with limited floating point support. If
floatis supported but not
double, MessagePack doubles can be converted to
float. (See #74, #79)
MPack now builds cleanly under /W4 with Visual Studio 2015, 2017 and 2019 build tools.
Bug Fixes and Other Changes:
mpack-defaults.hsample configuration is no longer provided.
Replaced SCons unit test buildsystem and XCode/VS projects with Python+Ninja.
Fixed an issue where write overloads could be erroneously defined in C++ without
Fixed some minor portability issues.
A number of breaking API changes have been made for the 1.0 release. Please take note of these changes when upgrading.
The Node API now separates tree initialization from parsing. After calling one of the
mpack_tree_init()functions, you must explicitly call
mpack_tree_parse()before accessing any nodes.
The configuration file
mpack-config.his now optional, and requires
MPACK_HAS_CONFIGin order to be included. This means you must define
MPACK_HAS_CONFIGwhen upgrading or your config file will be ignored!
Extension types are now disabled by default. You must define
MPACK_EXTENSIONSto use them.
mpack_tag_tis now considered an opaque type to prevent future breakage when changing its layout. Compatibility is maintained for this release, but this may change in future releases.
The Node API can now parse multiple messages from a data source.
mpack_tree_parse()can be called repeatedly to parse each message.
The Node API can now parse messages indefinitely from a continuous stream. A tree can be initialized with
mpack_tree_init_stream()to receive a callback for more data.
The Node API can now parse messages incrementally from a non-blocking stream. Call
mpack_tree_try_parse()with a non-blocking read function to start and resume parsing. It will return true when a complete message has become available.
The stdio helpers now allow reading from a
_init_file()functions have been renamed to
_init_filename(). (The old names will continue to work for a few more versions.)
The Node API now returns a node of "missing" type instead of "nil" type for optional map lookups. This allows the caller to tell the difference between a key having value nil and a missing key.
The writer now supports a v4 compatibility mode. Call
mpack_writer_set_version(writer, mpack_version_v4);to encode without using the
exttypes. (This requires
The timestamp type has been implemented. A timestamp is a signed number of nanoseconds since the Unix epoch (1970-01-01T00:00:00Z). (This requires
Bug Fixes and Other Changes:
Fixed an allocation bug when closing a growable writer without having written anything (#58).
The reader's skip function is no longer ignored under
- Fixed incorrect element tracking in
- Added type-generic writer functions
mpack_write_object_bytes()to insert pre-encoded MessagePack into a larger message
- Enabled strings in all builds by default
- Fixed unit test errors under
- Fixed some compiler warnings
- Added reader helper functions to expect re-ordered map keys
- Improved documentation and added Pages
- Made node key lookups check for duplicate keys
- Added various UTF-8 checking functions for reader and nodes
- Added support for compiling as C in recent versions of Visual Studio
- Fixed miscellaneous bugs and improved performance
mpack_writer_destroy_cancel(). You must now flag an error (such as
mpack_error_data) in order to cancel reading.
- Added many code size optimizations.
MPACK_OPTIMIZE_FOR_SIZEis no longer experimental.
- Improved and reorganized Writer documentation
- Made writer flag
mpack_error_ioif writing too much data without a flush callback
- Added optional
skipcallback and optimized
- Fixed various compiler and code analysis warnings
- Optimized speed and memory usage
- Fixed various bugs in UTF-8 checking, error handler callbacks, out-of-memory and I/O errors, debug print functions and more
- Added many missing Tag and Expect functions such as
- Added extensive unit tests
longjmpsupport has been replaced by error callbacks. You can safely
longjmpor throw C++ exceptions out of error callbacks. Be aware of local variable invalidation rules regarding
setjmpif you use it. See the documentation for
mpack_reader_error_tand issue #19 for more details.
inlinefunctions in the MPack API are no longer
static. A single non-
inlinedefinition of each
inlinefunction is emitted, so they behave like normal functions with external linkage.
- Configuration options can now be pre-defined before including
mpack-config.h, so you can customize MPack by defining these in your build system rather than editing the configuration file.