Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

Unreleased (0.8.11)

Added

  • Implemeneted support for #![no_std] in rmpv
    • Adds new feature="std" (on by default)
  • Introduces new RmpRead and RmpWrite traits.
    • Needed because std::io::Read (and Write) are missing on #![no_std]
  • Introduces new Bytes and ByteBuf wrappers, that implement RmpRead/RmpWrite for no_std targets.

0.8.6 - 2017-04-23

Added

  • New rmp::decode::read_str_from_slice function for zero-copy reading strings from slices.

Changed

  • Deprecate rmp::decode::read_str_ref, because it's useless and inconvenient.

0.8.5 - 2017-03-13

Fixed

  • Fix compilation on rustc 1.13.0.

0.8.4 - 2017-03-09

Added

  • Derive Debug for MarkerReadError.

0.8.3 - 2017-03-04

Fixed

  • Fixed write_sint, so it should mark positive values as unsigned integers. Before this change it marked signed integers larger than 4294967296 with I64 marker, which is not consistent with other MessagePack implementations. Now it should mark such integers with U64 marker.

0.8.2 - 2017-02-01

Added

  • Conversion from ValueWriteError into I/O error.

0.8.1 - 2017-01-05

Changed

  • Fixed docs link.

0.8.0 - 2017-01-05

Added

  • Marker now implements From and Into traits for u8.
  • Add read_int function, which allows to read integer values and automatically cast to the expected result type even if they aren't the same. An additional OutOfRange error will be returned in the case of failed numeric cast.
  • Add NumValueReadError enum with additional OutOfRange variant to be able to detect whether integer decoding failed because of out of range.

Changed

  • Update byteorder dependency to 1.0.
  • Unexpected EOF variant has been merged with the default one in the I/O Error enum.
  • Function write_sint now encodes 64-bit signed integers using the most compact representation.
  • Function write_uint now encodes 64-bit unsigned integers using the most compact representation.
  • Rename read_array_size function to read_array_len for consistency.
  • Rename read_map_size function to read_map_len for consistency.
  • Make FixedValueWriteError struct private. All functions, that previously returned such kind of error now return the Standard I/O error.

Removed

  • Move Value and ValueRef enums and associated functions into the separate rmpv crate.
  • Remove conversions from byteorder crate errors, because since 0.5 there are no such errors.
  • Remove write_sint_eff function - its functionality can now be done using write_sint instead.
  • Remove write_uint_eff function - its functionality can now be done using write_uint instead.
  • Integral functions like read_*_loosely and read_*_fit were removed in favor of generic read_int function, which allows to read integral values and cast them to the specified result type even if they aren't the same.
  • Remove read_bin_borrow function.

0.7.5 - 2016-07-24

Added

  • Add is_* methods for Value for checking its underlying value without explicit matching.
  • Add as_* methods for Value for borrowing its underlying value.
  • Value is now indexable by integer.

0.7.4 - 2016-07-18

Added

  • Value now can be initialized from primitive values using From trait.

0.7.3 - 2015-09-23

Changed

  • Restricted upper version limit for dependencies.

0.7.2 - 2015-09-23

Added

  • Implemented Display trait for Value.

0.7.1 - 2015-09-11

Changed

  • Use to_owned instead of to_string while converting ValueRef into Value. This change improves ValueRef::to_owned() method performance by approximately 10-20%.s Also after this change it's cheaper to decode directly into ValueRef with further converting to owned value rather than decoding directly into Value.

0.7.0 - 2015-08-24

Changed

  • The big single crate has been refactored, which results in three crates: rmp, rmp-serialize and rmp-serde.

0.6.0 - 2015-08-17

Added

  • Initial support for Serde serializer and deserializer.
  • Efficient bytes serialization with Serde.
  • Efficient binaries deserialization with Serde using ByteBuf.
  • Rust serialize Decoder now can provide the underlying reader both by reference or by value, destroying itself in the last case.

Changed

  • Update well-formness for BigEndianRead trait to be implemented only for sized types.
  • Renamed PositiveFixnum marker to FixPos.
  • Renamed NegativeFixnum marker to FixNeg.
  • Renamed FixedString marker to FixStr.
  • Renamed FixedArray marker to FixArray.
  • Renamed FixedMap to FixMap.
  • Minor documentation updates and markdown fixes.

0.5.1 - 2015-08-10

Changed

  • Now the rustc_serialize::Encoder should encode signed integers using the most effective underlying representation.
  • Now the rustc_serialize::Decoder should properly map integers to the result type if the decoded value fits in result type's range.

0.5.0 - 2015-08-01

Added

  • New ValueRef value struct represents MessagePack'ed value, but unlike an owning Value it owns nothing except its structure. It means that all strings and binaries it contains are borrowed from the byte array from which the value was created.
  • New BorrowRead trait, which looks like a standard BufRead but unlike the standard this has an explicit internal buffer lifetime, which allows to borrow from underlying buffer while mutating the type.
  • Encoding function for ValueRef with its own error category.
  • Decoding function for ValueRef with its own error category.
  • Conversion method from ValueRef to Value.
  • More benchmarks and tests.

Changed

  • Derive Copy trait for Integer and Float enums.

0.4.0 - 2015-07-17

Added

  • Low level write_str function allows to serialize the UTF-8 encoded strings the most efficient way.
  • Low level write_bin function allows to serialize the binary array the most efficient way.
  • Implemented std::error::Error trait for error types.

0.3.2 - 2015-07-05

Changed

  • Encoder now should return proper error types.

0.3.1 - 2015-06-28

Changed

  • Stabilizing enum serialization/deserialization. Now every enum is serialized as [int, [args...]].
  • Suppressed some warnings appeared on updated compiler.

0.3.0 - 2015-06-25

Added

  • Enum serialization/deserialization.

0.2.2 - 2015-06-15

Changed

  • Minor integer decoding performance tweaking.

0.2.1 - 2015-05-30

Added

  • Benchmarking module.

Changed

  • Increased string decoding performance by ~30 times.
  • Exported read_value function to the rmp::decode module.
  • Exported Value struct to the root crate namespace.

0.2.0 - 2015-05-27

Added

  • Introducing a Value algebraic data type, which represents an owning MessagePack object. It can be found in rmp::value module.
  • The Value ADT encoding and decoding functions.
  • Low-level ext type decoders.

0.1.1 - 2015-05-18

Changed

  • Added documentation and repository site in Cargo.toml.
  • Added keywords to ease searching using crates.io.

0.1.0 - 2015-05-15

Added

  • Initial commit.
  • This CHANGELOG file to hopefully serve as an evolving example of a standardized open source project CHANGELOG.