)]}'
{
  "commit": "5483ca9076e692c96b315fb19225b0ee2f3aa8f4",
  "tree": "ae1723b78d3c8a92d02f8f0ace5d9d7b9b96b740",
  "parents": [
    "0fc51a0dcd68c638ecdd400e8b7e471be04deae5"
  ],
  "author": {
    "name": "grishaf",
    "email": "grisha@drivenets.com",
    "time": "Wed Jun 17 11:03:32 2026 +0300"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jun 17 16:03:32 2026 +0800"
  },
  "message": "feat: support null value messages (tombstones) for compacted topics (#304)\n\nAdd support for sending and detecting null value messages, which are\nused as tombstones on compacted topics to delete entries for specific\nkeys. This wraps the C++ client\u0027s MessageBuilder::setNullValue() and\nMessage::hasNullValue() APIs added in pulsar-client-cpp#563.\n\nChanges:\n- Bump pulsar-cpp dependency to 4.2.0\n- Add pybind11 bindings for set_null_value and has_null_value\n- Allow Producer.send(None) to produce a null value message\n- Add Message.has_null_value() to detect tombstone messages\n- Skip schema encoding when content is None (mirrors Java client)\n- Add integration tests for null values, compaction, and table view\n\nRequires pulsar-client-cpp \u003e\u003d 4.2.0 (not yet released).\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "afcb6340ce8e07e10bd4483d44d02a70bf844844",
      "old_mode": 33188,
      "old_path": "pulsar/__init__.py",
      "new_id": "30f6bf11c6276a6baeb13fe9acb4c3abbf5d4761",
      "new_mode": 33188,
      "new_path": "pulsar/__init__.py"
    },
    {
      "type": "modify",
      "old_id": "f3247e65d1dbb464d28f8b7a2a9611591123113c",
      "old_mode": 33188,
      "old_path": "src/message.cc",
      "new_id": "c33780d68a6b949731f66ace73bf2a4837d1cbdb",
      "new_mode": 33188,
      "new_path": "src/message.cc"
    },
    {
      "type": "modify",
      "old_id": "93a6415a69516b3168821b5bbccc5fb07eec7a1f",
      "old_mode": 33261,
      "old_path": "tests/pulsar_test.py",
      "new_id": "68eb499fea89dcfa1c3c31c0daadc28adeb220c6",
      "new_mode": 33261,
      "new_path": "tests/pulsar_test.py"
    }
  ]
}
