2.0.0 stable (#742)
Prepare for 2.0.0 stable release --------- Co-authored-by: Zoey Riordan <zoey@dos.cafe>
This commit is contained in:
parent
2c87442fe6
commit
bd694430e4
|
|
@ -25,8 +25,8 @@
|
|||
"rust": [
|
||||
"stable",
|
||||
"beta",
|
||||
"nightly"
|
||||
# "1.55.0" TODO: Pick latest stable version when we release 2.0
|
||||
"nightly",
|
||||
"1.85.0"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
|
@ -81,7 +81,7 @@
|
|||
],
|
||||
"rust": [
|
||||
"stable",
|
||||
# "1.55.0" TODO: Pick latest stable version when we release 2.0
|
||||
"1.85.0"
|
||||
],
|
||||
"features": [
|
||||
"",
|
||||
|
|
|
|||
|
|
@ -3,13 +3,14 @@ members = ["derive", "compatibility"]
|
|||
|
||||
[package]
|
||||
name = "bincode"
|
||||
version = "2.0.0-rc.3" # remember to update html_root_url and bincode_derive
|
||||
version = "2.0.0" # remember to update html_root_url and bincode_derive
|
||||
authors = [
|
||||
"Ty Overby <ty@pre-alpha.com>",
|
||||
"Zoey Riordan <zoey@dos.cafe>",
|
||||
"Victor Koenders <bincode@trangar.com>",
|
||||
]
|
||||
exclude = ["logo.svg", "examples/*", ".gitignore", ".github/"]
|
||||
rust-version = "1.85.0"
|
||||
|
||||
publish = true
|
||||
|
||||
|
|
@ -31,7 +32,7 @@ alloc = ["serde?/alloc"]
|
|||
derive = ["bincode_derive"]
|
||||
|
||||
[dependencies]
|
||||
bincode_derive = { path = "derive", version = "2.0.0-rc.3", optional = true }
|
||||
bincode_derive = { path = "derive", version = "2.0.0", optional = true }
|
||||
serde = { version = "1.0", default-features = false, optional = true }
|
||||
unty = "0.0.3"
|
||||
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ maximum size limit. Malicious inputs will fail upon deserialization.
|
|||
|
||||
### What is Bincode's MSRV (minimum supported Rust version)?
|
||||
|
||||
Bincode 2.0 is still in development and does not yet have a targeted MSRV. Once 2.0 is fully released the MSRV will be locked. After this point any changes to the MSRV are considered a breaking change for semver purposes.
|
||||
Bincode 2.0 has an MSRV of 1.85.0. Any changes to the MSRV are considered a breaking change for semver purposes, except when certain features are enabled. Features affecting MSRV are documented in the crate root.
|
||||
|
||||
### Why does bincode not respect `#[repr(u8)]`?
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
[package]
|
||||
name = "bincode_derive"
|
||||
version = "2.0.0-rc.3" # remember to update bincode
|
||||
version = "2.0.0" # remember to update bincode
|
||||
authors = [
|
||||
"Zoey Riordan <zoey@dos.cafe>",
|
||||
"Victor Koenders <bincode@trangar.com>",
|
||||
]
|
||||
edition = "2021"
|
||||
rust-version = "1.85.0"
|
||||
|
||||
repository = "https://github.com/bincode-org/bincode"
|
||||
documentation = "https://docs.rs/bincode_derive"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ Bincode 2 now has an optional dependency on `serde`. You can either use `serde`,
|
|||
|
||||
## From `Options` to `Configuration`
|
||||
|
||||
Bincode 1 had the [Options](https://docs.rs/bincode/1/bincode/config/trait.Options.html) trait. This has been replaced with the [Configuration](https://docs.rs/bincode/2.0.0-rc/bincode/config/struct.Configuration.html) struct.
|
||||
Bincode 1 had the [Options](https://docs.rs/bincode/1/bincode/config/trait.Options.html) trait. This has been replaced with the [Configuration](https://docs.rs/bincode/2.0.0/bincode/config/struct.Configuration.html) struct.
|
||||
|
||||
If you're using `Options`, you can change it like this:
|
||||
|
||||
|
|
@ -46,10 +46,10 @@ If so, make sure to include bincode 2 with the `serde` feature enabled, and use
|
|||
|
||||
```toml
|
||||
[dependencies]
|
||||
bincode = { version = "2.0.0-rc", features = ["serde"] }
|
||||
bincode = { version = "2.0.0", features = ["serde"] }
|
||||
|
||||
# Optionally you can disable the `derive` feature:
|
||||
# bincode = { version = "2.0.0-rc", default-features = false, features = ["std", "serde"] }
|
||||
# bincode = { version = "2.0.0", default-features = false, features = ["std", "serde"] }
|
||||
```
|
||||
|
||||
Then replace the following functions: (`Configuration` is `bincode::config::legacy()` by default)
|
||||
|
|
@ -70,13 +70,13 @@ Then replace the following functions: (`Configuration` is `bincode::config::lega
|
|||
|
||||
```toml,ignore
|
||||
[dependencies]
|
||||
bincode = "2.0.0-rc"
|
||||
bincode = "2.0.0"
|
||||
|
||||
# If you need `no_std` with `alloc`:
|
||||
# bincode = { version = "2.0.0-rc", default-features = false, features = ["derive", "alloc"] }
|
||||
# bincode = { version = "2.0.0", default-features = false, features = ["derive", "alloc"] }
|
||||
|
||||
# If you need `no_std` and no `alloc`:
|
||||
# bincode = { version = "2.0.0-rc", default-features = false, features = ["derive"] }
|
||||
# bincode = { version = "2.0.0", default-features = false, features = ["derive"] }
|
||||
```
|
||||
|
||||
Replace or add the following attributes. You are able to use both `serde-derive` and `bincode-derive` side-by-side.
|
||||
|
|
@ -86,7 +86,7 @@ Replace or add the following attributes. You are able to use both `serde-derive`
|
|||
| `#[derive(serde::Serialize)]` | `#[derive(bincode::Encode)]` |
|
||||
| `#[derive(serde::Deserialize)]` | `#[derive(bincode::Decode)]` |
|
||||
|
||||
**note:** To implement these traits manually, see the documentation of [Encode](https://docs.rs/bincode/2.0.0-rc/bincode/enc/trait.Encode.html) and [Decode](https://docs.rs/bincode/2.0.0-rc/bincode/de/trait.Decode.html).
|
||||
**note:** To implement these traits manually, see the documentation of [Encode](https://docs.rs/bincode/2.0.0/bincode/enc/trait.Encode.html) and [Decode](https://docs.rs/bincode/2.0.0/bincode/de/trait.Decode.html).
|
||||
|
||||
**note:** For more information on using `bincode-derive` with external libraries, see [below](#bincode-derive-and-libraries).
|
||||
|
||||
|
|
@ -107,10 +107,10 @@ Then replace the following functions: (`Configuration` is `bincode::config::lega
|
|||
Currently not many libraries support the traits `Encode` and `Decode`. There are a couple of options if you want to use `#[derive(bincode::Encode, bincode::Decode)]`:
|
||||
|
||||
- Enable the `serde` feature and add a `#[bincode(with_serde)]` above each field that implements `serde::Serialize/Deserialize` but not `Encode/Decode`
|
||||
- Enable the `serde` feature and wrap your field in [bincode::serde::Compat](https://docs.rs/bincode/2.0.0-rc/bincode/serde/struct.Compat.html) or [bincode::serde::BorrowCompat](https://docs.rs/bincode/2.0.0-rc/bincode/serde/struct.BorrowCompat.html)
|
||||
- Enable the `serde` feature and wrap your field in [bincode::serde::Compat](https://docs.rs/bincode/2.0.0/bincode/serde/struct.Compat.html) or [bincode::serde::BorrowCompat](https://docs.rs/bincode/2.0.0/bincode/serde/struct.BorrowCompat.html)
|
||||
- Make a pull request to the library:
|
||||
- Make sure to be respectful, most of the developers are doing this in their free time.
|
||||
- Add a dependency `bincode = { version = "2.0.0-rc", default-features = false, optional = true }` to the `Cargo.toml`
|
||||
- Implement [Encode](https://docs.rs/bincode/2.0.0-rc/bincode/enc/trait.Encode.html)
|
||||
- Implement [Decode](https://docs.rs/bincode/2.0.0-rc/bincode/de/trait.Decode.html)
|
||||
- Add a dependency `bincode = { version = "2.0.0", default-features = false, optional = true }` to the `Cargo.toml`
|
||||
- Implement [Encode](https://docs.rs/bincode/2.0.0/bincode/enc/trait.Encode.html)
|
||||
- Implement [Decode](https://docs.rs/bincode/2.0.0/bincode/de/trait.Decode.html)
|
||||
- Make sure both of these implementations have a `#[cfg(feature = "bincode")]` attribute.
|
||||
|
|
|
|||
14
docs/spec.md
14
docs/spec.md
|
|
@ -15,8 +15,8 @@ By default, this serialization format uses little-endian byte order for basic nu
|
|||
|
||||
Endianness can be configured with the following methods, allowing for big-endian serialization when required:
|
||||
|
||||
- [`with_big_endian`](https://docs.rs/bincode/2.0.0-rc/bincode/config/struct.Configuration.html#method.with_big_endian)
|
||||
- [`with_little_endian`](https://docs.rs/bincode/2.0.0-rc/bincode/config/struct.Configuration.html#method.with_little_endian)
|
||||
- [`with_big_endian`](https://docs.rs/bincode/2.0.0/bincode/config/struct.Configuration.html#method.with_big_endian)
|
||||
- [`with_little_endian`](https://docs.rs/bincode/2.0.0/bincode/config/struct.Configuration.html#method.with_little_endian)
|
||||
|
||||
### Byte Order Considerations
|
||||
|
||||
|
|
@ -31,7 +31,7 @@ Endianness can be configured with the following methods, allowing for big-endian
|
|||
- Encoded as a single byte
|
||||
- `false` is represented by `0`
|
||||
- `true` is represented by `1`
|
||||
- During deserialization, values other than 0 and 1 will result in an error [`DecodeError::InvalidBooleanValue`](https://docs.rs/bincode/2.0.0-rc/bincode/error/enum.DecodeError.html#variant.InvalidBooleanValue)
|
||||
- During deserialization, values other than 0 and 1 will result in an error [`DecodeError::InvalidBooleanValue`](https://docs.rs/bincode/2.0.0/bincode/error/enum.DecodeError.html#variant.InvalidBooleanValue)
|
||||
|
||||
### Numeric Types
|
||||
|
||||
|
|
@ -62,7 +62,7 @@ Endianness can be configured with the following methods, allowing for big-endian
|
|||
- Surrogate code points (0xD800 to 0xDFFF) are not valid
|
||||
- Invalid Unicode characters can be acquired via unsafe code, this is handled as:
|
||||
- during serialization: data is written as-is
|
||||
- during deserialization: an error is raised [`DecodeError::InvalidCharEncoding`](https://docs.rs/bincode/2.0.0-rc/bincode/error/enum.DecodeError.html#variant.InvalidCharEncoding)
|
||||
- during deserialization: an error is raised [`DecodeError::InvalidCharEncoding`](https://docs.rs/bincode/2.0.0/bincode/error/enum.DecodeError.html#variant.InvalidCharEncoding)
|
||||
- No additional metadata or encoding scheme beyond the raw code point value
|
||||
|
||||
All tuples have no additional bytes, and are encoded in their specified order, e.g.
|
||||
|
|
@ -92,7 +92,7 @@ Encoding an unsigned integer v (of any type excepting u8/i8) works as follows:
|
|||
|
||||
`usize` is being encoded/decoded as a `u64` and `isize` is being encoded/decoded as a `i64`.
|
||||
|
||||
See the documentation of [VarintEncoding](https://docs.rs/bincode/2.0.0-rc/bincode/config/struct.Configuration.html#method.with_variable_int_encoding) for more information.
|
||||
See the documentation of [VarintEncoding](https://docs.rs/bincode/2.0.0/bincode/config/struct.Configuration.html#method.with_variable_int_encoding) for more information.
|
||||
|
||||
### FixintEncoding
|
||||
|
||||
|
|
@ -100,7 +100,7 @@ See the documentation of [VarintEncoding](https://docs.rs/bincode/2.0.0-rc/binco
|
|||
- Enum discriminants are encoded as u32
|
||||
- Lengths and usize are encoded as u64
|
||||
|
||||
See the documentation of [FixintEncoding](https://docs.rs/bincode/2.0.0-rc/bincode/config/struct.Configuration.html#method.with_fixed_int_encoding) for more information.
|
||||
See the documentation of [FixintEncoding](https://docs.rs/bincode/2.0.0/bincode/config/struct.Configuration.html#method.with_fixed_int_encoding) for more information.
|
||||
|
||||
## Enums
|
||||
|
||||
|
|
@ -224,7 +224,7 @@ assert_eq!(encoded.as_slice(), &[
|
|||
- During serialization, the string is encoded as a sequence of the given bytes.
|
||||
- Rust strings are UTF-8 encoded by default, but this is not enforced by bincode
|
||||
- No normalization or transformation of text
|
||||
- If an invalid UTF-8 sequence is encountered during decoding, an [`DecodeError::Utf8`](https://docs.rs/bincode/2.0.0-rc/bincode/error/enum.DecodeError.html#variant.Utf8) error is raised
|
||||
- If an invalid UTF-8 sequence is encountered during decoding, an [`DecodeError::Utf8`](https://docs.rs/bincode/2.0.0/bincode/error/enum.DecodeError.html#variant.Utf8) error is raised
|
||||
|
||||
```rust
|
||||
let str = "Hello 🌍"; // Mixed ASCII and Unicode
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "arbitrary"
|
||||
|
|
@ -19,10 +19,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "bincode"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0"
|
||||
dependencies = [
|
||||
"bincode_derive",
|
||||
"serde",
|
||||
"unty",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -30,14 +31,14 @@ name = "bincode-fuzz"
|
|||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"bincode 1.3.3",
|
||||
"bincode 2.0.0-rc.3",
|
||||
"bincode 2.0.0",
|
||||
"libfuzzer-sys",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bincode_derive"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0"
|
||||
dependencies = [
|
||||
"virtue",
|
||||
]
|
||||
|
|
@ -121,7 +122,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
|
||||
|
||||
[[package]]
|
||||
name = "virtue"
|
||||
version = "0.0.13"
|
||||
name = "unty"
|
||||
version = "0.0.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9dcc60c0624df774c82a0ef104151231d37da4962957d691c011c852b2473314"
|
||||
checksum = "a1a88342087869553c259588a3ec9ca73ce9b2d538b7051ba5789ff236b6c129"
|
||||
|
||||
[[package]]
|
||||
name = "virtue"
|
||||
version = "0.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1"
|
||||
|
|
|
|||
16
src/lib.rs
16
src/lib.rs
|
|
@ -15,13 +15,13 @@
|
|||
//!
|
||||
//! # Features
|
||||
//!
|
||||
//! |Name |Default?|Supported types for Encode/Decode|Enabled methods |Other|
|
||||
//! |------|--------|-----------------------------------------|-----------------------------------------------------------------|-----|
|
||||
//! |std | Yes |`HashMap` and `HashSet`|`decode_from_std_read` and `encode_into_std_write`|
|
||||
//! |alloc | Yes |All common containers in alloc, like `Vec`, `String`, `Box`|`encode_to_vec`|
|
||||
//! |atomic| Yes |All `Atomic*` integer types, e.g. `AtomicUsize`, and `AtomicBool`||
|
||||
//! |derive| Yes |||Enables the `BorrowDecode`, `Decode` and `Encode` derive macros|
|
||||
//! |serde | No |`Compat` and `BorrowCompat`, which will work for all types that implement serde's traits|serde-specific encode/decode functions in the [serde] module|Note: There are several [known issues](serde/index.html#known-issues) when using serde and bincode|
|
||||
//! |Name |Default?|Affects MSRV?|Supported types for Encode/Decode|Enabled methods |Other|
|
||||
//! |------|--------|-------------|-----------------------------------------|-----------------------------------------------------------------|-----|
|
||||
//! |std | Yes | No |`HashMap` and `HashSet`|`decode_from_std_read` and `encode_into_std_write`|
|
||||
//! |alloc | Yes | No |All common containers in alloc, like `Vec`, `String`, `Box`|`encode_to_vec`|
|
||||
//! |atomic| Yes | No |All `Atomic*` integer types, e.g. `AtomicUsize`, and `AtomicBool`||
|
||||
//! |derive| Yes | No |||Enables the `BorrowDecode`, `Decode` and `Encode` derive macros|
|
||||
//! |serde | No | Yes (MSRV reliant on serde)|`Compat` and `BorrowCompat`, which will work for all types that implement serde's traits|serde-specific encode/decode functions in the [serde] module|Note: There are several [known issues](serde/index.html#known-issues) when using serde and bincode|
|
||||
//!
|
||||
//! # Which functions to use
|
||||
//!
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
//! [`net::TcpStream`]: std::net::TcpStream
|
||||
//!
|
||||
|
||||
#![doc(html_root_url = "https://docs.rs/bincode/2.0.0-rc.3")]
|
||||
#![doc(html_root_url = "https://docs.rs/bincode/2.0.0")]
|
||||
#![crate_name = "bincode"]
|
||||
#![crate_type = "rlib"]
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ mod utils;
|
|||
|
||||
use bincode::error::DecodeError;
|
||||
use std::{
|
||||
ffi::{CStr, CString},
|
||||
ffi::CString,
|
||||
io::{Cursor, Seek, SeekFrom},
|
||||
net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6},
|
||||
path::{Path, PathBuf},
|
||||
|
|
@ -128,7 +128,7 @@ fn test_std_commons() {
|
|||
let mut buffer = [0u8; 1024];
|
||||
|
||||
// &CStr
|
||||
let cstr = CStr::from_bytes_with_nul(b"Hello world\0").unwrap();
|
||||
let cstr = c"Hello world";
|
||||
let len = bincode::encode_into_slice(cstr, &mut buffer, config).unwrap();
|
||||
let (decoded, len): (CString, usize) =
|
||||
bincode::decode_from_slice(&buffer[..len], config).unwrap();
|
||||
|
|
|
|||
Loading…
Reference in New Issue