CHANGELOG.md in avromatic-1.0.0 vs CHANGELOG.md in avromatic-2.0.0

- old
+ new

@@ -1,6 +1,21 @@ # avromatic changelog +## v2.0.0 (unreleased) +- Remove [virtus](https://github.com/solnic/virtus) dependency resulting in a 3x performance improvement in model instantation and 1.4x - 2.0x performance improvement in Avro serialization and Avromatic code simplification. +- Raise `Avromatic::Model::CoercionError` when attribute values can't be coerced to the target type in model constructors and attribute setters. Previously coercion errors weren't detected until Avro serialization or an explicit call to `valid?`. +- Prevent model instances from being constructed with unknown attributes. Previously unknown attributes were ignored. + This can be disabled by setting `Avromatic.allow_unknown_attributes` to `true`. + WARNING: Setting `Avromatic.allow_unknown_attributes` to `true` will result in incorrect union member coercions + if an earlier union member is satisfied by a subset of the latter union member's attributes. +- Validate required attributes are present when serializing to Avro for better error messages. Explicit + validation can still be done by calling the `valid?` or `invalid?` methods from the + [ActiveModel::Validations](https://edgeapi.rubyonrails.org/classes/ActiveModel/Validations.html) interface + but errors will now appear under the `:base` key. Previously these errors were detected late in the Avro serialization process resulting in hard to understand error messages. +- Support for custom types in unions with more than one non-null type. +- Drop support for Ruby < 2.3 and Rails < 5.0. +- Call `super()` in model constructor making it easier to define class/module hierarchies for models. + ## v1.0.0 - No changes. ## v0.33.0 - Fix compatibility with avro-patches v0.4.0.