rust-rdkafka v0.23.0 Release Notes

Release Date: 2019-12-31 // 24 days ago
    • ⬆️ Upgrade to the async/await ecosystem, including std::future::Future, v0.3 of the futures crate, and v0.2 of Tokio. The minimum supported Rust version is now Rust 1.39. Special thanks to @sd2k and @dbcfd. (#187)

    The main difference is that functions that previously returned

      futures01::Future<Item = T, Error = E>

    now return:

      std::future::Future<Output = Result<T, E>>

    In the special case when the error was (), the new signature is further simplified to:

      std::future::Future<Output = T>

    Functions that return future::Streams have had the analogous transformation applied.

    • 🔀 Implement Send and Sync on BorrowedMessage, so that holding a reference to a BorrowedMessage across an await point is possible. (#190)

    • 🔀 Implement Sync on OwnedHeaders, which applies transitively to OwnedMessage, so that holding a reference to an OwnedMessage across an await point is possible. (#203)

    • ⬆️ Bump librdkafka to v1.3.0. (#202)

    • 🔄 Change the signature of ConsumerContext::commit_callback so that the offsets are passed via a safe TopicPartitionList struct, and not a raw *mut rdkafka_sys::RDKafkaPartitionList pointer. Thanks, @scrogson! (#198).

    • 🛠 Fix CMake build on Windows when debug information is enabled (#194).

Previous changes from v0.22.0

    • ➕ Add a client for Kafka's Admin API, which allows actions like creating and deleting Kafka topics and changing configuration parameters. (#122)
    • 🛠 Fix compliation on ARM, and ensure it stays fixed by adding an ARM builder to CI. (#134, #162)
    • Stop automatically generating librdkafka bindings. Platform-independent bindings are now checked in to the repository. (#163)
    • 🚚 Move zstd compression support behind the zstd feature flag. (#163)
    • ✂ Remove build-time dependency on bindgen, clang, and libclang. (#163)
    • 👌 Support Consumer::pause and Consumer::resume. (#167)
    • Expose the message_queue_nonempty callback, which allows clients to put their poll thread to sleep and be woken up when new data arrives. (#164)
    • Implement IntoOpaque for Arc<T>. (#171)
    • ➕ Add Consumer::seek method. (#172)
    • 👌 Support building with Microsoft Visual C++ (MSVC) on Windows. (#176)
    • ⬆️ Bump librdkafka to v1.2.2. (#177)
    • ✅ Run tests against multiple Kafka versions in CI. (#182)
    • Standardize feature names. All feature names now use hyphens instead of underscores, as is conventional, though the old names remain for backwards compatibility. (#183)
    • 0️⃣ Optionalize libz via a new libz feature. The new feature is a default feature for backwards compatibility. (#183)
    • 👍 Better attempt to make build systems agree on what version of a dependency to compile and link against, and document this hazard. (#183)