v2.0.0
Stable! Finally! After 4 years in development! Many changes have made it in since rc.3, including (unfortunately) some last minute breaking changes. But documentation has been cleaned up to a point where we finally feel comfortable committing to things as they are.
If you haven't been following along with the 2.0 changes here is a brief overview
- Completely rewritten API decoupled from serde
no_std
support- Official format specification
- Default configuration changes
- Increase MSRV to 1.85.0
What's Changed since 1.3.1
- Fix
WithOtherTrailing
andWithOtherIntEncoding
by @luben in #342 - Update docs to highlight differences between DefaultOptions and fns by @apgoetz in #373
- Address questions regarding suitability for storage and untrusted inputs by @mbr in #346
- Fixed a stray comment. by @manuthambi in #360
- update CI to new branching scheme by @ZoeyR in #376
- clarify msrv support by @ZoeyR in #375
- fix linting ci error by @ZoeyR in #377
- prep branch for 2.0 work by @ZoeyR in #379
- Update URLs and some cleanups by @atouchet in #383
- fix typo by @ehooi in #392
- Edit version badge link by @atouchet in #389
- Optimize varint parsing by @saethlin in #337
- Fix CI on trunk by @ZoeyR in #408
- Update logo by @ZoeyR in #407
- Make bincode_derive 0 dependencies by @VictorKoenders in #409
- Config rewrite by @ZoeyR in #412
- Reintroduce varint optimizations by @ZoeyR in #414
- Feature/deserde by @ZoeyR in #413
- Updated readme.md and added a test for the examples by @VictorKoenders in #417
- Update authors to reflect current code state by @ZoeyR in #418
- Add necessary metadata to bincode_derive by @ZoeyR in #420
- Replace test-all-features with a manual CI matrix by @VictorKoenders in #419
- Made the zigzag encoding examples compile and run by @VictorKoenders in #421
- Fix some typos by @Seppel3210 in #423
- Generate qualified Result type in derive by @andrenth in #430
- Fixes for 427 by @VictorKoenders in #428
- split off BorrowDecode from Decode in bincode_derive by @VictorKoenders in #432
- functions to enable encoding/decoding serde types by @VictorKoenders in #422
- Allow serde types to be Decode/Encoded by @VictorKoenders in #434
- Release 2.0.0-alpha.1 by @VictorKoenders in #435
- Added Decode/Encode for HashMap<K, V> by @VictorKoenders in #438
- Added test case for a borrowed str by @VictorKoenders in #441
- Fixed clippy warnings by @VictorKoenders in #447
- Impl BorrowDecode for Option<&[u8]> and Option<&str> by @songzhi in #446
- Feature/config limit by @VictorKoenders in #439
- [Breaking change] Made all
decode_from_slice
also return the number of bytes read by @VictorKoenders in #445 - Extract virtue by @VictorKoenders in #443
- Made the CI also check the benchmarks, fixed compile issue in benchmarks by @VictorKoenders in #449
- Made the derive macros automatically implement the required traits on generic arguments by @VictorKoenders in #454
- Release v2.0.0-alpha.2 by @VictorKoenders in #455
- feat: Make
Configuration
functionsconst
by @Popog in #456 - Fix failed varint bench by @ygf11 in #457
- Updated readme, added a paragraph on why we don't support #[repr(u8)] by @VictorKoenders in #461
- Bump virtue 0.0.4 by @VictorKoenders in #463
- Fixed derive impl on an empty enum by @VictorKoenders in #462
- Release v2.0.0-beta.0 by @VictorKoenders in #464
- Fix overflow error when deserializing invalid Duration by @5225225 in #465
- Fix panic with invalid system time by @5225225 in #469
- Add fuzzing harness, try to decode into various types by @5225225 in #468
- Switched Decode and BorrowDecode to take &mut D by @VictorKoenders in #470
- Switch Encode to take &mut E by @ZoeyR in #471
- Implemented the newly stabilized CString::from_vec_with_nul method by @VictorKoenders in #473
- Made SerdeDecoder attempt to allocate memory before complaining by @VictorKoenders in #475
- Update documentation by @VictorKoenders in #480
- Moved Configuration::standard() and ::legacy() to the config module by @VictorKoenders in #481
- Feature/improve serde by @VictorKoenders in #477
- made the serde functions consistent with the base bincode functions by @VictorKoenders in #483
- Migration guide by @VictorKoenders in #482
- Release v2.0.0-beta.1 by @VictorKoenders in #484
- Run code coverage on all features by @ZoeyR in #485
- Added #[serde(untagged)] to the documentation of attributes that don't work by @VictorKoenders in #486
- Fixed an error in bincode derive where it would implement the wrong trait if a generic parameter is present by @VictorKoenders in #487
- Release v2.0.0-beta.2 by @VictorKoenders in #488
- Added a table to the documentation to pick which functions to use by @VictorKoenders in #490
- Fix a bunch of typos by @poljar in #492
- Return an error if a decoded slice length doesn't fit into usize by @poljar in #491
- Updated to virtue 0.0.6, added #[bincode(crate = other)] attribute by @VictorKoenders in #494
- Bumped dependency of virtue to 0.0.7 by @VictorKoenders in #495
- Bincode 1 compatibility framework by @VictorKoenders in #489
- Added documentation on how to add compatibility tests by @VictorKoenders in #497
- Made the compatibility check also include bincode 2 serde, and added comments by @VictorKoenders in #501
- Fix CString compatibility with bincode v1 by @ZoeyR in #502
- Fuzz for compatibility with bincode v1 by @5225225 in #498
- Fix/issue 500 by @VictorKoenders in #503
- Add Membership test by @ppamorim in #500
- Release v2.0.0-beta.3 by @VictorKoenders in #505
- Reference implementations for Reader and Writer by @BRA1L0R in #507
- Made config::standard() implement .write_fixed_array_header() by default by @VictorKoenders in #509
- Added HashSet by @VictorKoenders in #516
- Made the compat fuzzer ignore any LimitExceeded error by @VictorKoenders in #515
- Release 2.0.0-rc.1 by @VictorKoenders in #510
- Add zoxide under Bincode in the Wild by @ajeetdsouza in #525
- Made the Cow Encode constraints more permissive by @VictorKoenders in #524
- Added
additional
to theUnexpectedEnd
decode error by @VictorKoenders in #522 - Allow encoding/decoding of HashMap and HashSet with custom hash algorithms by @bronsonp in #529
- Added
std::error::Error::source
by @VictorKoenders in #530 - Added cross platform tests workflow by @VictorKoenders in #534
- Fix riscv32 atomics and fix tests on 32-bit platforms by @xobs in #533
- Fix cross platform tests by @VictorKoenders in #540
- Switched to weak dependencies by @VictorKoenders in #538
- Fix tuple struct encoding in serde by @ZoeyR in #549
- Rewrite: seperated Decode and BorrowDecode by @VictorKoenders in #526
- Add impl Encode for [T], where T: Encode by @cronokirby in #542
- Add impls for Rc<[T]> and Arc<[T]> by @maciejhirsz in #552
- Shrink
DecodeError
from 48 to 32 bytes on 64-bit arch by @maciejhirsz in #553 - Added windows and macos runner by @VictorKoenders in #554
- Implement
Decode
forBox<str>
by @SabrinaJewson in #562 - Fixed clippy warning and updated DecodeError by @VictorKoenders in #574
- Updated test dependencies: uuid and glam by @VictorKoenders in #576
- Made
peek_read
take&mut self
by @VictorKoenders in #572 - Prefixed the E and D generic argument in bincode-derive by @VictorKoenders in #573
- Implement Default for Configuration by @VictorKoenders in #575
- Document what the usizes are for (#546) in #577
- Clarify config::legacy() doc to match config::standard() by @trevyn in #580
- Implement Encode for tuples with up-to 16 elements. by @gz in #583
- Document configuration generics by @trevyn in #581
- Extended BorrowDecode for HashMap to support custom hashers by @Speedy37 in #585
- Allow decoding with custom
DeserializeSeed
by @MrGVSV in #586 - Added
[serde(tag)]
to the list of tags that are known to give issues by @VictorKoenders in #584 - Release 2.0.0-rc.2 by @VictorKoenders in #588
- Bump
virtue
to 0.0.9 and add test for #537 by @trevyn in #591 - Encode variant index instead of variant value by @trevyn in #593
- Create CODE_OF_CONDUCT.md by @ZoeyR in #597
- Move generated files to
target/generated/bincode
by @trevyn in #600 - Add DecodeError::Other by @odysa in #602
- Fixed new clippy lint in rust 1.65.0 by @VictorKoenders in #603
- Add CIFuzz GitHub Action by @DavidKorczynski in #604
- Fixed new clippy warnings by @VictorKoenders in #617
- Improved encoding and decoding speed of Vec by @VictorKoenders in #619
- Bumped virtue to 0.0.13 by @VictorKoenders in #626
- Disabled i686-linux-andoid and x86_64-linux-android CI as they fail for external reasons by @VictorKoenders in #627
- Made arrays never encode their length by @VictorKoenders in #625
- Release rc.3 by @VictorKoenders in #628
- Fix typos in Spec.md enum example by @bigbass1997 in #630
- fix(doc): broken intra link by @elpiel in #634
- Added dependabot by @VictorKoenders in #636
- Bump actions/checkout from 1 to 3 by @dependabot in #638
- Bump codecov/codecov-action from 2 to 3 by @dependabot in #639
- Update glam requirement from 0.21 to 0.24 by @dependabot in #640
- Update criterion requirement from 0.3 to 0.4 by @dependabot in #637
- Update criterion requirement from 0.4 to 0.5 by @dependabot in #641
- Update virtue requirement from 0.0.13 to 0.0.14 by @dependabot in #645
- Bump actions/upload-artifact from 1 to 3 by @dependabot in #651
- Allow generics in impl_borrow_decode by @dullbananas in #635
- Bump actions/checkout from 3 to 4 by @dependabot in #660
- Fixed a new clippy warning by @VictorKoenders in #661
- Reverted 'static constraint on T in Vec and [T; N] by @VictorKoenders in #663
- Fix cross compilations by @VictorKoenders in #664
- Added unty dependency and added type checks by @VictorKoenders in #667
- Fix inconsistent naming between serde and non-serde functions by @VictorKoenders in #671
- Update virtue requirement from 0.0.14 to 0.0.15 by @dependabot in #673
- Compat and BorrowCompat Debug and Display implementations by @aegroto in #670
- Add missing test for encode_utf8 by @CXWorks in #683
- Add getters for current configuration values by @shahn in #681
- Use const functions where possible by @richardpringle in #684
- Implement Encode & Decode for Wrapping types by @mzachar in #686
- Fixed broken commit to trunk by @VictorKoenders in #687
- Update glam requirement from 0.24 to 0.25 by @dependabot in #688
- Add LICENSE.md to derive/ by @jfsulliv in #698
- Update virtue requirement from 0.0.15 to 0.0.16 by @dependabot in #692
- Update spec for
Option<T>
encoding by @mkeeter in #702 - Fixed #707 by @Vrtgs in #708
- Miri check by @VictorKoenders in #704
- Fixed broken miri CI script by @VictorKoenders in #712
- Fixed a warning in a derive test that would cause CI to fail by @VictorKoenders in #716
- Put clarifying language in migration guide regarding the serde:: and non-serde:: paths by @mcclure in #715
- Fixed new clippy lints by @VictorKoenders in #721
- Update virtue requirement from 0.0.16 to 0.0.17 by @dependabot in #719
- Add prerelease warning to readme.md by @xaocon in #728
- Update virtue requirement from 0.0.17 to 0.0.18 by @dependabot in #731
- Fix typo in spec.md by @DragonDev1906 in #730
- Implement basic traits for
Compat
andBorrowCompat
by @skibon02 in #734 - chore typo fix README.md by @Hack666r in #737
- Fix CI and clippy by @VictorKoenders in #747
- Document making serde an optional dependency by @VictorKoenders in #746
- Finally got around to updating the spec based on feedback by @VictorKoenders in #741
- Expose types implementing
serde::Serializer
andDeserializer
by @fjarri in #729 - make serde decode api consistent by @ZoeyR in #748
- Decode context by @ZoeyR in #749
- 2.0.0 stable by @VictorKoenders in #742
New Contributors
- @luben made their first contribution in #342
- @apgoetz made their first contribution in #373
- @mbr made their first contribution in #346
- @manuthambi made their first contribution in #360
- @ehooi made their first contribution in #392
- @saethlin made their first contribution in #337
- @VictorKoenders made their first contribution in #409
- @Seppel3210 made their first contribution in #423
- @andrenth made their first contribution in #430
- @songzhi made their first contribution in #446
- @Popog made their first contribution in #456
- @ygf11 made their first contribution in #457
- @5225225 made their first contribution in #465
- @poljar made their first contribution in #492
- @ppamorim made their first contribution in #500
- @BRA1L0R made their first contribution in #507
- @ajeetdsouza made their first contribution in #525
- @bronsonp made their first contribution in #529
- @xobs made their first contribution in #533
- @cronokirby made their first contribution in #542
- @maciejhirsz made their first contribution in #552
- @SabrinaJewson made their first contribution in #562
- @trevyn made their first contribution in #580
- @gz made their first contribution in #583
- @Speedy37 made their first contribution in #585
- @MrGVSV made their first contribution in #586
- @odysa made their first contribution in #602
- @DavidKorczynski made their first contribution in #604
- @bigbass1997 made their first contribution in #630
- @elpiel made their first contribution in #634
- @dependabot made their first contribution in #638
- @dullbananas made their first contribution in #635
- @aegroto made their first contribution in #670
- @CXWorks made their first contribution in #683
- @shahn made their first contribution in #681
- @richardpringle made their first contribution in #684
- @mzachar made their first contribution in #686
- @jfsulliv made their first contribution in #698
- @mkeeter made their first contribution in #702
- @Vrtgs made their first contribution in #708
- @mcclure made their first contribution in #715
- @xaocon made their first contribution in #728
- @DragonDev1906 made their first contribution in #730
- @skibon02 made their first contribution in #734
- @Hack666r made their first contribution in #737
- @fjarri made their first contribution in #729
Full Changelog: v1.3.1...v2.0.0