diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d0fff201..ec1c0bf9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,133 +7,106 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [1.0.0-alpha.6](https://github.com/near/borsh-rs/compare/borsh-v1.0.0-alpha.5...borsh-v1.0.0-alpha.6) - 2023-10-02 - -### Added -- add `borsh::object_length` helper ([#236](https://github.com/near/borsh-rs/pull/236)) - -### Other -- add examples for `borsh::to_vec`, `borsh::to_writer`, `borsh::object_length` ([#238](https://github.com/near/borsh-rs/pull/238)) -- [**breaking**] completely remove deprecated `BorshSerialize::try_to_vec` ([#221](https://github.com/near/borsh-rs/pull/221)) - -## [1.0.0-alpha.5](https://github.com/near/borsh-rs/compare/borsh-v1.0.0-alpha.4...borsh-v1.0.0-alpha.5) - 2023-09-26 - -### Added -- [**breaking**] add `DiscriminantValue` to `Definition::Enum::variants` tuples ([#232](https://github.com/near/borsh-rs/pull/232)) -- [**breaking**] add `length_width` to `schema::Definition::Sequence` ([#229](https://github.com/near/borsh-rs/pull/229)) -- add definition of `String`/`str` ([#226](https://github.com/near/borsh-rs/pull/226)) -- [**breaking**] add `Definition::Sequence::length_range` field ([#220](https://github.com/near/borsh-rs/pull/220)) -- [**breaking**] add `Definition::Primitive` ([#222](https://github.com/near/borsh-rs/pull/222)) -- max_size: various small refactoring ([#223](https://github.com/near/borsh-rs/pull/223)) -- check `Definition::Enum`’s `tag_width` when validating schema ([#224](https://github.com/near/borsh-rs/pull/224)) -- add (de)serialisation + schema for more `core::ops::Range...` types (full, open-ended, inclusive) ([#213](https://github.com/near/borsh-rs/pull/213)) -- add `BorshSchema` implementation for `core::num::NonZero...` integers ([#214](https://github.com/near/borsh-rs/pull/214)) -- [**breaking**] introduce `borsh::io` with either items of `std:io` or private `borsh::nostd_io` module reexported (`std` or `no_std`) ([#212](https://github.com/near/borsh-rs/pull/212)) -- Introduce `borsh::max_serialized_size` function, `borsh::schema::BorshSchemaContainer::for_type` method ([#209](https://github.com/near/borsh-rs/pull/209)) - -### Other -- [**breaking**] rename `"Tuple"` -> `"(T0, T1, T2...)"` (`schema::Declaration`) ([#234](https://github.com/near/borsh-rs/pull/234)) -- [**breaking**] rename `"nil"` -> `"()"`, `"string"` -> `"String"`, `"nonzero_u16"` -> `"NonZeroU16"` (`schema::Declaration`) ([#233](https://github.com/near/borsh-rs/pull/233)) -- [**breaking**] rename `"Array"` -> `"[T0; N]"` (`schema::Declaration`) ([#235](https://github.com/near/borsh-rs/pull/235)) -- [**breaking**] split `ValidationError` from `MaxSizeError`; `validate` and `max_serialized_size` made `BorshSchemaContainer`'s methods ([#219](https://github.com/near/borsh-rs/pull/219)) -- [**breaking**] declare and rename schema feature to be unstable__ (may break in 1.x versions) -- Add Definition::Enum::tag_width field ([#215](https://github.com/near/borsh-rs/pull/215)) - -## [1.0.0-alpha.4](https://github.com/near/borsh-rs/compare/borsh-v1.0.0-alpha.3...borsh-v1.0.0-alpha.4) - 2023-09-04 - -### Added -- [**breaking**] raise bound on keys in hashcollections `PartialOrd` -> `Ord` ([#203](https://github.com/near/borsh-rs/pull/203)) -- forbid most collections from containing zst elements/keys ([#202](https://github.com/near/borsh-rs/pull/202)) -- add `#[borsh(crate = ...)]` item-level attribute ([#210](https://github.com/near/borsh-rs/pull/210)) -- forbid multiple `borsh` attr occurencies ([#199](https://github.com/near/borsh-rs/pull/199)) - -### Other -- various flaws correction ([#205](https://github.com/near/borsh-rs/pull/205)) -- [**breaking**] deprecate `try_to_vec` method from `BorshSerialize` ([#206](https://github.com/near/borsh-rs/pull/206)) -- [**breaking**] make `BorshSchema::add_definition` default implementation a free-standing func ([#204](https://github.com/near/borsh-rs/pull/204)) -- remove `#[non_exhaustive]` on `borsh::schema::Definition` ([#200](https://github.com/near/borsh-rs/pull/200)) - -## [1.0.0-alpha.3](https://github.com/near/borsh-rs/compare/borsh-v1.0.0-alpha.2...borsh-v1.0.0-alpha.3) - 2023-08-16 - -### Other -- [**breaking**] renamed #[borsh_skip] to #[borsh(skip)] ([#192](https://github.com/near/borsh-rs/pull/192)) -- split up schema derive functions ([#191](https://github.com/near/borsh-rs/pull/191)) - -## [1.0.0-alpha.2](https://github.com/near/borsh-rs/compare/borsh-v1.0.0-alpha.1...borsh-v1.0.0-alpha.2) - 2023-08-10 - -### Other -- [**breaking**] borsh_init to borsh(init). ([#187](https://github.com/near/borsh-rs/pull/187)) - -## [1.0.0-alpha.1](https://github.com/near/borsh-rs/compare/borsh-v0.11.0...borsh-v1.0.0-alpha.1) - 2023-08-07 +## [1.0.0](https://github.com/near/borsh-rs/compare/borsh-v0.10.3...borsh-v1.0.0) - 2023-10-03 ### Bug Fixes -- Unused fields warn, fields for inner structs of derived BorshSchema method (#172) -- #[borsh_skip] on field of struct enum variant (BorshSerialize) (#174) -- Filter out foreign attributes in `BorshSchema` derive for enum (#177) +- No-std tests did not run due to dev-dependencies re-enabling std feature ([#144](https://github.com/near/borsh-rs/pull/144)) +- Unused fields warn, fields for inner structs of derived `BorshSchema` method ([#172](https://github.com/near/borsh-rs/pull/172)) +- #[borsh_skip] on field of struct enum variant (`BorshSerialize`) ([#174](https://github.com/near/borsh-rs/pull/174)) +- Filter out foreign attributes in `BorshSchema` derive for enum ([#177](https://github.com/near/borsh-rs/pull/177)) ### Documentation -- Create a brief documentation of crate's features (#159) -- Mention `schema` feature in doc.rs (#166) +- Create a brief documentation of crate's features ([#159](https://github.com/near/borsh-rs/pull/159)) +- Mention `schema` feature in doc.rs ([#166](https://github.com/near/borsh-rs/pull/166)) +- Add examples for `borsh::to_vec`, `borsh::to_writer`, `borsh::object_length` ([#238](https://github.com/near/borsh-rs/pull/238)) +- `near-sdk-rs` migration guide to `1.0.0` ([#201](https://github.com/near/borsh-rs/pull/201)) +- `nearcore` migration guide to 1.0.0 ([#198](https://github.com/near/borsh-rs/pull/198)) ### Features -- Forbid Vectors of Zero-sized types from de-/serialization to resolve the RUSTSEC-2023-0033 (#145) -- Add top-level `from_slice` and `from_reader` helper functions to make the API nicer (#142) -- [**breaking**] Add `#[borsh(use_discriminant = )]` attribute that changes enum discriminant de- and serialization behavior -- [**breaking**] Remove `BinaryHeap` support (#161) -- Sets/maps benches for reference point (#164) -- Enforce canonicity on `HashSet/BTreeSet/HashMap/BTreeMap` (#162) -- [**breaking**] Support recursive structures! (#178) - - `BorshSerialize`, `BorshDeserialize`, `BorshSchema` derives may break - - derives may require patching bounds with `#[borsh(bound(..))]` / `#[borsh(schema(params = ...))]` -- Bounds for ser/de derive and schema_params for schema derive attributes (#180) -- Derive attribute for 3rd party structs/enums as fields (#182) +- [**breaking**] Ser/de enum discriminant ([#138](https://github.com/near/borsh-rs/pull/138)) +- Add optional `bson::oid::ObjectId` support ([#135](https://github.com/near/borsh-rs/pull/135)) +- Add `BorshSchema` for `PhantomData`, `BTreeMap` and `BTreeSet` ([#93](https://github.com/near/borsh-rs/pull/93)) +- [**breaking**] Forbid Vectors of Zero-sized types from de-/serialization to resolve the RUSTSEC-2023-0033 ([#145](https://github.com/near/borsh-rs/pull/145)) +- Add top-level `from_slice` and `from_reader` helper functions to make the API nicer ([#142](https://github.com/near/borsh-rs/pull/142)) +- [**breaking**] Remove `BinaryHeap` support ([#161](https://github.com/near/borsh-rs/pull/161)) +- Sets/maps benches for reference point ([#164](https://github.com/near/borsh-rs/pull/164)) +- [**breaking**] Enforce canonicity on `HashSet/BTreeSet/HashMap/BTreeMap` ([#162](https://github.com/near/borsh-rs/pull/162)) +- Support recursive structures! ([#178](https://github.com/near/borsh-rs/pull/178)) +- Bounds for ser/de derive and schema_params for schema derive attributes ([#180](https://github.com/near/borsh-rs/pull/180)) +- Derive attribute for 3rd party structs/enums as fields ([#182](https://github.com/near/borsh-rs/pull/182)) +- [**breaking**] Forbid most collections from containing zst elements/keys ([#202](https://github.com/near/borsh-rs/pull/202)) +- Forbid multiple `borsh` attr occurencies ([#199](https://github.com/near/borsh-rs/pull/199)) +- [**breaking**] Raise bound on keys in hashcollections `PartialOrd` -> `Ord` ([#203](https://github.com/near/borsh-rs/pull/203)) +- Add `#[borsh(crate = ...)]` item-level attribute ([#210](https://github.com/near/borsh-rs/pull/210)) +- Introduce `borsh::max_serialized_size` function, `borsh::schema::BorshSchemaContainer::for_type` method ([#209](https://github.com/near/borsh-rs/pull/209)) +- [**breaking**] Introduce `borsh::io` with either items of `std:io` or private `borsh::nostd_io` module reexported (`std` or `no_std`) ([#212](https://github.com/near/borsh-rs/pull/212)) +- Add `BorshSchema` implementation for `core::num::NonZero...` integers ([#214](https://github.com/near/borsh-rs/pull/214)) +- Add (de)serialisation + schema for more `core::ops::Range...` types (full, open-ended, inclusive) ([#213](https://github.com/near/borsh-rs/pull/213)) +- Check `schema::Definition::Enum`’s `tag_width` when validating schema ([#224](https://github.com/near/borsh-rs/pull/224)) +- Max_size: various small refactoring ([#223](https://github.com/near/borsh-rs/pull/223)) +- [**breaking**] Add `schema::Definition::Primitive` ([#222](https://github.com/near/borsh-rs/pull/222)) +- [**breaking**] Add `schema::Definition::Sequence::length_range` field ([#220](https://github.com/near/borsh-rs/pull/220)) +- Add `schema::Definition` of `String`/`str` ([#226](https://github.com/near/borsh-rs/pull/226)) +- [**breaking**] Add `length_width` to `schema::Definition::Sequence` ([#229](https://github.com/near/borsh-rs/pull/229)) +- [**breaking**] Add `DiscriminantValue` to `schema::Definition::Enum::variants` tuples ([#232](https://github.com/near/borsh-rs/pull/232)) +- Add `borsh::object_length` helper ([#236](https://github.com/near/borsh-rs/pull/236)) ### Miscellaneous Tasks -- Bump proc-macro-crate versions (#149) -- Add tests job for MSRV (1.65.0) (#151) -- [**breaking**] Hide maybestd from public interface, despite it being technically available by new name of __maybestd (#153) -- Fix broken reference-style link in minimum supported version badge (#154) -- Remove a bunch of clippy-related TODOs (uninlined_format_args) (#156) -- Simpler bounds on Rc/Arc impls (#167) -- Invited @dj8yfo to CODEOWNERS (#169) -- [**breaking**] Replace ErrorKind::InvalidInput with ErrorKind::InvalidData as per original std::io meaning (#170) +- Apply Schema on field_type ([#140](https://github.com/near/borsh-rs/pull/140)) +- Upgrade plain-HTTP links to HTTPS in Cargo.toml files ([#141](https://github.com/near/borsh-rs/pull/141)) +- Release ([#143](https://github.com/near/borsh-rs/pull/143)) +- Bump proc-macro-crate versions ([#149](https://github.com/near/borsh-rs/pull/149)) +- Add tests job for MSRV (1.65.0) ([#151](https://github.com/near/borsh-rs/pull/151)) +- [**breaking**] Hide maybestd from public interface, despite it being technically available by new name of __maybestd ([#153](https://github.com/near/borsh-rs/pull/153)) +- Fix broken reference-style link in minimum supported version badge ([#154](https://github.com/near/borsh-rs/pull/154)) +- Remove a bunch of clippy-related TODOs (uninlined_format_args) ([#156](https://github.com/near/borsh-rs/pull/156)) +- Simpler bounds on Rc/Arc impls ([#167](https://github.com/near/borsh-rs/pull/167)) +- Invited @dj8yfo to CODEOWNERS ([#169](https://github.com/near/borsh-rs/pull/169)) +- [**breaking**] Replace ErrorKind::InvalidInput with ErrorKind::InvalidData as per original std::io meaning ([#170](https://github.com/near/borsh-rs/pull/170)) +- Release ([#146](https://github.com/near/borsh-rs/pull/146)) +- Release ([#190](https://github.com/near/borsh-rs/pull/190)) +- Update release-plz.toml with `changelog_include` ([#196](https://github.com/near/borsh-rs/pull/196)) +- Release ([#197](https://github.com/near/borsh-rs/pull/197)) +- Remove `#[non_exhaustive]` on `borsh::schema::Definition` ([#200](https://github.com/near/borsh-rs/pull/200)) +- [**breaking**] Make `BorshSchema::add_definition` default implementation a free-standing func ([#204](https://github.com/near/borsh-rs/pull/204)) +- [**breaking**] Deprecate `try_to_vec` method from `BorshSerialize` ([#206](https://github.com/near/borsh-rs/pull/206)) +- Various flaws correction ([#205](https://github.com/near/borsh-rs/pull/205)) +- Release ([#207](https://github.com/near/borsh-rs/pull/207)) +- [**breaking**] Declare and rename schema feature to be unstable__ (may break in 1.x versions) +- [**breaking**] Split `ValidationError` from `MaxSizeError`; `validate` and `max_serialized_size` made `BorshSchemaContainer`'s methods ([#219](https://github.com/near/borsh-rs/pull/219)) +- [**breaking**] Rename `"Array"` -> `"[T0; N]"` (`schema::Declaration`) ([#235](https://github.com/near/borsh-rs/pull/235)) +- [**breaking**] Rename `"nil"` -> `"()"`, `"string"` -> `"String"`, `"nonzero_u16"` -> `"NonZeroU16"` (`schema::Declaration`) ([#233](https://github.com/near/borsh-rs/pull/233)) +- [**breaking**] Rename `"Tuple"` -> `"(T0, T1, T2...)"` (`schema::Declaration`) ([#234](https://github.com/near/borsh-rs/pull/234)) +- Release ([#217](https://github.com/near/borsh-rs/pull/217)) +- [**breaking**] Completely remove deprecated `BorshSerialize::try_to_vec` ([#221](https://github.com/near/borsh-rs/pull/221)) +- Release ([#239](https://github.com/near/borsh-rs/pull/239)) ### Refactor -- [**breaking**] Make `hashbrown` dependency optional, `hashbrown` feature (#155) -- [**breaking**] `BorshSchemaContainer` fields non-pub, `HashMap` -> `BTreeMap` in schema everywhere (#165) -- [**breaking**] Move derive under #[cfg(feature = "derive")] (#168) -- Introduce `__private` module with macro runtime (#171) -- [**breaking**] Unsplit and removal of *-internal crates (#185) - - `borsh-schema-derive-internal` and `borsh-derive-internal` crates won't be published anymore +- [**breaking**] Make `hashbrown` dependency optional, `hashbrown` feature ([#155](https://github.com/near/borsh-rs/pull/155)) +- [**breaking**] `BorshSchemaContainer` fields non-pub, `HashMap` -> `BTreeMap` in schema everywhere ([#165](https://github.com/near/borsh-rs/pull/165)) +- [**breaking**] Move derive under #[cfg(feature = "derive")] ([#168](https://github.com/near/borsh-rs/pull/168)) +- Introduce `__private` module with macro runtime ([#171](https://github.com/near/borsh-rs/pull/171)) +- [**breaking**] Unsplit and removal of *-internal crates ([#185](https://github.com/near/borsh-rs/pull/185)) +- Extract repeating parts of logic in derives ([#188](https://github.com/near/borsh-rs/pull/188)) +- [**breaking**] Borsh_init to borsh(init). ([#187](https://github.com/near/borsh-rs/pull/187)) +- Split up schema derive functions ([#191](https://github.com/near/borsh-rs/pull/191)) +- [**breaking**] Renamed #[borsh_skip] to #[borsh(skip)] ([#192](https://github.com/near/borsh-rs/pull/192)) ### Testing -- Add `insta` snapshots to borsh/tests (#157) -- `insta` tests for prettified `TokenStream`-s in `borsh*derive-internal` (#176) +- Add `insta` snapshots to borsh/tests ([#157](https://github.com/near/borsh-rs/pull/157)) +- `insta` tests for prettified `TokenStream`-s in `borsh*derive-internal` ([#176](https://github.com/near/borsh-rs/pull/176)) ### Ci +- Use release-plz and specify common rust version correctly ([#134](https://github.com/near/borsh-rs/pull/134)) - Only release-plz after other checks pass -## [0.11.0](https://github.com/near/borsh-rs/compare/borsh-v0.10.3...borsh-v0.11.0) - 2023-05-31 - -### Added -- add BorshSchema for PhantomData, BTreeMap and BTreeSet ([#93](https://github.com/near/borsh-rs/pull/93)) -- Add optional bson::oid::ObjectId support ([#135](https://github.com/near/borsh-rs/pull/135)) -- [**breaking**] ser/de enum discriminant ([#138](https://github.com/near/borsh-rs/pull/138)) - -### Fixed -- no-std tests did not run due to dev-dependencies re-enabling std feature ([#144](https://github.com/near/borsh-rs/pull/144)) - -### Other -- use release-plz and specify common rust version correctly ([#134](https://github.com/near/borsh-rs/pull/134)) -- Upgrade plain-HTTP links to HTTPS in Cargo.toml files ([#141](https://github.com/near/borsh-rs/pull/141)) - ## [0.10.3] - 2023-03-22 - Add optional bytes/bytesmut support