News About Apache Avro

New Project Logo

The Apache Avro project has a new project logo!

The old logo was derived from the logo of a (now defunct) aircraft manufacturer in Great Britain. This posed a risk, as the Apache foundation would not contest legal action (even if extremely unlikely).

But thanks to Emma Kellam, we now have a new logo! She has made several logo designs, and after some debate and several votes (it was a close call!), we can announce the new logo:

The new logo is an homage to the previous logo, which is also triangular and uses blue colours. The paper airplane embodies keywords like ‘fast’, ‘small’ and ’efficient’. The blobby tail left behind by the airplane makes the icon unique and embodies ‘flow’ and ’transformation’.

All in all a very nice logo for Apache Avro, which embodies the same keywords.

Thanks for all your hard work Emma, and welcome!

New committer: Christophe Le Saec

The Project Management Committee (PMC) for Apache Avro has invited Christophe Le Saec to become a committer and we are pleased to announce that he has accepted.

Christophe definitely puts in the work and, has an impressive breadth of knowledge about the languages of the Avro SDK!

As an ASF project, we tend to be very conservative about making changes, and Christophe brings in fresh ideas and very quickly proposes concrete implementations to prove them. He has a good understanding of Avro, the motivation to move things forward, and the expertise to make changes! At the same time, he’s easy to talk to and flexible in coming to a consensus.

Thanks for all your hard work!

New committer: Oscar Westra van Holthe - Kind

The Project Management Committee (PMC) for Apache Avro has invited Oscar Westra van Holthe - Kind to become a committer and we are pleased to announce that he has accepted.

Oscar has done some really solid work on the IDL and JavaCC parts of the Java SDK. We trust his work and think it’s exceptionally high quality. From the start, he has already doing much of the work of a committer, demonstrated by his continuous presence in commenting JIRA, reviewing PRs as well as encouraging and insightful words on the mailing list.

As a bonus, in his spare time, Oscar also maintains the IntelliJ plugin for IDL support!

Thanks for all your hard work, and welcome!

New PMC member: Michael A. Smith

The Project Management Committee (PMC) for Apache Avro has invited Michael A. Smith to the PMC and we are pleased to announce that he has accepted.

Notably, Michael has taken a leadership role in ensuring the quality of the Python SDK, lending his expertise to ensure that Avro has a place in the python community, while keeping our implementation up-to-date with standards and modern versions. It’s not an easy task, and we appreciate all he does!

New PMC member: Martin Grigorov

The Project Management Committee (PMC) for Apache Avro is pleased to announce that Martin Grigorov has accepted our invitation to become a PMC member. He has has been active, reliable and responsive to the community and a solid contributor to various SDKs, bringing well-thought out reviews and comments to both old and new PRs and JIRA. He definitely stepped up for the website refactoring and preparing for the 1.11.1 release!

Please join me in welcoming Martin to the Avro PMC!

New committer: Zoltan Csizmadia

The Project Management Committee (PMC) for Apache Avro has invited Zoltan Csizmadia to become a committer and we are pleased to announce that he has accepted.

Zoltan has been present in the C# SDK for over two years and has really increased his activity in maintaining this language in the last few months. He knows the technology, but more importantly, he is patient and works well with those of us who rely on the expertise of others. Recently, he has been engaging with other contributors to increase the maintainability and quality of the dotnet code, and we have confidence in his decisions to balance stability of the established code and the expectations of modern C# developers.

Being a committer enables easier contribution to the project since there is no need to go via the patch submission process. This should enable better productivity.

Please join me in congratulating Zoltan on his recognition of great work thus far in our community.

New committer: Martin Grigorov

The Project Management Committee (PMC) for Apache Avro has invited Martin Grigorov to become a committer and we are pleased to announce that he has accepted.

Over the last few months, he has been active, reliable and easy to work with on PRs and on the mailing list. His work is of high quality, and he has a breadth of experience in many of the SDK languages. I’m especially keen to point out the work he’s been doing on the website!

Being a committer enables easier contribution to the project since there is no need to go via the patch submission process. This should enable better productivity.

It’s great to have you as part of the team, Martin!

New committer: David Mollitor

The Project Management Committee (PMC) for Apache Avro has invited David Mollitor to become a committer and we are pleased to announce that he has accepted.

Since 2017, David has raised and fixed many issues in the Java SDK. Recently he’s been finding and providing fixes for subtle performance issues. His work is always high-quality and he is reactive and pleasant to talk with on code reviews and JIRA.

Being a committer enables easier contribution to the project since there is no need to go via the patch submission process. This should enable better productivity.

It’s great to have you as part of the team, David!

Avro joins Apache

Avro has joined the Apache Software Foundation as a Hadoop subproject.

Releases

Avro 1.11.4

The Apache Avro community is pleased to announce the release of Avro 1.11.4!

All signed release artifacts, signatures and verification instructions can be found here

This release addresses 4 Jira issues only in the Java SDK. All other SDKs have no difference to their 1.12.0 release, so please use 1.12.0 for them!

Highlights

Java

  • AVRO-3985: Restrict trusted packages in ReflectData and SpecificData
  • AVRO-3989: Maven Plugin Always Recompiles IDL Files
  • AVRO-3880: Upgrade maven-antrun-plugin to 3.1.0
  • AVRO-3748: issue with DataFileSeekableInput.SeekableInputStream.skip

Language SDK / Convenience artifacts

Thanks to everyone for contributing!

Avro 1.12.0

The Apache Avro community is pleased to announce the release of Avro 1.12.0!

All signed release artifacts, signatures and verification instructions can be found here

Changes

Sub-task

  • [AVRO-3122]: TestAvroKeyOutputFormat and other avro-mapred tests fail with Java 17
  • [AVRO-3308]: Include a curated list of resources
  • [AVRO-3384]: Define C# Coding Style Guidelines
  • [AVRO-3449]: Add an onboarding guide for contributors, committers and PMC
  • [AVRO-3458]: Add test coverage for GenericRecord
  • [AVRO-3488]: Fix Spelling Mistakes
  • [AVRO-3490]: Fix IDE0016 Use throw expression
  • [AVRO-3491]: Fix IDE0020 Use pattern matching to avoid ‘is’ check followed by a cast
  • [AVRO-3497]: Fix IDE0075 Simplify conditional expression
  • [AVRO-3499]: Fix IDE0079 Remove unnecessary suppression
  • [AVRO-3538]: Improve the contributions page
  • [AVRO-3700]: Publish Java SBOM artifacts with CycloneDX
  • [AVRO-3813]: Use list of primitiv
  • [AVRO-3826]: Commons test for C++ module
  • [AVRO-3916]: Add nanos support for the Rust SDK
  • [AVRO-3926]: [Rust] Allow UUID to serialize to Fixed[16]

