# Changelog ## Unreleased ## v0.14.0 - `Records::encode`/`Records::decode` is now reverted back to their original API, instead `encode_with_custom_compression` and `decode_with_custom_compression` is provided for custom compression. - `ApiKey` variants are renamed to remove the `Key` suffix. - Add `iterate_all` and `valid_versions` methods to `ApiKey` - Implement `PartialEq` and `Display` for `VersionRange` ## v0.13.0 - All "map" types in the protocol that were previously of type `IndexMap` are now of type `Vec`, the value of `K` is stored as a field within `V`. - This was done to resolve and improve decoding speed. - If you were previously calling `.get()` on the map, the best way to migrate is to refactor your code to avoid the need to lookup by iterating over the items in the response instead. - Alternatively, you could replace `responses.get(name)` with something like `responses.iter().find(|x| x.name == name)` to achieve the same result. But note that this access is now O(N) instead of O(1). - Alternatively, you could use an intermediate hashmap before converting to a Vec to retain the O(1) lookup. - Update protocol to kafka 3.8.0 - The Debug impl for new type wrappers now passes directly to the inner type. The full list of new type wrappers is BrokerId, GroupId, ProducerId, TopicName and TransactionalId. For example GroupId was previously `GroupId("some group")` but is now `"some group"`. - ApiKey is now non_exhaustive. - Added `gzip`, `zstd`, `snappy` and `lz4` features to enable the different compression algorithms for records (All enabled by default) ## v0.12.0 - Add `client` feature to enable encoding of requests and decoding of responses (enabled by default) - Add `broker` feature to enable encoding of responses and decoding of requests (enabled by default) - Add `messages_enums` feature to enable `ResponseKind` and `RequestKind` enums - Add `encode`, `decode` and `header_version` methods to `ResponseKind` and `RequestKind` ## v0.11.0 - Replace `derive_builder` with custom impl. - Remove `EncodeError`/`DecodeError` aliases - Remove panic from `RecordBatchEncoder::encode` - Use `IntoIterator` instead of `Iterator` for `RecordBatchEncoder::encode` - Use CRC-32 ISO/HDLC instead of CRC-32 CKSUM. - Add `Display` and more `From` implementations for `StrBytes`. - Avoid redundant variant names in RequestKind/ResponseKind. ## v0.10.2 - Implement `From` for RequestKind and ResponseKind. ## v0.10.1 - Fix lz4 compression. ## v0.10.0 - Use `anyhow` for public error types. In general, these errors reflect non-recoverable programmer error and should not occur when interacting with a well-formed Kafka implementation. - Rename `StrBytes::from_str` to `from_static_str` to avoid overlap with the `FromStr` trait. - Improve codegen, including filtering out unstable messages, improving ordering of structs in generated code, and other misc improvements. - Upgrade message version to upstream `v3.7.0` Kafka. ## v0.9.0 - Remove the `string` crate. - Update `derive-builder`. ## v0.8.2 - Expose protocol::buf::gap module. ## v0.8.1 - Re-export `indexmap` as part of the public api. ## v0.8.0 - Implement Zstd and Lz4 compression. ## v0.7.0 - Switch to [crc32c](https://crates.io/crates/crc32c) crate, providing hardware acceleration for crc operations on supported platforms. - Formatting fixes. - Miscellaneous dependency updates. - Fix issue with `derive_builder` implementation in which default fields were not being used correctly. ## v0.6.1 - Miscellaneous dependency updates. ## v0.6.0 - Add `ApiKey::request_header_version` and `ApiKey::response_header_version` to assist deserializing headers without reference to message type. ## v0.5.1 Bump `uuid` crate version. ## v0.5.0 - Clarify versioning support for upstream Kafka, tracking the latest Kafka stable release. Improve docs. #### Enhancements - `Builder::builder` trait for retrieving builder instances from messages without requiring extra builder imports. - `#[non_exhaustive]` added to all items to ensure forward compatability with protocol upgrades. ## v0.4.0 - Add utilities for dealing with response error codes. ## v0.3.0 #### Enhancements - Build messages from crate root. - Upgrade to latest version of Kafka protocol. ## v0.2.0 #### Enhancements - Add derive builder for all messages. ## v0.1.0 Initial release.