# Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## 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](https://github.com/serde-rs/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.