Bug fixes

  • [AVRO-265]: Protocol namespace always written out in toJson
  • [AVRO-1318]: Python schema should store fingerprints
  • [AVRO-1463]: Undefined values cause warnings when unions with null serialized
  • [AVRO-1517]: Unicode strings are accepted as bytes and fixed type by perl API
  • [AVRO-1521]: Inconsistent behavior of Perl API with ‘boolean’ type
  • [AVRO-1523]: Perl API: int/long type minimum value checks are off by one
  • [AVRO-1737]: Unhashable type: ‘RecordSchema’
  • [AVRO-1830]: Avro-Perl DataFileReader chokes when avro.codec is absent
  • [AVRO-2254]: Unions with 2 records declared downward fail
  • [AVRO-2284]: Incorrect EnumSymbol initialization in TestReadingWritingDataInEvolvedSchemas.java
  • [AVRO-2498]: UUID generation is not working avro 1.9 version
  • [AVRO-2598]: C++ standard of library implies C++ standard of projects using Avro
  • [AVRO-2722]: impl/DataFile.cc use of boost::mt19937 for DataFileWriteBase::makeSync is not thread safe
  • [AVRO-2771]: Java 1.9.X doesn’t allow having Error in a Record
  • [AVRO-2862]: C# Primitive Schema losing metadata
  • [AVRO-2883]: Avrogen (csharp) namespace mapping missing for references
  • [AVRO-2885]: Providing a decimal number in an int field doesn’t return an error
  • [AVRO-2943]: Map comparison between Utf8 and String keys fails
  • [AVRO-2987]: pkg-config has a broken Requires: section
  • [AVRO-3003]: c# apache avro codegen - default value for enum types are not setting up properly
  • [AVRO-3133]: EnumAdjust.resolve should compare unqualified name rather than full name
  • [AVRO-3216]: Rust: failure reading multiple use of named schemas in file
  • [AVRO-3232]: Rust deserializer: add missing matches to deserialize_any union and string/map
  • [AVRO-3234]: Rust: Add new codec: zstandard
  • [AVRO-3240]: Schema deserialization is not backwards compatible
  • [AVRO-3259]: When opening an avro file which is encoded with anything besides none and deflate, it defaults to none and then returns garbage.
  • [AVRO-3273]: [Java] avro-maven-plugin breaks on old versions of Maven
  • [AVRO-3316]: [Rust] build breaks in docker build
  • [AVRO-3322]: JavaScript: Buffer is not defined in browser environment
  • [AVRO-3331]: Rust: Cannot extract Decimal value
  • [AVRO-3350]: Validate that Default value is found in Enum
  • [AVRO-3386]: [PHP] Build failing on github and travis
  • [AVRO-3410]: [Rust] lint failure
  • [AVRO-3433]: Rust: The canonical form should preserve schema references
  • [AVRO-3448]: Rust: Encoding Panic with valid schema and input
  • [AVRO-3452]: [rust] Derive Deserialize produces invalid Name struct
  • [AVRO-3460]: [rust] Value::validate does not validate against Schema Refs
  • [AVRO-3461]: [rust] Resolution Flow does not handle schema Refs
  • [AVRO-3466]: Rust: serialize Schema to JSON loses inner namespace names
  • [AVRO-3468]: Default values for logical types not supported
  • [AVRO-3471]: Microseconds logical types are rounded to milliseconds
  • [AVRO-3481]: Input and output variable type mismatch
  • [AVRO-3482]: DataFileReader should reuse MAGIC data read from inputstream
  • [AVRO-3486]: Protocol namespace not parsed correctly if protocol is defined by full name
  • [AVRO-3495]: Rust: Record serialization is sensitive to order of fields in struct
  • [AVRO-3511]: Rust: Fix the parsing of decimal logical type
  • [AVRO-3516]: [rust] Avro Derive not working outside of repo context
  • [AVRO-3529]: [Rust][branch-1.11] Cargo.toml is a virtual manifest, requires actual package
  • [AVRO-3534]: Rust: Use dependency-review-action only for pull_request events
  • [AVRO-3536]: Union type not inheriting type conversions
  • [AVRO-3549]: [rust] Avro reader fails if it tries to read data compressed with codec that is not enabled in features
  • [AVRO-3560]: avro ignores input after end of avsc json
  • [AVRO-3568]: C# ToParsingForm normalizes logical type to “logical” rather than base type
  • [AVRO-3581]: Usage of deprecated configuration properties in Velocity
  • [AVRO-3585]: Unable to encode Value::String as Schema::UUID
  • [AVRO-3587]: C: Fix possible heap-buffer-overflow in avro::DataFileReaderBase::readDataBlock()
  • [AVRO-3595]: Release Notes missing for 1.11.1
  • [AVRO-3597]: Recent changes in GenericDatumReader.java break compatibility
  • [AVRO-3601]: C++ API header contains breaking include
  • [AVRO-3612]: Report specific location of incompatibility in record schema
  • [AVRO-3613]: Unions cannot have more than one logical type in C#
  • [AVRO-3617]: [C++] Integer overflow risks with Validator::count_ and Validator::counters_
  • [AVRO-3618]: [Java] TestBinaryDecoder should check consistency with directBinaryDecoder
  • [AVRO-3619]: [Java] TestBinaryDecoder should check consistency with directBinaryDecoder
  • [AVRO-3622]: Python compatibility check fails if record with and without namespace are compared
  • [AVRO-3625]: [Rust] UnionSchema.is_nullable() should return true if any of the variants is Schema::Null
  • [AVRO-3631]: Fix serialization of structs containing Fixed fields
  • [AVRO-3632]: Union defaults are not handled as per the specification
  • [AVRO-3642]: GenericSingleObjectReader::read_value fails on non-exhaustive read
  • [AVRO-3645]: Fix deserialization of enum with unit () type
  • [AVRO-3650]: Fix C++ Build on Manjaro
  • [AVRO-3656]: Vulnerabilities from dependencies - jackson-databind & commons-text
  • [AVRO-3657]: Computation of initial buffer size in OutputBuffer makes no sense
  • [AVRO-3659]: Typo in python example
  • [AVRO-3662]: [Ruby] Ruby 2.6 CI workflow fails since a while
  • [AVRO-3663]: rust crate apache_avro_derive creates invalid schemas for raw identifiers
  • [AVRO-3667]: [Python] Python 3.10 CI test fails since a while
  • [AVRO-3669]: Missing py.typed file
  • [AVRO-3674]: Value::Record containing enums fail to validate when using namespaces in Schema
  • [AVRO-3683]: Rust Writer, Reader can’t use Schemas with dependencies in other Schemas. i.e. The output of Schema::parse_list
  • [AVRO-3687]: Rust enum missing default
  • [AVRO-3688]: Schema resolution panics when a custom record field is included multiple times
  • [AVRO-3698]: [Java] SpecificData.getClassName must replace reserved words
  • [AVRO-3706]: AVDL nested imports cannot be resolved if path contains spaces
  • [AVRO-3712]: C++ Build Failure on Manjaro
  • [AVRO-3724]: C# JsonEncoder can’t handle nested array of records
  • [AVRO-3737]: [C] memcheck_test_avro_commons_schema is failing
  • [AVRO-3738]: [Build][C#] The release build fails with .NET 7.0 target
  • [AVRO-3747]: Make serde is_human_readable configurable
  • [AVRO-3748]: issue with DataFileSeekableInput.SeekableInputStream.skip
  • [AVRO-3749]: incorrect conflicting field when field name starts with symbols
  • [AVRO-3751]: FastReaderBuilder in multithread lead to infinite loop also blocking other threads
  • [AVRO-3755]: [Rust] Deserialization fails for reader schema with namespace
  • [AVRO-3756]: Support writing types back to the user in memory without writing files to disk
  • [AVRO-3767]: [Rust] Fix ref resolving in Union
  • [AVRO-3772]: [Rust] Deserialize Errors for an Unknown Enum Symbol instead of Returning Default
  • [AVRO-3773]: [Ruby] Decimal logical type fail to validate default
  • [AVRO-3775]: [Ruby] decimal default is not converted to BigDecimal
  • [AVRO-3780]: [Rust] Bug: decimal logical type usage through Fixed schema
  • [AVRO-3782]: [Rust] Incorrect decimal resolving
  • [AVRO-3785]: [Rust] Deserialization if reader schema has a namespace and a union with null and a record containing a reference type
  • [AVRO-3786]: [Rust] Deserialization results in FindUnionVariant error if the writer and reader have the same symbol but at different positions
  • [AVRO-3787]: [Rust] Deserialization fails to use default if an enum in a record in a union is given an unknown symbol
  • [AVRO-3800]: profile section should be declared in the root package.
  • [AVRO-3809]: Faulty validation of a type reference with implicit nested namespace
  • [AVRO-3814]: [Rust] Schema resolution fails when extending a nested record with a union type
  • [AVRO-3818]: Enclosing namespace should be inherited to the inner named types if they have no their own namespaces
  • [AVRO-3820]: Don’t allow invalid field names
  • [AVRO-3821]: Rust: Record (de?)serialization is sensitive to order of fields in struct
  • [AVRO-3823]: Show helpful error messages
  • [AVRO-3824]: The instruction for building the website should be more precise
  • [AVRO-3827]: Disallow duplicate field names
  • [AVRO-3830]: Handle namespace properly if a name starts with dot
  • [AVRO-3837]: Disallow invalid namespaces for the Rust binding
  • [AVRO-3846]: Race condition can happen among serde tests
  • [AVRO-3847]: Record field doesn’t accept default value if field type is union and the type of default value is pre-defined name
  • [AVRO-3849]: [Rust] “make readme” doesn’t work
  • [AVRO-3855]: [rust] lint/clippy fails in ubertool
  • [AVRO-3858]: [Build] Add some config to ./build.sh sign
  • [AVRO-3859]: [Build][C#] build.sh clean fails to remove some C# files
  • [AVRO-3861]: [Build] Add RAT exclusions for python docs
  • [AVRO-3865]: [Build][perl] Files are leftover after a build
  • [AVRO-3866]: [Build][Python] Files are leftover after a build
  • [AVRO-3876]: JacksonUtils is not symmetric
  • [AVRO-3881]: Writer ignores user metadata when the body is empty
  • [AVRO-3888]: CVE with common compress
  • [AVRO-3889]: Maven Plugin Always Recompiles IDL Files
  • [AVRO-3894]: [Rust] Record field aliases are not taken into account when serializing
  • [AVRO-3897]: Disallow invalid namespace in fully qualified name for Rust SDK
  • [AVRO-3898]: [rust] compatibility fails with different namespaces
  • [AVRO-3899]: [Rust] Invalid logical types should be ignored and treated as the underlying type
  • [AVRO-3912]: Issue with deserialization for BigDecimal in rust
  • [AVRO-3925]: [Rust]Decimal type serialization/deserialization is incorrect.
  • [AVRO-3928]: Avro Rust cannot parse default int logical-type date in a valid schema
  • [AVRO-3932]: [C]: fix variable reference in CMakeLists.txt
  • [AVRO-3940]: Failed to generate Java classes from multiple .avsc files containing same type
  • [AVRO-3953]: C# CodeGen.cs:503 incorrectly throws for “reserved keywords”
  • [AVRO-3955]: [Rust] unable to decode string enum from avro encoded data
  • [AVRO-3956]: NPE when calling Protocol#equals or hashCode
  • [AVRO-3957]: Fix typos in docs and examples
  • [AVRO-3964]: [Rust] Out-of-bounds panic
  • [AVRO-3970]: [Rust] incorrect compatibility checks with logicalType uuid
  • [AVRO-3974]: [Rust] incorrect compatibility checks with ref fields
  • [AVRO-3990]: [C++] avrogencpp generates invalid code for union with a reserved word
  • [AVRO-4004]: [Rust] Canonical form transformation does not strip the logicalType
  • [AVRO-4006]: [Java] DataFileReader does not correctly identify last sync marker when reading/skipping blocks
  • [AVRO-4011]: Schema generated via AvroSchema is not compatible with itself
  • [AVRO-4014]: [Rust] Sporadic value-schema mismatch with fixed struct

New Features

  • [AVRO-3223]: Support optional codecs in C# library
  • [AVRO-3358]: Update documentation in DataFileReader
  • [AVRO-3388]: Implement extra codecs for C# as seperate nuget packages
  • [AVRO-3506]: [rust] Implement Single Object Writer
  • [AVRO-3507]: [rust] Implement Single Object Reader
  • [AVRO-3591]: Improve interoperability tests with a common test suite
  • [AVRO-3592]: [C#] New packages are not included in the build distribution
  • [AVRO-3666]: New schema parser for all supported schema formats
  • [AVRO-3677]: Introduce Named Schema Formatters
  • [AVRO-3678]: [Rust] Support write float value to field defined as double
  • [AVRO-3725]: fix documentation of functions and variables
  • [AVRO-3764]: [Rust] Add schemata-based resolve method
  • [AVRO-3872]: [Build][C#] Warning on nuget upload about README
  • [AVRO-3922]: Add timestamp-nanos support to Ruby

Improvements

  • [AVRO-312]: Generate documentation for Python with Sphinx
  • [AVRO-530]: allow for mutual recursion in type definitions
  • [AVRO-1496]: Avro aliases support for C++
  • [AVRO-1514]: Clean up perl API dependencies
  • [AVRO-1938]: Python support for generating canonical forms of schema
  • [AVRO-2307]: Opt-in setting to improve GC behavior during deserialization?
  • [AVRO-2397]: Implement Alias Support for C++
  • [AVRO-2717]: Fix undefined behaviour in ZigZag encoding if Avro was compiled with the C++ standard less than C++20.
  • [AVRO-3001]: JsonEncode Decode support for C#
  • [AVRO-3043]: Remove redundant generic casts
  • [AVRO-3078]: C#: Logical type ’local-timestamp-millis’
  • [AVRO-3084]: Fix JavaScript interop test to read files generated by other languages on CI
  • [AVRO-3120]: Support Next Java LTS (Java 17)
  • [AVRO-3214]: Rust: Support “doc” for FixedSchema
  • [AVRO-3245]: Rust: Replace crc crate with crc32fast
  • [AVRO-3246]: Rust: Add new codec: bzip2
  • [AVRO-3248]: Rust: Support named types in UnionSchema
  • [AVRO-3255]: [Ruby] specify rubygems_mfa_required in gemspec metadata
  • [AVRO-3264]: Improve the Avro landing page
  • [AVRO-3274]: Request for C# API to implement a JSON Encoder
  • [AVRO-3284]: Rust: Upgrade to digest 0.10
  • [AVRO-3285]: Upgrade JavaCC and plugin
  • [AVRO-3292]: Bump Microsoft.NET.Test.Sdk from 16.11.0 to 17.0.0 in /lang/csharp
  • [AVRO-3302]: Rust: Implement interop tests for the Rust module
  • [AVRO-3303]: Rust: Add support for Xz codec
  • [AVRO-3306]: Java: Build failure with JDK 18+
  • [AVRO-3312]: Rust: Use u32 instead of i32 for the Enum/Union’s index field
  • [AVRO-3314]: ArgumentOutOfRangeException thrown in AvroDecimal IConvertable.ToType
  • [AVRO-3315]: Rust: Add support to back/cycle reference an alias
  • [AVRO-3317]: JavaScript: Update dependencies
  • [AVRO-3318]: Java: Bump slf4j.version from 1.7.32 to 1.7.33 in /lang/java
  • [AVRO-3319]: Rust: Update zstd requirement from 0.9.0+zstd.1.5.0 to 0.10.0+zstd.1.5.0 in /lang/rust
  • [AVRO-3320]: C#: Bump NUnit3TestAdapter from 4.2.0 to 4.2.1 in /lang/csharp
  • [AVRO-3321]: Java: Bump commons-cli from 1.4 to 1.5.0 in /lang/java
  • [AVRO-3323]: Remove suppression of CS1591 from AvroDecimal
  • [AVRO-3324]: Add omitted braces in AvroDecimal
  • [AVRO-3325]: Remove suppression of CA2225 in AvroDecimal
  • [AVRO-3326]: Styling - Elements should not be on a single line in AvroDecimal
  • [AVRO-3327]: Use Pattern Matching to avoid is check followed by cast
  • [AVRO-3328]: Documentation update for CodeGen class
  • [AVRO-3329]: Add omitted braces in CodeGen class
  • [AVRO-3330]: Avrogen avsc compiler should return 0 exit code if help requested
  • [AVRO-3333]: Spacing styling issues in CodeGen class
  • [AVRO-3334]: Simplify getNullableType in CodeGen
  • [AVRO-3335]: Throw exception for null parameter in GenerateNames
  • [AVRO-3336]: Deprecate obsolete namespace lookup in CodeGen
  • [AVRO-3337]: C#: Bump Log4net to a newer version
  • [AVRO-3340]: Enable standard code analysis and Intellisense
  • [AVRO-3341]: Update documentation of CodeGenException
  • [AVRO-3342]: Update documentation in CodeGenUtil
  • [AVRO-3343]: Update codec to styling standards
  • [AVRO-3344]: C#: Remove DataBlock class
  • [AVRO-3345]: Resolve unnecessary suppression of CA1052 in DataFileConstants
  • [AVRO-3346]: Update documentation to meet standards in DataFileReader
  • [AVRO-3347]: Update AddNamespace in CodeGen to meet styling guidelines
  • [AVRO-3348]: Update ProcessSchemas to meet styling guidelines
  • [AVRO-3349]: Update ProcessProtocols to meet styling guidelines
  • [AVRO-3352]: Use required minimum package version fo Newtonsoft only
  • [AVRO-3353]: Simplify naming in CodeGen
  • [AVRO-3354]: Simplify If statements in CodeGen
  • [AVRO-3355]: Fix order of Access Modifier in Codec
  • [AVRO-3356]: Simplify naming in DataFileReader
  • [AVRO-3357]: Properties only assigned in constructors should be marked readonly
  • [AVRO-3359]: Updated formatting in DeflateCodec
  • [AVRO-3360]: Update Header XML Documentation
  • [AVRO-3361]: Simplify if statement in NullCodec
  • [AVRO-3366]: Fix naming in GenericEnum
  • [AVRO-3367]: Remove unnecessary suppression of CA1307 from GenericEnum
  • [AVRO-3377]: Deserialization of record of mangled Java class throws ClassCastException
  • [AVRO-3404]: Extend the IDL syntax to serve as a .avsc equivalent as well
  • [AVRO-3405]: add API for user-provided metadata when writing to Object Container File
  • [AVRO-3407]: Test for user metadata in the interop tests
  • [AVRO-3415]: Add C# code coverage support
  • [AVRO-3416]: Benchmarking project for C#
  • [AVRO-3418]: [Rust] Fix clippy errors for Rust 1.59.0
  • [AVRO-3421]: Add tests for ArraySchema
  • [AVRO-3424]: C# Add support to parse string into Schema.Type
  • [AVRO-3427]: Add command line option to skip creation of directories based on namespace path
  • [AVRO-3434]: .NET/#C: Support LogicalSchema for ReflectReader/Writer
  • [AVRO-3435]: Add –version to avrogen
  • [AVRO-3450]: Document IDL support in IDEs
  • [AVRO-3451]: fix poor Avro write performance
  • [AVRO-3453]: C# Avrogen Add Generated Code Attribute
  • [AVRO-3464]: Rust: Print user frientlier output for the ‘benchmark’ example
  • [AVRO-3465]: Add avrogen protocol tests
  • [AVRO-3467]: Use oracle-actions to test with Early Access JDKs
  • [AVRO-3469]: Build and test using .NET SDK 7.0 in guthub action
  • [AVRO-3474]: Increase read performance by moving CanRead to constructor
  • [AVRO-3475]: Enforce time-millis and time-micros specification
  • [AVRO-3477]: Add unit tests for logical types with fixed base type
  • [AVRO-3479]: [rust] Derive Avro Schema macro
  • [AVRO-3483]: [Rust] Log error messages with a reason when the validation fails
  • [AVRO-3484]: Rust: Implement derive default via annotation
  • [AVRO-3485]: Rust: Implement derive doc via annotation
  • [AVRO-3487]: Java: Bump Jackson to 2.12.6.1
  • [AVRO-3489]: JavaScript: Replace istanbul with nyc for code coverage
  • [AVRO-3492]: Rust: Implement derive aliases via annotation
  • [AVRO-3496]: Rust: Use visitor.visit_borrowed_str() when possible
  • [AVRO-3498]: Deprecate NameCtorKey
  • [AVRO-3500]: Rust: Use property based testing for avro_derive IT tests
  • [AVRO-3501]: Rust: Enable Github Actions caching for the Rust CI
  • [AVRO-3502]: Rust: Wrong [ORDER] for Parsing Canonical Form
  • [AVRO-3510]: PHP build fails on Travis
  • [AVRO-3517]: Rust: Optimize crates’ size by disabling default features of the dependencies
  • [AVRO-3518]: Rust: Represent aliases as Name instead of String
  • [AVRO-3522]: Rust: Setup better logging and colored stacktraces for the tests
  • [AVRO-3526]: Rust: Improve resolving Bytes and Fixed from string
  • [AVRO-3527]: Generated equals() and hashCode() for SpecificRecords
  • [AVRO-3530]: Rust: Use dependency-review-action for Rust
  • [AVRO-3533]: Rust: Update dependencies
  • [AVRO-3542]: Scale assignment optimization
  • [AVRO-3543]: Support wasm32 compilation target for Rust library
  • [AVRO-3547]: support custom attribute at field level
  • [AVRO-3554]: Create original art for the Avro logo
  • [AVRO-3579]: Java Test : From Junit4 to JUnit5
  • [AVRO-3586]: Make Avro Build Reproducible
  • [AVRO-3599]: Rust: Make apache-avro-test-helper releasable
  • [AVRO-3600]: [Rust] UnionSchema::new method should be public
  • [AVRO-3602]: Support Map(with non-String keys) and Set in ReflectDatumReader
  • [AVRO-3608]: Rust: Fix clippy errors in Rust 1.63.0
  • [AVRO-3609]: support custom attributes
  • [AVRO-3610]: [C++] Upgrade from C++ 11 to C++ 17
  • [AVRO-3611]: org.apache.avro.util.RandomData generates invalid test data
  • [AVRO-3616]: [C++]: Fix compilation warnings
  • [AVRO-3621]: [Rust] Improved resolution of nullable record fields
  • [AVRO-3623]: Improve the PULL_REQUEST_TEMPLATE
  • [AVRO-3624]: Fix Avro website checks on whimsy
  • [AVRO-3630]: [Rust] Make it possible to extend pre-existing Avro bytes
  • [AVRO-3633]: Additional attributes for ‘avro_derive’ crate
  • [AVRO-3634]: Implement AvroSchemaComponent for bool
  • [AVRO-3639]: [Rust] Derive implementation for Eq where possible
  • [AVRO-3644]: [JAVA] Support java.util.Optional in reflect package
  • [AVRO-3649]: [JAVA] reorder union types to match default value
  • [AVRO-3658]: Bump jackson to address CVE-2020-36518
  • [AVRO-3660]: SpecificRecord java data generator helper method - should I contribute?
  • [AVRO-3679]: [Rust] Enable ‘perf’ feature of regex dependency
  • [AVRO-3692]: Serde flatten is not supported when deserializing
  • [AVRO-3693]: avrogencpp Invalid type for union exception does not identify which union
  • [AVRO-3704]: Naming rules : multiple choice
  • [AVRO-3705]: avrogencpp needs an option to generate code using std instead of boost
  • [AVRO-3708]: [Rust] Fix clippy warnings introduced with Rust 1.67.0
  • [AVRO-3709]: [Rust] Add aliases to RecordField
  • [AVRO-3711]: Add documentation about uuid in IDL
  • [AVRO-3721]: [Java] Add cache to org.apache.avro.JsonProperties.getObjectProps
  • [AVRO-3722]: Eagerly Initialize Instance Variables in Ruby Implementation
  • [AVRO-3723]: [Rust] Make schema::ResolvedSchema and schema::Names public
  • [AVRO-3727]: Add RollForward to C# avrogen tool
  • [AVRO-3741]: Note about the version requirement of Rust in BUILD.md
  • [AVRO-3742]: Bump maven-plugin-plugin from 3.8.1 to 3.8.2
  • [AVRO-3743]: Bump cyclonedx-maven-plugin from 2.7.6 to 2.7.7
  • [AVRO-3744]: Bump maven-checkstyle-plugin from 3.2.1 to 3.2.2
  • [AVRO-3745]: Bump zstd-jni from 1.5.4-2 to 1.5.5-2
  • [AVRO-3746]: Bump grpc.version from 1.54.0 to 1.54.1
  • [AVRO-3757]: [rust] Update syn to 2.x
  • [AVRO-3758]: [Rust] Use AtomicXyz types instead of static mutable ones
  • [AVRO-3759]: [Rust] Schema types inconsistency
  • [AVRO-3766]: [Rust] Print friendlier errors when test cases fail
  • [AVRO-3771]: [Rust] Logging flood during validate method
  • [AVRO-3779]: Any big decimal conversion
  • [AVRO-3784]: [Rust] Make Decimal more usable until its rewritten
  • [AVRO-3790]: [RUBY] Missing default namespace information in SchemaParseError
  • [AVRO-3794]: [Rust] Do not fail the shared tests when the shared folder is not available
  • [AVRO-3799]: Enable the schema parser to read and parse from input streams for Rust binding
  • [AVRO-3812]: Handle null namespace properly for canonicalized schema representation
  • [AVRO-3815]: Broken indentation in the specification doc
  • [AVRO-3828]: [Rust] Use newer Github actions for setting up Rust
  • [AVRO-3829]: JUnit4 to JUnit5 : continue
  • [AVRO-3833]: Spec: clarify usage names and aliases
  • [AVRO-3835]: [Rust] Get rid of byteorder and zerocopy dependencies
  • [AVRO-3836]: [Rust] Fix the build with Rust 1.65.0
  • [AVRO-3838]: [Rust] Replace regex crate with regex-lite
  • [AVRO-3839]: [Rust] Replace lazy_static crate with std::sync::OnceLock
  • [AVRO-3844]: [Rust] Fix clippy errors with Rust 1.72.0
  • [AVRO-3851]: Validate default value for record fields and enums on parsing
  • [AVRO-3852]: Support Java 21
  • [AVRO-3853]: Support local-timestamp logical types for the Rust SDK
  • [AVRO-3862]: Add aliases and doc methods to Schema in Rust SDK
  • [AVRO-3863]: Delete temporary test data after tests finish
  • [AVRO-3868]: Check consistency between the doc comment in lib.rs and README.md
  • [AVRO-3870]: Speed up CI for Rust
  • [AVRO-3871]: Add BlockingDirectBinaryEncoder
  • [AVRO-3877]: [doc] fix wrong configuration for avro-maven-plugin in java example
  • [AVRO-3878]: Rename default git branch to be ‘main’
  • [AVRO-3879]: [Build][Python] Fix ./build.sh clean to remove the generated Python documents
  • [AVRO-3880]: Upgrade maven-antrun-plugin to 3.1.0
  • [AVRO-3884]: Add local-timestamp-nanos and timestamp-nanos
  • [AVRO-3885]: Update the maillist link
  • [AVRO-3886]: [Rust] Serialize attribute in schema to support custom logical type
  • [AVRO-3887]: Remove redundant casts
  • [AVRO-3891]: Remove redundant cast from DirectBinaryDecoder
  • [AVRO-3892]: [Rust] support to convert bytes to fixed in resolve_fixed
  • [AVRO-3896]: [Rust] support read schema with custom logical type
  • [AVRO-3900]: Permissiveness in schema namespaces for rust SDK?
  • [AVRO-3901]: [Rust] Better serde union support
  • [AVRO-3904]: [rust] Sometimes when calculating schema compatibility the code panics but maybe it should not
  • [AVRO-3905]: [Rust] Fix clippy error with Rust 1.74.0
  • [AVRO-3910]: [Rust] Replace color-backtrace with better-panic for the tests
  • [AVRO-3914]: Add nanos support for the Java SDK
  • [AVRO-3917]: [Rust] Field aliases are not taken into account when calculating schema compatibility
  • [AVRO-3918]: Allow UUID to serialize to Fixed[16]
  • [AVRO-3919]: Add UUID type example
  • [AVRO-3920]: [Rust] Serialize custom attribute in RecordField
  • [AVRO-3923]: Add Avro 1.11.3 release blog
  • [AVRO-3927]: [Rust] support custom attributes in list and map
  • [AVRO-3935]: Support logical types in Rust Schema Compatibility checks
  • [AVRO-3936]: Clean up NOTICE file
  • [AVRO-3938]: Schema.Parser.validate should not be null
  • [AVRO-3939]: [Rust] Make it possible to use custom schema comparators
  • [AVRO-3942]: MemoryOutputStream yields a compiler warning
  • [AVRO-3943]: Unused folders
  • [AVRO-3948]: [Rust] Re-export bigdecimal::BigDecimal as apache_avro::BigDecimal
  • [AVRO-3949]: [Rust]: Add support for serde to apache_avro::Decimal
  • [AVRO-3950]: [rust] Some code when checking schema compatibility is never reached
  • [AVRO-3958]: Update min CMake version to 3.5
  • [AVRO-3959]: Avoid deprecated OSX atomic ops
  • [AVRO-3960]: Fix st ANYARGS warnings
  • [AVRO-3961]: Add AVRO_INVALID to avro_type_t
  • [AVRO-3962]: [Rust] avro-derive supports extract docs from field comments
  • [AVRO-3977]: Fix failing typecheck in Python 3.12
  • [AVRO-3981]: Close SyncableFileOutputStream
  • [AVRO-3982]: Use String.isEmpty() instead
  • [AVRO-3983]: Allow setting a custom encoder in DataFileWriter
  • [AVRO-3985]: Restrict trusted packages in ReflectData and SpecificData
  • [AVRO-3992]: [C++] Encoding a record with 0 fields in a vector throws
  • [AVRO-3994]: [C++] Solidus (/) should not be escaped in JSON output
  • [AVRO-3995]: [C++] Update build system to disallow compiling with unsupported language versions
  • [AVRO-3998]: Switch Perl library from JSON::XS to JSON::MaybeXS
  • [AVRO-3999]: Avoid warnings in Perl test suite
  • [AVRO-4007]: [Rust] Faster is_nullable for UnionSchema
  • [AVRO-4010]: Avoid resolving schema on every call to read()
  • [AVRO-4013]: PHP 8 Deprecations
  • [AVRO-4015]: avro-cpp does not work with CMake’s FetchContent
  • [AVRO-4016]: Remove the use of MD5 in org.apache.avro.file.DataFileWriter#generateSync
  • [AVRO-4019]: [C++] Correct signedness of validator methods
  • [AVRO-4022]: Revive docker image

Testing

  • [AVRO-3277]: Test against Ruby 3.1
  • [AVRO-3278]: Drop support for Ruby 2.6
  • [AVRO-3558]: Rust: Add a demo crate that shows usage as WebAssembly
  • [AVRO-3696]: [Python] Replace tox-wheel with upstream tox 4
  • [AVRO-3697]: Test against Ruby 3.2
  • [AVRO-3701]: Add github action to validate maven 4 build compatibility
  • [AVRO-3921]: Test against Ruby 3.3

Wishes

  • [AVRO-1757]: Serialize Avro schema objects to avdl file (IDL format)
  • [AVRO-2211]: SchemaBuilder equivalent or other means of schema creation
  • [AVRO-3197]: Rust: Disable logical type on failure

Tasks

  • [AVRO-3205]: Rust: Update Cargo.toml [package] information
  • [AVRO-3241]: [Java] Publish SNAPSHOT artifacts
  • [AVRO-3242]: Use TravisCI for testing Apache Avro on Linux ARM64
  • [AVRO-3247]: Rust: Run MIRI checks
  • [AVRO-3281]: Bump zstd-jni from 1.5.0-4 to 1.5.1-1 in /lang/java
  • [AVRO-3282]: Bump grpc.version from 1.42.1 to 1.43.1 in /lang/java
  • [AVRO-3283]: Update zerocopy requirement from 0.3.0 to 0.6.1 in /lang/rust
  • [AVRO-3304]: avro-tools Update log4j dependency for critical vulnerability
  • [AVRO-3309]: Bump NUnit.ConsoleRunner from 3.13.2 to 3.14.0 in /lang/csharp
  • [AVRO-3310]: Bump build-helper-maven-plugin from 3.2.0 to 3.3.0 in /lang/java
  • [AVRO-3311]: Bump grpc.version from 1.43.1 to 1.43.2 in /lang/java
  • [AVRO-3332]: Java: Bump grpc.version from 1.43.2 to 1.44.0 in /lang/java
  • [AVRO-3339]: Rust: Rename crate from avro-rs to apache-avro
  • [AVRO-3351]: C#: Bump System.Reflection.Emit.Lightweight from 4.3.0 to 4.7.0 in /lang/csharp
  • [AVRO-3372]: Java: Bump archetype-plugin.version from 3.2.0 to 3.2.1 in /lang/java
  • [AVRO-3373]: Java: Bump protobuf-java from 3.19.1 to 3.19.4 in /lang/java
  • [AVRO-3391]: Update typed-builder requirement from 0.9.1 to 0.10.0 in /lang/rust
  • [AVRO-3409]: [Java] Bump Reload4j to 1.2.19
  • [AVRO-3419]: [Rust] Update strum 0.23.1 and strum_macros to 0.24.0
  • [AVRO-3422]: Bump jetty.version from 9.4.44.v20210927 to 9.4.45.v20220203 in /lang/java
  • [AVRO-3428]: Rust: Restructure the RUST SDK to a Rust workspace
  • [AVRO-3431]: CI: Cancel in-progress workflows if there are new commits in PR
  • [AVRO-3432]: Java: Bump grpc.version from 1.44.0 to 1.44.1 in /lang/java
  • [AVRO-3437]: Rust: Update dependencies
  • [AVRO-3439]: Java: Bump netty-bom from 4.1.72.Final to 4.1.74.Final in /lang/java
  • [AVRO-3455]: Java: Bump netty-bom from 4.1.74.Final to 4.1.75.Final
  • [AVRO-3456]: Rust: Update zstd requirement from 0.10.0+zstd.1.5.2 to 0.11.0+zstd.1.5.2
  • [AVRO-3457]: JS: Bump mocha from 9.2.1 to 9.2.2
  • [AVRO-3462]: Java: Bump hadoop-client from 3.3.1 to 3.3.2
  • [AVRO-3463]: Java: Bump grpc.version from 1.44.1 to 1.45.0
  • [AVRO-3494]: Rust: uncomment some tests which pass
  • [AVRO-3519]: Rust: Remove MIRI Github Actions check
  • [AVRO-3552]: Rust: sort the contents in Cargo.toml files with cargo-tomlfmt
  • [AVRO-3574]: Rust: Add Cargo.lock to Git
  • [AVRO-3575]: Rust: Add a module for fuzzy testing
  • [AVRO-3653]: [build] Move off Travis CI
  • [AVRO-3661]: [Rust] Fix new clippy errors introduced with Rust 1.65
  • [AVRO-3672]: Add CI testing for Python 3.11
  • [AVRO-3681]: [Python] GitHub actions failing with python 3.6
  • [AVRO-3682]: [Build] Remove forrest from Avro build
  • [AVRO-3754]: upgrade to jackson 2.15.0
  • [AVRO-3793]: [Rust] Bump minimum supported version of Rust to 1.65.0
  • [AVRO-3808]: Drop support for Python 3.6, add Pypy 3.8-3.10
  • [AVRO-3875]: [Rust]: Set “readme” metadata for each package separately
  • [AVRO-3915]: [Rust] Extract dependencies used by more than one member crates into the workspace
  • [AVRO-3937]: [Rust]: Use cargo-deny to check the dependencies’ licenses
  • [AVRO-3944]: Fix CMake warning
  • [AVRO-3945]: Fix issues reported by cppcheck
  • [AVRO-3967]: Replace boost::format with fmt
  • [AVRO-3978]: Build with Java 11 minimum

Language SDK / Convenience artifacts

Thanks to everyone for contributing!

Avro 1.11.3

The Apache Avro community is pleased to announce the release of Avro 1.11.3!

All signed release artifacts, signatures and verification instructions can be found here

This release addresses 39 Jira issues.

Highlights

Java

  • AVRO-3789: Comparing maps in GenericData is wrong for certain combinations and fails for empty maps
  • AVRO-3713: Thread scalability problem with the use of SynchronizedMap
  • AVRO-3486: Protocol namespace not parsed correctly if protocol is defined by full name
  • AVRO-2771: Allow having Error in a Record
  • AVRO-3819: Rationalize the system properties that limit allocation

Python

  • AVRO-3819: Rationalize the system properties that limit allocation
  • AVRO-312: Generate documentation for Python with Sphinx

Rust

  • AVRO-3853: Support local-timestamp logical types for the Rust SDK
  • AVRO-3851: Validate default value for record fields and enums on parsing
  • AVRO-3847: Record field doesn’t accept default value if field type is union and the type of default value is pre-defined name
  • AVRO-3846: Race condition can happen among serde tests
  • AVRO-3838: Replace regex crate with regex-lite
  • AVRO-3837: Disallow invalid namespaces for the Rust binding
  • AVRO-3835: Get rid of byteorder and zerocopy dependencies
  • AVRO-3830: Handle namespace properly if a name starts with dot
  • AVRO-3827: Disallow duplicate field names
  • AVRO-3787: Deserialization fails to use default if an enum in a record in a union is given an unknown symbol
  • AVRO-3786: Deserialization results in FindUnionVariant error if the writer and reader have the same symbol but at different positions

In addition:

  • Upgrade dependencies to latest versions, including CVE fixes.
  • Testing and build improvements.
  • Performance fixes, other bug fixes, better documentation and more.

Known issues: ∅

Language SDK / Convenience artifacts

Thanks to everyone for contributing!

Avro 1.11.2

The Apache Avro community is pleased to announce the release of Avro 1.11.2!

All signed release artifacts, signatures and verification instructions can be found here

This release addresses 89 Avro JIRA.

Highlights

C#

  • AVRO-3434: Support logical schemas in reflect reader and writer
  • AVRO-3670: Add NET 7.0 support
  • AVRO-3724: Fix C# JsonEncoder for nested array of records
  • AVRO-3756: Add a method to return types instead of writing them to disk

C++

Java

  • AVRO-2943: Add new GenericData String/Utf8 ARRAY comparison test
  • AVRO-2943: improve GenericRecord MAP type comparison
  • AVRO-3473: Use ServiceLoader to discover Conversion
  • AVRO-3536: Inherit conversions for Union type
  • AVRO-3597: Allow custom readers to override string creation
  • AVRO-3560: Throw SchemaParseException on dangling content beyond end of schema
  • AVRO-3602: Support Map(with non-String keys) and Set in ReflectDatumReader
  • AVRO-3676: Produce valid toString() for UUID JSON
  • AVRO-3698: SpecificData.getClassName must replace reserved words
  • AVRO-3700: Publish Java SBOM artifacts with CycloneDX
  • AVRO-3783: Read LONG length for bytes, only allow INT sizes
  • AVRO-3706: accept space in folder name

Python

  • AVRO-3761: Fix broken validation of nullable UUID field
  • AVRO-3229: Raise on invalid enum default only if validation enabled
  • AVRO-3622: Fix compatibility check for schemas having or missing namespace
  • AVRO-3669: Add py.typed marker file (PEP561 compliance)
  • AVRO-3672: Add CI testing for Python 3.11
  • AVRO-3680: allow to disable name validation

Ruby

  • AVRO-3775: Fix decoded default value of logical type
  • AVRO-3697: Test against Ruby 3.2
  • AVRO-3722: Eagerly initialize instance variables for better inline cache hits

Rust

  • Many, many bug fixes and implementation progress in this experimental SDK.
  • Rust CI builds and lints are passing, and has been released to crates.io as version 0.15.0

In addition:

  • Upgrade dependencies to latest versions, including CVE fixes.
  • Testing and build improvements.
  • Performance fixes, other bug fixes, better documentation and more…

Known issues

  • AVRO-3789 Java: Problem when comparing empty MAP types.

Language SDK / Convenience artifacts

Thanks to everyone for contributing!

Avro 1.11.1

The Apache Avro community is pleased to announce the release of Avro 1.11.1!

All signed release artifacts, signatures and verification instructions can be found here

Most interesting

This release includes 256 Jira issues, including some interesting features:

Avro specification

  • AVRO-3436 Clarify which names are allowed to be qualified with namespaces
  • AVRO-3370 Inconsistent behaviour on types as invalid names
  • AVRO-3275 Clarify how fullnames are created, with example
  • AVRO-3257 IDL: add syntax to create optional fields
  • AVRO-2019 Improve docs for logical type annotation

C++

  • AVRO-2722 Use of boost::mt19937 is not thread safe

C#

  • AVRO-3383 Many completed subtasks for modernizing C# coding style
  • AVRO-3481 Input and output variable type mismatch
  • AVRO-3475 Enforce time-millis and time-micros specification
  • AVRO-3469 Build and test using .NET SDK 7.0
  • AVRO-3468 Default values for logical types not supported
  • AVRO-3467 Use oracle-actions to test with Early Access JDKs
  • AVRO-3453 Avrogen Add Generated Code Attribute
  • AVRO-3432 Add command line option to skip creation of directories
  • AVRO-3411 Add Visual Studio Code Devcontainer support
  • AVRO-3388 Implement extra codecs for C# as seperate nuget packages
  • AVRO-3265 avrogen generates uncompilable code when namespace ends with “.Avro”
  • AVRO-3219 Support nullable enum type fields

Java

  • AVRO-3531 GenericDatumReader in multithread lead to infinite loop
  • AVRO-3482 Reuse MAGIC in DataFileReader
  • AVRO-3586 Make Avro Build Reproducible
  • AVRO-3441 Automatically register LogicalTypeFactory classes
  • AVRO-3375 Add union branch, array index and map key “path” information to serialization errors
  • AVRO-3374 Fully qualified type reference “ns.int” loses namespace
  • AVRO-3294 IDL parsing allows doc comments in strange places
  • AVRO-3273 avro-maven-plugin breaks on old versions of Maven
  • AVRO-3266 Output stream incompatible with MagicS3GuardCommitter
  • AVRO-3243 Lock conflicts when using computeIfAbsent
  • AVRO-3120 Support Next Java LTS (Java 17)
  • AVRO-2498 UUID generation is not working

Javascript

  • AVRO-3489 Replace istanbul with nyc for code coverage
  • AVRO-3322 Buffer is not defined in browser environment
  • AVRO-3084 Fix JavaScript interop test to work with other languages on CI

Perl

  • AVRO-3263 Schema validation warning on invalid schema with a long field

Python

  • AVRO-3542 Scale assignment optimization
  • AVRO-3521 “Scale” property from decimal object
  • AVRO-3380 Byte reading in avro.io does not assert bytes read
  • AVRO-3229 validate the default value of an enum field
  • AVRO-3218 Pass LogicalType to BytesDecimalSchema

Ruby

Rust

  • AVRO-3558 Add a demo crate that shows usage as WebAssembly
  • AVRO-3526 Improve resolving Bytes and Fixed from string
  • AVRO-3506 Implement Single Object Writer
  • AVRO-3507 Implement Single Object Reader
  • AVRO-3405 Add API for user-provided metadata to file
  • AVRO-3339 Rename crate from avro-rs to apache-avro
  • AVRO-3479 Derive Avro Schema macro

Website

Rust

This is the first release that provides the apache-avro crate at crates.io!

JIRA

A list of all JIRA tickets fixed in 1.11.1 could be found here

Language repositories

In addition, language-specific release artifacts are available:

Thanks to everyone for contributing!

Avro 1.11.0

The Apache Avro community is pleased to announce the release of Avro 1.11.0!

All signed release artifacts, signatures and verification instructions can be found here

This release includes 120 Jira issues, including some interesting features:

  • Specification: AVRO-3212 Support documentation tags for FIXED types
  • C#: AVRO-2961 Support dotnet framework 5.0
  • C#: AVRO-3225 Prevent memory errors when deserializing untrusted data
  • C++: AVRO-2923 Logical type corrections
  • Java: AVRO-2863 Support Avro core on android
  • Javascript: AVRO-3131 Drop support for node.js 10
  • Perl: AVRO-3190 Fix error when reading from EOF
  • Python: AVRO-2906 Improved performance validating deep record data
  • Python: AVRO-2914 Drop Python 2 support
  • Python: AVRO-3004 Drop Python 3.5 support
  • Ruby: AVRO-3108 Drop Ruby 2.5 support

For the first time, the 1.11.0 release includes experimental support for Rust. Work is continuing on this donated SDK, but we have not versioned and published official artifacts for this release.

Python: The avro package fully supports Python 3. We will no longer publish a separate avro-python3 package

And of course upgraded dependencies to latest versions, CVE fixes and more: https://issues.apache.org/jira/issues/?jql=project%3DAVRO%20AND%20fixVersion%3D1.11.0

The link to all fixed JIRA issues and a brief summary can be found at: https://github.com/apache/avro/releases/tag/release-1.11.0

In addition, language-specific release artifacts are available:

Thanks to everyone for contributing!

Avro 1.10.2

Apache Avro 1.10.2 has been released!

Avro 1.10.1

Apache Avro 1.10.1 has been released!

Avro 1.10.0

Apache Avro 1.10.0 has been released!

Avro 1.9.2

Apache Avro 1.9.2 has been released!

Avro 1.9.1

Apache Avro 1.9.1 has been released!

Avro 1.9.0

Apache Avro 1.9.0 has been released!

Avro 1.8.2

Apache Avro 1.8.2 has been released!

Avro 1.8.1

Apache Avro 1.8.1 has been released!

Avro 1.8.0

Apache Avro 1.8.0 has been released!

Avro 1.7.7

Apache Avro 1.7.7 has been released!

Avro 1.7.6

Apache Avro 1.7.6 has been released!

Avro 1.7.5

Apache Avro 1.7.5 has been released!

Avro 1.7.4

Apache Avro 1.7.4 has been released!

Avro 1.7.3

Apache Avro 1.7.3 has been released!

Avro 1.7.2

Apache Avro 1.7.2 has been released!

Avro 1.7.1

Apache Avro 1.7.1 has been released!

Avro 1.7.0

Apache Avro 1.7.0 has been released!

Avro 1.6.3

Apache Avro 1.6.3 has been released!

Avro 1.6.2

Apache Avro 1.6.2 has been released!

Avro 1.6.1

Apache Avro 1.6.1 has been released!

Avro 1.6.0

Apache Avro 1.6.0 has been released!

Avro 1.5.4

Apache Avro 1.5.4 has been released!

Avro 1.5.3

Apache Avro 1.5.3 has been released!

Avro 1.5.2

Apache Avro 1.5.2 has been released!

Avro 1.5.1

Apache Avro 1.5.1 has been released!

Avro 1.5.0

Apache Avro 1.5.0 has been released!

Avro 1.4.1

Apache Avro 1.4.1 has been released!

Avro 1.4.0

Apache Avro 1.4.0 has been released!

Avro 1.0.0

The first release of Avro is now available. To download, it, use the “Download” link below.

Avro 1.3.3

Apache Avro 1.3.3 has been released!

Avro 1.3.2

Apache Avro 1.3.2 has been released!

Avro 1.3.1

Apache Avro 1.3.1 has been released!

Avro 1.3.0

Apache Avro 1.3.0 has been released!

Avro 1.2.0

Apache Avro 1.2.0 is now available!

Avro 1.1.0

Apache Avro 1.1.0 is now available!

Avro joins Apache

Avro has joined the Apache Software Foundation as a Hadoop subproject.