- Add support for configurable metadata on fields, records, enums, fixed types, and
primitives via
Avro::Builder.extra_metadata_attributes. - Add support for field
orderattribute in serialized output. - Raise an error when invalid options are passed to a type instead of silently ignoring them.
- Add support for Ruby 3.4, and 4.0.
- Drop support for Avro < 1.11.
- Drop support for Ruby < 3.3.
- Add support for Avro 1.12.
- Add support for Ruby 3.2.
- Drop support for Ruby 2.6.
- Add support for Avro 1.11
- Add support for decimal logical types.
- Bug fix: Fix pretty formatting of schemas for Rails applications that don't use oj or yajl by removing the dependency on multi_json.
- Drop support for Avro < 1.9.
- Drop support for Ruby < 2.6.
- Add Ruby 3.0 support.
- Bug fix: Use multi_json to encode schemas and ensure that a JSON encoder is always present.
- Add support for enum defaults introduced in Avro v1.10.0.
- Allow avro version up to v1.10.x. Support will be added for new functionality in Avro v1.10 in a later release.
- Require avro version prior to v1.10.0.
- Add support for providing an explicit
namespaceonextend. - Default lookup to current namespace before falling back on global search.
- Add support for declaring types as abstract.
- File handling fixes.
- Allow
filetypeto be specified in rake task to generate Avro JSON schema files.
- Add support for type macros.
- Allow methods for complex and primitive types to be used at the top-level and anywhere that a type name is accepted.
- Add support for generating schemas that contain logical types. The official
Ruby
avrogem does not yet support logical types. Theavro-salsify-forkgem can be used to encode and decode logical types. - Add support for
union,map, andarraymethods to embed those types within other complex types. - Add methods for primitives types (
string,int,long,float, etc) that allow those types, including a logical type attribute, to be embedded within complex types.
- Include DSL file line numbers in stack traces.
- Add optional
filenamekeyword argument toAvro::Builder.buildand.build_schema. Filename can now be used instead of a DSL string to build schemas. When a filename is used, the file location of any error is included in the stack trace.
- Add rake task to generate Avro JSON schema files for all DSL files under a configurable root directory.
- Add Railtie to configure
#{Rails.root}/avro/dslas a load path, and defineavro:generaterake task.
- Add
Avro::Builder::SchemaStoreto load DSL files and return schema objects.
- Only allow
type_nameandtype_namespaceoptions for naming named types defined inline. - Only allow first argument to set name, and
namespaceoption for top-level types. - Only allow
aliasesattribute to set aliases for top-level types.
- Support recursive definitions.
- Coerce aliases to be represented as an array.
- Only allow name and namespace to be set via options, not via a block, for record, enum, and fixed types.
- Allow
docandaliasesto be set on both a field and a type defined inline for the field. To set these attributes on the inline typetype_docandtype_aliasesmust be used in the DSL.
- Support references to named types that are defined inline.
- Raise an error for duplicate definitions with the same fullname.
- Add validation for required DSL attributes that are not specified.
- Allow name to be configured via a block for top-level record, enum, and fixed types.
- Fix a bug that allowed the partial matching of filenames.
- Fix a bug that prevented namespace from being specified as an option on records.
- Fix a bug that prevented loading references qualified by namespace.
- Do not attempt to import schema files for builtin types.
- A
nulldefault should automatically be added for optional fields to match the:nullfirst member of the union.
- Add support for nested records. This includes the ability to reference a previously defined record as a type.
- Add support for
:uniontype. - Make
fixedsyntax more flexible. Bothfixed :f, 7andfixed :f, size: 7are now supported and equivalent.
- Initial release