Skip to content

v3.0.0

Latest

Choose a tag to compare

@efcasado efcasado released this 15 Aug 14:30
6169010

3.0.0 (2026-08-15)

⚠ BREAKING CHANGES

  • remove producer_count option (#187)
  • chunking: chunked messages are not wire-compatible (#177)
  • producer: route partition keys with a Pulsar hashing scheme (#176)
  • options: downcase enum option atoms (#171)
  • make Pulsar.Message independent of batching and chunking (#170)
  • consumer: pass the resolved topic and subscription to callback (#169)
  • make Client, Consumer, and Producer the public API (#164)

Features

  • consumer: add handle_invalid_message/2 (31cfddf)
  • consumer: pass the resolved topic and subscription to callback (#169) (59444de)
  • producer: async send (#186) (81d403d)
  • producer: key-based batching (#183) (d2f44bd)
  • producer: send timeout and backpressure (#185) (6ceefb5)

Bug Fixes

  • application: stop dropping unknown client options (e43d308)
  • broker: accept general socket option lists (1b60c63)
  • broker: broker crashes on unexpected info messages (#161) (5989995)
  • broker: ignore events from stale sockets (73434b4)
  • broker: stale parse buffer desyncs the stream on reconnect (d5552a1)
  • chunking: chunked messages are not wire-compatible (#177) (83f52eb)
  • client: accept :infinity as a connection timeout (9e48526)
  • consumer: a batch index ack acknowledged the whole batch (#179) (39e8b1b)
  • consumer: deliver unverifiable messages instead of dropping the connection (d4b9229)
  • consumer: give invalid messages their payload (99d2284)
  • consumer: stop :name naming both the group and the consumers (136ccc4)
  • consumer: supervise the dead letter producer under its consumer (#172) (7395f53)
  • producer: a batch carried no key for Key_Shared to dispatch on (#182) (d0fbc0a)
  • producer: a batching producer dropped delayed delivery (#181) (4c9324c)
  • producer: advertise the full sequence id range of a batch (1c0cabd)
  • producer: deduplicated sends reported as stored messages (664926d)
  • producer: route partition keys with a Pulsar hashing scheme (#176) (eb3eb13)
  • producer: silent data loss after producer restart (a68bb69)
  • protocol: accept message frames without a checksum (86f4825)
  • protocol: bound the frame size read off the wire (7c7d7fd)
  • protocol: crash on unsupported inbound command types (6333aba)
  • protocol: decode/1 raises and kills the connection (e51f49c)
  • protocol: reject BaseCommands missing their command (ff0c5f9)
  • protocol: verify the CRC32C checksum on inbound message frames (c90ce8c)

Performance Improvements

  • protocol: copy a frame once rather than once per packet (1b484f1)

Dependencies

  • bump apachepulsar/pulsar from 4.2.3 to 4.2.4 (#174) (b97b864)
  • bump jdx/mise-action from 4 to 4.2.3 (#175) (bfa974f)
  • bump jdx/mise-action from 4.2.3 to 4.2.4 (#180) (0969a29)
  • bump styler from 1.11.0 to 1.12.2 (#167) (8357854)

Documentation

Code Refactoring

  • client: validate options against a schema (bb4349e)
  • consumer: validate options against a schema (389fae3)
  • make Client, Consumer, and Producer the public API (#164) (b353b19)
  • make Pulsar.Message independent of batching and chunking (#170) (6cdd75a)
  • options: downcase enum option atoms (#171) (0d2f381)
  • producer: validate options against a schema (f10d3f3)
  • protocol: fold encode_message into encode (f2ba4ff)
  • reader: validate options against a schema (09e99b4)
  • remove producer_count option (#187) (2737c2a)

Tests

  • add connection reset tests (3b848ae)
  • add unit tests for the binary protocol (c7deb74)

Miscellaneous Chores

  • auto-update version on new release (af0e77f)