)]}'
{
  "log": [
    {
      "commit": "63c51bde50a45bce1e79d7c49baf5eed8c92e460",
      "tree": "a6e824262ef22fdb7ba4d7b7bc358825770360a5",
      "parents": [
        "39471a903ab7f635fc3d5006cfa2bedea0dcb8f9"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Jul 25 22:26:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 22:26:45 2026 +0800"
      },
      "message": "refactor: align seed and internal naming (#164)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "39471a903ab7f635fc3d5006cfa2bedea0dcb8f9",
      "tree": "85433c3293a2bf0151df56bbd6cf9eb0d64c4979",
      "parents": [
        "87e9e84133dc2ba6ff5a94e164adf430507d82c0"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Jul 25 21:24:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 21:24:40 2026 +0800"
      },
      "message": "chore: simplify test support code (#163)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "87e9e84133dc2ba6ff5a94e164adf430507d82c0",
      "tree": "75985c121fb8450968e0fe673918d92f06100a9a",
      "parents": [
        "7c800a94196c41558223cbe62f3eda30425674f1"
      ],
      "author": {
        "name": "Yijun Zhao",
        "email": "ariesdevil77@gmail.com",
        "time": "Sat Jul 25 17:11:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 17:11:49 2026 +0800"
      },
      "message": "feat: add theta and tuple a-not-B operation (#155)"
    },
    {
      "commit": "7c800a94196c41558223cbe62f3eda30425674f1",
      "tree": "2ceca0dd06e0e34bb3ecf6d92b50843bb4486274",
      "parents": [
        "9a409c8df6c439617267b10436d8bb7a7038b7aa"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Jul 25 09:59:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 09:59:01 2026 +0800"
      },
      "message": "chore: upgrade dev dependencies and fine tune scripts (#162)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "9a409c8df6c439617267b10436d8bb7a7038b7aa",
      "tree": "94e51145019d16d664ad3eaa559aa3b9d64c9cd9",
      "parents": [
        "97260210b354a86bf6af6772045588d25a067f1f"
      ],
      "author": {
        "name": "Yijun Zhao",
        "email": "ariesdevil77@gmail.com",
        "time": "Sat Jul 25 07:33:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 23:33:31 2026 +0000"
      },
      "message": "feat: support tuple intersection (#154)\n\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "97260210b354a86bf6af6772045588d25a067f1f",
      "tree": "1bce0618ef95b5d08026a1f626c8defa983b3adc",
      "parents": [
        "4dec1541c3387a2975487e7ee88d84f5e47b9857"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Jul 24 23:40:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 23:40:55 2026 +0800"
      },
      "message": "chore: code tidy and script tidy (#161)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "4dec1541c3387a2975487e7ee88d84f5e47b9857",
      "tree": "e4dd6931d40b35dedaad668a88635841b45bde18",
      "parents": [
        "390a01b4c7d6b9ab55ac3bb6f36b563e5ac44a1e"
      ],
      "author": {
        "name": "Phoenix",
        "email": "Phoenix500526@163.com",
        "time": "Fri Jul 24 23:09:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 23:09:11 2026 +0800"
      },
      "message": "ci: download snapshots from apache/dataSketches-tck (#160)\n\nSigned-off-by: Jiawei Zhao \u003cPhoenix500526@163.com\u003e\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "390a01b4c7d6b9ab55ac3bb6f36b563e5ac44a1e",
      "tree": "1fb02b70083702cedec400492d25a54b56b3a238",
      "parents": [
        "3668658f3d0a415f4ee157cf769c8db024364603"
      ],
      "author": {
        "name": "Yijun Zhao",
        "email": "ariesdevil77@gmail.com",
        "time": "Fri Jul 24 22:51:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 22:51:36 2026 +0800"
      },
      "message": "feat(tuple): add tuple union operation (#153)"
    },
    {
      "commit": "3668658f3d0a415f4ee157cf769c8db024364603",
      "tree": "473b6665b479f8ecac6d575c03b31e2e9169f0f1",
      "parents": [
        "7f35b0510029740a38338ccaf587a07ab4426ee3"
      ],
      "author": {
        "name": "Phoenix",
        "email": "Phoenix500526@163.com",
        "time": "Thu Jul 23 21:46:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 21:46:42 2026 +0800"
      },
      "message": "refactor(common): compute inverse powers inline (#159)\n\nCloses #157\n\nSigned-off-by: Jiawei Zhao \u003cPhoenix500526@163.com\u003e\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "7f35b0510029740a38338ccaf587a07ab4426ee3",
      "tree": "f2f928558905ee88fa1c3e7de1ea7345abd84f5e",
      "parents": [
        "81ec1cb181c9ba043e4998c0bad44fd0d8a00899"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Jul 23 20:39:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 20:39:44 2026 +0800"
      },
      "message": "refactor: simplify builders interface and rework tuple summary policy (#158)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "81ec1cb181c9ba043e4998c0bad44fd0d8a00899",
      "tree": "980636a694e16e96276d9fbfb45a74637cbae980",
      "parents": [
        "ee6e1cc432555c3562274ec36fc2dd6419b96701"
      ],
      "author": {
        "name": "Yijun Zhao",
        "email": "ariesdevil77@gmail.com",
        "time": "Thu Jul 23 15:43:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 07:43:27 2026 +0000"
      },
      "message": "feat: add tuple sketch implementation (#152)\n\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "ee6e1cc432555c3562274ec36fc2dd6419b96701",
      "tree": "d9c326c563eee7cf0d26819d2e1c8b052d8bfae9",
      "parents": [
        "eefe0656449620f2d23bcb8391f6aaf8a3e99396"
      ],
      "author": {
        "name": "ZENOTME",
        "email": "st810918843@gmail.com",
        "time": "Sat Jul 18 17:11:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 09:11:13 2026 +0000"
      },
      "message": "feat(theta): add theta union (#145)\n\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "eefe0656449620f2d23bcb8391f6aaf8a3e99396",
      "tree": "e3168e3fbe024fdda36f9bbea1c2131916433461",
      "parents": [
        "1402037b7f1ade76e600a1a66315788f52e02df1"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sun Jul 12 17:11:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 17:11:56 2026 +0800"
      },
      "message": "chore: internal code tidy (#149)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "1402037b7f1ade76e600a1a66315788f52e02df1",
      "tree": "1c216be9abf62edc4f130e06187087da75f01b8b",
      "parents": [
        "8c1514fe79b1140ed10958a8942eb031c84c5bea"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sun Jul 12 06:03:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 06:03:49 2026 +0800"
      },
      "message": "refactor(hll): reuse the inverse powers lookup table (#148)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "8c1514fe79b1140ed10958a8942eb031c84c5bea",
      "tree": "499076a7657433fe7737cc4513929acba3a2bcbe",
      "parents": [
        "e4609c63048138cd26b54b55dbac5c6f12b2fb2d"
      ],
      "author": {
        "name": "Yijun Zhao",
        "email": "ariesdevil77@gmail.com",
        "time": "Fri Jul 10 21:10:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 13:10:20 2026 +0000"
      },
      "message": "refactor(theta): theta hash table into raw table, preparing for tuple reuse (#146)"
    },
    {
      "commit": "e4609c63048138cd26b54b55dbac5c6f12b2fb2d",
      "tree": "4d8370c620ce53e448cb98f4982b2182aea86b08",
      "parents": [
        "cafebaae65286bb46df579f0d2425f911184f39e"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sun Jul 05 07:39:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 07:39:30 2026 +0800"
      },
      "message": "perf: avoid clone on serialize frequency items (#144)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "cafebaae65286bb46df579f0d2425f911184f39e",
      "tree": "0be8b3822555f5e32ec834231b866808f09f8230",
      "parents": [
        "8a6884b62d7073e4be0346b60aa07555c5d0f11d"
      ],
      "author": {
        "name": "kedom",
        "email": "kedom@vmcall.net",
        "time": "Fri Jul 03 19:15:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 04 01:15:59 2026 +0800"
      },
      "message": "fix(frequencies): write the full empty preamble long in serialize (#143)\n\nAn empty FrequentItemsSketch serialized to 6 bytes: the preamble\ndeclares one 8-byte preamble long, but serialization stopped after the\nflags byte. Deserialization (in Rust as well as the Java and C++\nreaders) consumes the full 8-byte preamble, so a serialized empty\nsketch failed to deserialize with an insufficient-data error.\n\nEmptiness is reachable from non-trivial streams: a map saturated with\ncount-1 items purges every counter, so pipelines that persist sketches\ncan hit the failure on real data.\n\nWrite the two unused padding bytes so the empty encoding is one full\npreamble long, matching the Java and C++ implementations.\n\nCo-authored-by: Claude Fable 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "8a6884b62d7073e4be0346b60aa07555c5d0f11d",
      "tree": "f641f15373e23fee4c47b23b2545ae9145f4b7ca",
      "parents": [
        "e8b881c50a3b8b3ae9e0798afeec230ce72172e7"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Jul 02 11:21:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 03:21:49 2026 +0000"
      },
      "message": "chore: add changelog and update ci actions (#141)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "e8b881c50a3b8b3ae9e0798afeec230ce72172e7",
      "tree": "de36e9ec4c328ae3511e306b3944c3c4acab1f55",
      "parents": [
        "cb6b7e26334c8c60f68e9c537a5150ee5b78bd94"
      ],
      "author": {
        "name": "kedom",
        "email": "kedom@vmcall.net",
        "time": "Thu Jul 02 04:50:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 02:50:36 2026 +0000"
      },
      "message": "feat(frequencies): add borrowed-key update methods to the frequent items sketch (#140)\n\nSigned-off-by: kedom \u003ckedom@vmcall.net\u003e\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "cb6b7e26334c8c60f68e9c537a5150ee5b78bd94",
      "tree": "bdc271605c5038c7a182886ce40d16a03af1f376",
      "parents": [
        "b94132742497c32fdec5316cec60bf8f279a81aa"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Jun 26 00:45:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 00:45:03 2026 +0800"
      },
      "message": "ci: clone proper repo for snapshot gen (#139)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "b94132742497c32fdec5316cec60bf8f279a81aa",
      "tree": "505a75e54e02e6145c028979881126f845f6787b",
      "parents": [
        "329913a352b387cf99bdc22ae7251b55dcccbff3"
      ],
      "author": {
        "name": "Chojan Shang",
        "email": "psiace@apache.org",
        "time": "Thu Jun 25 11:27:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 11:27:51 2026 +0800"
      },
      "message": "test: add count-min C++ serialization compatibility tests (#92)\n\n* Add Count-Min C++ serialization compatibility tests\n\n* test: use count-min C++ binary snapshots"
    },
    {
      "commit": "329913a352b387cf99bdc22ae7251b55dcccbff3",
      "tree": "825cb1dd9ddaffd45a644ee6526289d549be88de",
      "parents": [
        "c6ed433e5c7bff2bcf4577004e762270a1f70517"
      ],
      "author": {
        "name": "Anastasios Bakogiannis",
        "email": "anastasios.bakogiannis@datadoghq.com",
        "time": "Tue Jun 09 10:30:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 16:30:37 2026 +0800"
      },
      "message": "feat: Expose Sketch Memory Footprint (#136)"
    },
    {
      "commit": "c6ed433e5c7bff2bcf4577004e762270a1f70517",
      "tree": "c0a509e0d3bffc2d315eaf9c89604b31fb3363e5",
      "parents": [
        "779a4678072b4f4c5d476a83c4fb7b199461b6bb"
      ],
      "author": {
        "name": "Paul Masurel",
        "email": "paul.masurel@datadoghq.com",
        "time": "Tue May 19 17:39:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 17:39:54 2026 +0200"
      },
      "message": "Bugfix: HLL4 written in rust cannot not be loaded in Java (#132)"
    },
    {
      "commit": "779a4678072b4f4c5d476a83c4fb7b199461b6bb",
      "tree": "1ee1dd0c0a148eabc7f55d3c473a03415e15062a",
      "parents": [
        "38c43c60191543989f1b5ddce7873e1a16c00320"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon May 18 22:35:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 22:35:31 2026 +0800"
      },
      "message": "chore: Refine release process in RELEASE.md (#129)"
    },
    {
      "commit": "38c43c60191543989f1b5ddce7873e1a16c00320",
      "tree": "fb4d987f9f4e3bc1832dcee551cc6a8641ecda3d",
      "parents": [
        "e9cfe556fb16d3b0174eb5c22ea7d6960a652caa"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon May 18 21:59:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 21:59:59 2026 +0800"
      },
      "message": "chore: Update CHANGELOG for v0.3.0 (#131)"
    },
    {
      "commit": "e9cfe556fb16d3b0174eb5c22ea7d6960a652caa",
      "tree": "e1892e8a243de09bd000a9a81139c9fd86632083",
      "parents": [
        "9a80c604bec14b14000fc20d47f9f4b3c2baa5a1"
      ],
      "author": {
        "name": "Filippo",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Fri May 15 12:51:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 12:51:13 2026 +0200"
      },
      "message": "fix(hll): preserve set coupon order when serializing (#128)\n\n* fix(hll): preserve set coupon order when serializing\n\nCompact HLL Set serialization used to sort retained coupons before writing\nbytes. Java and C++ write compact Set coupons in hash table iteration order.\n\nWrite the existing iterator output directly. This keeps the compact format\nand removes the extra allocation.\n\n* test(hll): add byte exact coupon serialization checks"
    },
    {
      "commit": "9a80c604bec14b14000fc20d47f9f4b3c2baa5a1",
      "tree": "a9a1d6d83867e5ec3fb5877262a78a47e8f52dc9",
      "parents": [
        "4ea1f15b4be96577a6db5647fb7feebd242c313d"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed May 13 09:14:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 01:14:17 2026 +0000"
      },
      "message": "chore: ensure lockfile up-to-date (#126)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "4ea1f15b4be96577a6db5647fb7feebd242c313d",
      "tree": "301ac556a9add31694f259ac0d9db84e1e0f26f7",
      "parents": [
        "e13d9eafcb5877dacdd74a83f7e35ec57cd81436"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue May 12 23:54:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 23:54:04 2026 +0800"
      },
      "message": "chore: fixup signature verification commands in RELEASE.md (#124)"
    },
    {
      "commit": "e13d9eafcb5877dacdd74a83f7e35ec57cd81436",
      "tree": "9f000a92e3bacc9e111d97f2c15e221155dceb06",
      "parents": [
        "a69b2382d0f350af9caad699a911ac11f27837e1"
      ],
      "author": {
        "name": "ZENOTME",
        "email": "43447882+ZENOTME@users.noreply.github.com",
        "time": "Tue May 12 23:36:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 23:36:15 2026 +0800"
      },
      "message": "chore: bump version to 0.3.0 (#125)"
    },
    {
      "commit": "a69b2382d0f350af9caad699a911ac11f27837e1",
      "tree": "607c7de4fb9202dda9b03f907d101ac06cac307e",
      "parents": [
        "812aa90284494140eea68836b21baeb5afd0ff26"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon May 11 19:18:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 11:18:59 2026 +0000"
      },
      "message": "test: for hll::Array4::shift_to_bigger_cur_min (#123)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "812aa90284494140eea68836b21baeb5afd0ff26",
      "tree": "b1e264457394150128d5d75134ee2c9406d0b499",
      "parents": [
        "ea6cf4b314a2727ab4f4034ef72fe5f05a727578"
      ],
      "author": {
        "name": "Anastasios Bakogiannis",
        "email": "t.bakogiannis@gmail.com",
        "time": "Mon May 11 11:59:56 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 17:59:56 2026 +0800"
      },
      "message": "fix: correct assetion logic (#122)"
    },
    {
      "commit": "ea6cf4b314a2727ab4f4034ef72fe5f05a727578",
      "tree": "7fe5304def0a0156efcea1d8baf21fcee2b69e6c",
      "parents": [
        "9884dae6722062e26e24cc086806f9f855d996ef"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sun May 10 23:28:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 23:28:58 2026 +0800"
      },
      "message": "chore: changelog and release docs (#121)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "9884dae6722062e26e24cc086806f9f855d996ef",
      "tree": "e88f3a790555970301643a2c66194ad477470cb2",
      "parents": [
        "3a33bddd0bc5f8448d50411dde9d276a838e5fa0"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat May 09 23:32:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 09 23:32:05 2026 +0800"
      },
      "message": "refactor: gate sketches with feature flags  (#120)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "3a33bddd0bc5f8448d50411dde9d276a838e5fa0",
      "tree": "34dfccccd7337be2443b27c0ae79b59339fc38d5",
      "parents": [
        "dd1865287234c33e8e85639c5662f4788a3c92cc"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri May 08 15:39:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 15:39:42 2026 +0800"
      },
      "message": "refactor: introduce hash_value for compatible hashing (#118)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "dd1865287234c33e8e85639c5662f4788a3c92cc",
      "tree": "2d7885ae17a759fee95b039a635ca403203e59bd",
      "parents": [
        "b1544aa873cf7f91a7998f382eec842bf15eb023"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu May 07 18:11:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 18:11:10 2026 +0800"
      },
      "message": "chore: Add back required approving review count to PR settings (#119)"
    },
    {
      "commit": "b1544aa873cf7f91a7998f382eec842bf15eb023",
      "tree": "cba8168ebac80989a9d15b3a052dbf590606b010",
      "parents": [
        "7fa974ed967d423eb3da76ce9a8991d3b26a8692"
      ],
      "author": {
        "name": "Filippo",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Wed Apr 22 14:09:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:09:05 2026 +0200"
      },
      "message": "fix(hll): update silently dropped after deserializing a compact List sketch (#117)\n\nWhen an `HllSketch` in **List mode** is serialized it uses compact format:\nonly the live coupons are written to disk, with no trailing `COUPON_EMPTY`\nsentinels. On deserialization, the container was allocated with exactly\n`coupon_count` slots, leaving the array fully packed.\n\n`list::update()` scans linearly for a `COUPON_EMPTY` (`0`) sentinel to find\nan insertion slot. Finding none, it fell through silently — discarding every\nvalue added after the round-trip.\n\nAlways allocate `1 \u003c\u003c lg_arr` slots (initialized to `COUPON_EMPTY`) in\n`List::deserialize()`, reading only `coupon_count` elements from the byte\nstream in compact mode. The trailing empty slots are then available as\nsentinels for subsequent `update()` calls.\n\nFixes #115."
    },
    {
      "commit": "7fa974ed967d423eb3da76ce9a8991d3b26a8692",
      "tree": "b21f3aaff6b1fc8ad47a12cfeda1fad2f37ee9a4",
      "parents": [
        "6398732a8177e420a8a1d9c038eb82999019946f"
      ],
      "author": {
        "name": "Filippo",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Sat Apr 18 10:35:32 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 18 10:35:32 2026 +0200"
      },
      "message": "feat(hll): expose coupon fn and improve update_with_coupon docs (#116)\n\n* feat(hll): expose coupon fn and improve update_with_coupon docs\n\nMake `hll::coupon` public so callers can compute a coupon from any\nhashable value without going through `HllSketch::update`. This enables\na common optimization: pre-compute coupons for dictionary-encoded data\nonce and fan them into multiple independent per-bucket sketches via\n`update_with_coupon`, avoiding redundant hashing.\n\n- `hll::coupon` is now `pub` with full documentation\n- `HllSketch::update` cross-references `coupon` + `update_with_coupon`\n- `HllSketch::update_with_coupon` gains a detailed doc comment\n  explaining the coupon format and the multi-sketch use case\n\nFollows up on #113 which made `update_with_coupon` public.\n\n* feat(hll): introduce Coupon newtype and expose update_with_coupon\n\nIntroduce a `Coupon` newtype (a 32-bit value encoding an HLL slot index\nin the low 26 bits and a register value in the high 6 bits) in place of\nthe raw `u32` and the free functions `get_slot`, `get_value`,\n`pack_coupon`, and `coupon` that existed before.\n\n`Coupon` is now a public type with a single public constructor:\n\n    let c \u003d Coupon::from_hash(\"hello\");\n\nCallers can then feed the same coupon into many independent sketches\nwithout re-hashing:\n\n    sketch_a.update_with_coupon(c);\n    sketch_b.update_with_coupon(c);\n\nThis is useful for dictionary-encoded data where per-bucket HLL sketches\nare maintained: compute the coupon for each term id once, cache it, and\nfan it out across all relevant per-bucket sketches.\n\nInternal helper methods (`is_empty`, `raw`, `slot`, `value`, `pack`) are\ncrate-private and keep the public surface minimal.\n\nCo-authored-by: Paul Masurel \u003cpaul.masurel@datadoghq.com\u003e\nFollows up on #113 which made `update_with_coupon` public.\n\n---------\n\nCo-authored-by: Paul Masurel \u003cpaul.masurel@datadoghq.com\u003e"
    },
    {
      "commit": "6398732a8177e420a8a1d9c038eb82999019946f",
      "tree": "55eac4f689db386abd2bf14decbedd42b0501398",
      "parents": [
        "6dbe4146591c3cf83e5f94f72fbec5884de11057"
      ],
      "author": {
        "name": "Yichi Zhang",
        "email": "109252977+YichiZhang0613@users.noreply.github.com",
        "time": "Sat Apr 11 15:11:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 07:11:12 2026 +0000"
      },
      "message": "tests: add boundary tests for bit_pack and CpcSketch (#108)\n\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "6dbe4146591c3cf83e5f94f72fbec5884de11057",
      "tree": "8085670ec877eda843a324e97b05a3e6d423973d",
      "parents": [
        "bd0e8b5f5616b6c78d3b82a9098d53714a575c51"
      ],
      "author": {
        "name": "Cancai Cai",
        "email": "77189278+caicancai@users.noreply.github.com",
        "time": "Fri Apr 10 23:56:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 23:56:42 2026 +0800"
      },
      "message": "chore: remove incomplete examples module (#112) (#114)\n\nThe examples module was incomplete and not present in other DataSketches\ndialect libraries. Basic usage examples are better served by rustdoc\nexamples directly in the code."
    },
    {
      "commit": "bd0e8b5f5616b6c78d3b82a9098d53714a575c51",
      "tree": "c0aaf4b1fd93d7814d8a50ae5eef1f71d37dbac0",
      "parents": [
        "ab8949de3a1bf1cf4f6d410bb02ecf93101cdbfb"
      ],
      "author": {
        "name": "Paul Masurel",
        "email": "paul.masurel@datadoghq.com",
        "time": "Fri Apr 10 16:12:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 16:12:36 2026 +0200"
      },
      "message": "Made update_with_coupon public. (#113)"
    },
    {
      "commit": "ab8949de3a1bf1cf4f6d410bb02ecf93101cdbfb",
      "tree": "1972b4a1b91cf985cae22e95dcf9828cfb461720",
      "parents": [
        "00c3bc8448324eed6f60a34cb01127d2184f09b3"
      ],
      "author": {
        "name": "Cancai Cai",
        "email": "77189278+caicancai@users.noreply.github.com",
        "time": "Wed Mar 25 21:16:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 21:16:23 2026 +0800"
      },
      "message": "chore: update copyright year in NOTICE (#110)"
    },
    {
      "commit": "00c3bc8448324eed6f60a34cb01127d2184f09b3",
      "tree": "f8930a5302b5ba2df4f48fa7d52975093cfafdd9",
      "parents": [
        "b93315ecd52f5d9c0864b9a9d675f9d5b9d62e08"
      ],
      "author": {
        "name": "ZENOTME",
        "email": "43447882+ZENOTME@users.noreply.github.com",
        "time": "Tue Mar 17 22:48:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 14:48:41 2026 +0000"
      },
      "message": "fix(theta): compact should use self.is_empty for consistency (#107)"
    },
    {
      "commit": "b93315ecd52f5d9c0864b9a9d675f9d5b9d62e08",
      "tree": "a09a581eec7c9a4a3e6d6757a846ab3df640013b",
      "parents": [
        "5aef2669ce451bf0f0f508afadd39434200ec6e9"
      ],
      "author": {
        "name": "ZENOTME",
        "email": "43447882+ZENOTME@users.noreply.github.com",
        "time": "Tue Mar 17 09:43:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 09:43:11 2026 +0800"
      },
      "message": "feat(theta): introduce intersection theta set operation (#100)\n\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "5aef2669ce451bf0f0f508afadd39434200ec6e9",
      "tree": "52365f037a42345739804a1b022e73a7c9667c03",
      "parents": [
        "bf8438f691b10e99fee3a121318efb5f61bcea45"
      ],
      "author": {
        "name": "Yichi Zhang",
        "email": "109252977+YichiZhang0613@users.noreply.github.com",
        "time": "Thu Mar 05 21:34:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 05 13:34:11 2026 +0000"
      },
      "message": "fix: comment and assertions inconsistency (#106)\n\n"
    },
    {
      "commit": "bf8438f691b10e99fee3a121318efb5f61bcea45",
      "tree": "d22cc53e0c6e89e8f9cb3260777cb9940c640030",
      "parents": [
        "f0d997e2abc24014311e1ee74f54107c6a054c99"
      ],
      "author": {
        "name": "Xuanwo",
        "email": "github@xuanwo.io",
        "time": "Mon Mar 02 20:29:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 20:29:03 2026 +0800"
      },
      "message": "chore(theta): flatten preamble_longs branches for clippy (#104)\n\n"
    },
    {
      "commit": "f0d997e2abc24014311e1ee74f54107c6a054c99",
      "tree": "52dc624821c1373b674a1aff9b22b059847bea3e",
      "parents": [
        "c41fe90be06a3e5a932a8bbb1696010811ac4e46"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Feb 20 20:24:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 20 12:24:14 2026 +0000"
      },
      "message": "chore: fine tune binomial_bounds.rs code (#103)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "c41fe90be06a3e5a932a8bbb1696010811ac4e46",
      "tree": "e894145d9c7ef38a2612ffa79cf9736002f02138",
      "parents": [
        "d6cc4bb8d9c46371d36db882d8bbe2945f96a61f"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Feb 20 20:03:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 20 12:03:42 2026 +0000"
      },
      "message": "chore: simplify codec checks code (#102)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "d6cc4bb8d9c46371d36db882d8bbe2945f96a61f",
      "tree": "51a85127873b7519f11822b879e21bcde7f507e8",
      "parents": [
        "6546d665c629e311b27279c2212a7b92b922fc09"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Feb 20 19:12:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 20 11:12:57 2026 +0000"
      },
      "message": "feat: impl CpcWrapper (#101)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "6546d665c629e311b27279c2212a7b92b922fc09",
      "tree": "d34f117e4def7875186eaa0505433dd8907a2ec4",
      "parents": [
        "74b2b87d8b54606414d5f5a6e59a52fea4867838"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Feb 19 19:22:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 19 11:22:24 2026 +0000"
      },
      "message": "refactor: export FrequentItemValue and improve docs (#98)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "74b2b87d8b54606414d5f5a6e59a52fea4867838",
      "tree": "e6bc55c44ad98237dbe9f6cae1ad5fcabb9d0c4f",
      "parents": [
        "761491eff261e5a9f378c3006b71b3986653d5b2"
      ],
      "author": {
        "name": "ZENOTME",
        "email": "43447882+ZENOTME@users.noreply.github.com",
        "time": "Thu Feb 19 11:40:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 19 11:40:05 2026 +0800"
      },
      "message": "feat(theta): compact sketch serde v3/v4 (#77)\n\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "761491eff261e5a9f378c3006b71b3986653d5b2",
      "tree": "9e19a0f8e8771d20e78e49c964a3c00682a6b6b3",
      "parents": [
        "434fd5713db405d6eb2a6036df6a4931b115193e"
      ],
      "author": {
        "name": "Filippo",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Sat Feb 14 12:40:31 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 14 12:40:31 2026 +0100"
      },
      "message": "chore(x): add doc lint (#95)\n\n* chore(x): add doc lint\n\n* chore(x): remove fix variant for make_docs_cmd"
    },
    {
      "commit": "434fd5713db405d6eb2a6036df6a4931b115193e",
      "tree": "3594237c0a0613b8a11f95efdbee31371b65a88d",
      "parents": [
        "be55f8d8fd5a17abcff7d591270916512f57c3b9"
      ],
      "author": {
        "name": "Filippo",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Sat Feb 14 11:26:59 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 14 11:26:59 2026 +0100"
      },
      "message": "fix(bloom): align builder parameters with java implementation (#93)\n\n* fix(bloom): align MAX_NUM_BITS with java implementation\n* fix(bloom): align builder parameters to java limits\n* fix(bloom): make constants public as member of the builder"
    },
    {
      "commit": "be55f8d8fd5a17abcff7d591270916512f57c3b9",
      "tree": "4b5f2020661e40c83910e4600f132101119bcc53",
      "parents": [
        "921fcd1682b68d5ceeee539f64c9e45636657c0f"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 14 16:03:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 14 09:03:32 2026 +0100"
      },
      "message": "chore: Remove early development caution warning (#94)\n\n"
    },
    {
      "commit": "921fcd1682b68d5ceeee539f64c9e45636657c0f",
      "tree": "1247726d7f47e138a18edd3e5c5db0a51ddb87c2",
      "parents": [
        "9a830707410a66823e997b04cfd6e48890904957"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Feb 14 08:49:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 14 00:49:10 2026 +0000"
      },
      "message": "refactor: expose codec and add centralized Family  (#91)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "9a830707410a66823e997b04cfd6e48890904957",
      "tree": "e0a9dd21f50fb5470d491e855fb1cc108991a0df",
      "parents": [
        "2fc50aecb709eb8a6dbed99d5d7a548d18a58923"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Feb 11 09:31:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 11 01:31:10 2026 +0000"
      },
      "message": "chore: check seed for CpcSketch and CountMinSketch (#85)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "2fc50aecb709eb8a6dbed99d5d7a548d18a58923",
      "tree": "0fe54ada6fc6738817f4b12aa11fbbf53530ae18",
      "parents": [
        "346f7a2587b2f941dd85fde319db875e4108e077"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Feb 11 08:59:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 11 08:59:03 2026 +0800"
      },
      "message": "chore(tdigest): better handle Centroid adds (#88)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "346f7a2587b2f941dd85fde319db875e4108e077",
      "tree": "aba320f075f6e4196ff531bea352a79c1235b47c",
      "parents": [
        "309b1346cc0ab48fd2e14771da100fbcfc91e44a"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Feb 09 00:11:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 00:11:46 2026 +0800"
      },
      "message": "refactor: sort PairTable values with std sort_unstable (#86)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "309b1346cc0ab48fd2e14771da100fbcfc91e44a",
      "tree": "775264671d9e72a001348fd7ae0ebb152f1ff3c6",
      "parents": [
        "e053fae5178f0ecd3f2fb45323f0f3eb98c81b30"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Feb 06 10:21:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 06 10:21:06 2026 +0800"
      },
      "message": "feat: support cpcsketch serde (#84)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "e053fae5178f0ecd3f2fb45323f0f3eb98c81b30",
      "tree": "9dcfb4fc6ab83cf0e4c4de12aef68679a8d5cd2d",
      "parents": [
        "0bb6c62a025e2d7bf807c33074f06cfa2dc4feab"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Feb 03 22:55:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 03 14:55:46 2026 +0000"
      },
      "message": "chore: define static lookup table as static variables (#83)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "0bb6c62a025e2d7bf807c33074f06cfa2dc4feab",
      "tree": "cdb3ac8d2185e383e4b2e317e7913bcbc9de595c",
      "parents": [
        "ae13a8308adfef29c20e56a5afd738fef11b8228"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Feb 02 10:56:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 02 10:56:15 2026 +0800"
      },
      "message": "chore: code tidy for FrequentItems and impl for more value type (#82)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "ae13a8308adfef29c20e56a5afd738fef11b8228",
      "tree": "67e3046c2269eafb0cefc13f2f9e31d10d60fca3",
      "parents": [
        "dd12abfec488097ebcaef761042317f3e46bc0cf"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sun Feb 01 13:16:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 01 13:16:46 2026 +0800"
      },
      "message": "refactor!: rename get_result to to_sketch (#81)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\nCo-authored-by: Copilot \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "dd12abfec488097ebcaef761042317f3e46bc0cf",
      "tree": "b94c0823b5218c0989a81a74de0529ed34c52e94",
      "parents": [
        "0fee12c69c8578a07561592ac3aed01b9ae65012"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sun Feb 01 11:18:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 01 03:18:53 2026 +0000"
      },
      "message": "feat: impl CpcSketch (#75)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "0fee12c69c8578a07561592ac3aed01b9ae65012",
      "tree": "058a1a434043a7cb19aa502670f1ee78d1a3adab",
      "parents": [
        "493132cd8f435bd43c8bad7b6859babe5e75c6ad"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Jan 29 11:40:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 29 03:40:36 2026 +0000"
      },
      "message": "test: use snapshots (#80)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "493132cd8f435bd43c8bad7b6859babe5e75c6ad",
      "tree": "dcb6581d5a93721eb25d2f4eaa29555fc7ee4e53",
      "parents": [
        "d62102d6d7dc5df61f4b22bbd058636655d7ee68"
      ],
      "author": {
        "name": "Cheng-Yang Chou",
        "email": "yphbchou0911@gmail.com",
        "time": "Thu Jan 29 11:19:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 29 03:19:18 2026 +0000"
      },
      "message": "refactor: remove unnecessary allocations in error formatting (#79)\n\nSigned-off-by: Cheng-Yang Chou \u003cyphbchou0911@gmail.com\u003e"
    },
    {
      "commit": "d62102d6d7dc5df61f4b22bbd058636655d7ee68",
      "tree": "8da19428638eaa67441e3446601626036e37501e",
      "parents": [
        "81e619f3fb37ea1abaf9a8efdd5743d60d3b62e1"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Jan 29 08:10:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 29 08:10:30 2026 +0800"
      },
      "message": "chore: update README and add CHANGELOG (#78)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "81e619f3fb37ea1abaf9a8efdd5743d60d3b62e1",
      "tree": "37806d6f84b98eb161687a01bd6cf42e29f46c83",
      "parents": [
        "583ac180362a18a4f3f57b651bb99d0000e65729"
      ],
      "author": {
        "name": "Chojan Shang",
        "email": "psiace@apache.org",
        "time": "Tue Jan 27 17:24:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 09:24:58 2026 +0000"
      },
      "message": "feat: add halve and decay to countmin sketch of unsigned values (#71)\n\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "583ac180362a18a4f3f57b651bb99d0000e65729",
      "tree": "a6454fb2edcfc56978477c8c0916d887d71bdcf5",
      "parents": [
        "f3481de624936b6c7332ae1037401f2ff837f8d9"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Jan 19 16:47:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 19 16:47:35 2026 +0800"
      },
      "message": "chore: correct CountMinSketch::suggest_num_hashes panic docs (#73)\n\n"
    },
    {
      "commit": "f3481de624936b6c7332ae1037401f2ff837f8d9",
      "tree": "5de68842c548248f2376d2a9ec0adc94fee32c41",
      "parents": [
        "b2d1238464eef55ccfd6835b71a90fd031b3dc9c"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Jan 19 16:47:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 19 16:47:21 2026 +0800"
      },
      "message": "chore: enable more convenient GitHub features (#74)\n\n"
    },
    {
      "commit": "b2d1238464eef55ccfd6835b71a90fd031b3dc9c",
      "tree": "be47dfd4ad05dd5a8df1be5f2c5f04609b889df0",
      "parents": [
        "fdb38b85d22e6549ab283bf3b9b133659267d19f"
      ],
      "author": {
        "name": "Chojan Shang",
        "email": "psiace@apache.org",
        "time": "Thu Jan 15 06:11:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 14:11:16 2026 -0800"
      },
      "message": "docs: document build and test workflows (#69)\n\n* docs: document build and test workflows\n\n* docs: polish x task part\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n---------\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e"
    },
    {
      "commit": "fdb38b85d22e6549ab283bf3b9b133659267d19f",
      "tree": "7c293843442a9eec900a21aa07f1f347a3e105d9",
      "parents": [
        "1640af48016eea0d5f8fb242236dd71442f22f4d"
      ],
      "author": {
        "name": "ZENOTME",
        "email": "43447882+ZENOTME@users.noreply.github.com",
        "time": "Fri Jan 09 04:06:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 08 12:06:53 2026 -0800"
      },
      "message": "feat: add theta sketch (part 2) (#59)\n\n* feat: add theta sketch (part 2)\n\n* add binomial_bounds to support calculate lower_bound\u0026\u0026upper_bound\n* add get_lower_bound\u0026\u0026get_upper_bound in ThetaSketch\n\n* refine NumStdDev and some interface\n\n* refine code: remove unnecessary pub\n\n* better common layout\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\nCo-authored-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "1640af48016eea0d5f8fb242236dd71442f22f4d",
      "tree": "0b287a36dfeb1b3c9ec44c273a1ddae85aead1df",
      "parents": [
        "4e9a86dc70bd05b28fdbd0b90f6d4529a9a15be0"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Jan 08 21:10:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 08 21:10:38 2026 +0800"
      },
      "message": "fix: tdigest quantile edge case (#63)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "4e9a86dc70bd05b28fdbd0b90f6d4529a9a15be0",
      "tree": "2588732292b6c35d6c7c34952ffe7ad05cbceadf",
      "parents": [
        "15b1e0e30a6591c67a94c30b331f882350d45921"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Jan 08 21:02:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 08 21:02:53 2026 +0800"
      },
      "message": "chore: Remove required approving review count from PRs (#66)\n\nAdd it back when we have more committers to extend the review bandwidth."
    },
    {
      "commit": "15b1e0e30a6591c67a94c30b331f882350d45921",
      "tree": "31ea2aef6a84b49e13947e4fd9a7741a6d8a474a",
      "parents": [
        "9ade42d639afd013d19c3454a14773b6d54edc25"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Jan 08 20:51:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 08 13:51:59 2026 +0100"
      },
      "message": "ci: generate snaps stably (#65)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "9ade42d639afd013d19c3454a14773b6d54edc25",
      "tree": "a4b851ed37050c9b4f66b83b4008d2b50dd19737",
      "parents": [
        "9a765614ba711017b49f5249473d8767b3de4040"
      ],
      "author": {
        "name": "Chojan Shang",
        "email": "psiace@apache.org",
        "time": "Mon Jan 05 07:11:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 04 15:11:32 2026 -0800"
      },
      "message": "docs: add rustdoc examples across sketches (#58)\n\n* docs: add rustdoc examples across sketches\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n* docs: make docs clean and simple\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n* docs: align examples with Rust conventions\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n---------\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e"
    },
    {
      "commit": "9a765614ba711017b49f5249473d8767b3de4040",
      "tree": "277fe77e97f280798ab13c6f86c11f96ebbed098",
      "parents": [
        "22c30bcc2d9e098a2f093c17919d5ef2c498f2d4"
      ],
      "author": {
        "name": "Filippo Rossi",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Sun Jan 04 22:21:31 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 04 13:21:31 2026 -0800"
      },
      "message": "docs: document release process (#61)\n\n* docs: document release process\n\n* chore: simplify release process"
    },
    {
      "commit": "22c30bcc2d9e098a2f093c17919d5ef2c498f2d4",
      "tree": "548bfabe32c8571481e63c6a9a37f760460c9ac0",
      "parents": [
        "819f563c29cfd139a0a69be052591a5aa3368e4d"
      ],
      "author": {
        "name": "Filippo Rossi",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Thu Jan 01 01:38:05 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 31 16:38:05 2025 -0800"
      },
      "message": "chore: prepare v0.2.0 release (#57)\n\n"
    },
    {
      "commit": "819f563c29cfd139a0a69be052591a5aa3368e4d",
      "tree": "cec62a016372b1e57abd669eff793e33ac40f3dc",
      "parents": [
        "7ff21fc004062b16d9899af2ac0adee38bc9780f"
      ],
      "author": {
        "name": "Filippo Rossi",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Wed Dec 31 15:37:07 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 31 15:37:07 2025 +0100"
      },
      "message": "feat: implement bloom filter (#53)\n\n* checkpoint\n\n* checkpoint\n\n* xxhash\n\n* match cpp hashing logic\n\n* serde\n\n* cleanup\n\n* cleanup\n\n* docs\n\n* comments cleanup\n\n* builder cleanup\n\n* trade 3 loc for 1 loc\n\n* get back 1 loc"
    },
    {
      "commit": "7ff21fc004062b16d9899af2ac0adee38bc9780f",
      "tree": "82f390cac9a387292746d2658ffce54d889a0d57",
      "parents": [
        "c2cbb7c3786fa08e1d0a00ddefa6182105f90c5f"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Dec 31 22:05:27 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 31 15:05:27 2025 +0100"
      },
      "message": "refactor: use new codec utils in TDigest and Frequencies sketches (#52)\n\n* refactor: use new codec utils in TDigest and Frequencies sketches\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* for frequencies\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* fixup\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* simplify code\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "c2cbb7c3786fa08e1d0a00ddefa6182105f90c5f",
      "tree": "a623a46af9303a85a45893c1df823545421cabed",
      "parents": [
        "38fad365f74e49e74085580997c5a6565df4082b"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Dec 31 13:53:00 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 30 21:53:00 2025 -0800"
      },
      "message": "chore: fine tune frequencies and theta sketches (#51)\n\n* chore: fine tune code\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* rework frequencies codec\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* fixup\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* docs\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* resize factor is shared util\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "38fad365f74e49e74085580997c5a6565df4082b",
      "tree": "b377ed89fb231786b9aa9a78fd3fd36b0f19ea2c",
      "parents": [
        "b0e0135abd9a73dd29d2b2520b97b400893cc3b7"
      ],
      "author": {
        "name": "Chojan Shang",
        "email": "psiace@apache.org",
        "time": "Wed Dec 31 01:52:35 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 30 09:52:35 2025 -0800"
      },
      "message": "feat: add frequencies sketches (#44)\n\n* feat: add frequencies sketch\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n* refactor: align frequencies tests with HLL/TDigest like style\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n* test: try to merge more test cases\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n* refactor: merge longsketch into itemsketch\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n* refactor: align frequencies serde API with project style\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n* refactor: align api names\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n* refactor(frequencies): align errors and lower_bound semantics\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n---------\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e"
    },
    {
      "commit": "b0e0135abd9a73dd29d2b2520b97b400893cc3b7",
      "tree": "ff1eac9e384a0376be81579e77474e9b2743647e",
      "parents": [
        "0a8543e304adb7bd741be0c494967b1469bd1861"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Wed Dec 31 00:16:42 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 30 08:16:42 2025 -0800"
      },
      "message": "refactor: replace byteorder with SketchBytes and SketchSlice  (#49)\n\n* refactor: replace byteorder with SketchBytes and SketchSlice\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* for hll\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* deser hll\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* fixup\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* fmt\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "0a8543e304adb7bd741be0c494967b1469bd1861",
      "tree": "b2dd1f3956c057c8e12ac0790fc2690afa086c44",
      "parents": [
        "9c0972170c04a9149941181f88050e9966e0d5ff"
      ],
      "author": {
        "name": "ZENOTME",
        "email": "43447882+ZENOTME@users.noreply.github.com",
        "time": "Wed Dec 31 00:15:02 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 30 08:15:02 2025 -0800"
      },
      "message": "feat: add theta sketch (part 1) (#45)\n\n* feat: add theta sketch (part 1)\n\n- add hash table for theta sketch\n- add ThetaSketch\n\n* refine some function name and comment\n\n* refine: use unified default seed DEFAULT_UPDATE_SEED\n\n* refine some style"
    },
    {
      "commit": "9c0972170c04a9149941181f88050e9966e0d5ff",
      "tree": "107ae6c21bc0720b10febc39f4ac2315465fab7c",
      "parents": [
        "f5143c311ae169b9c0bead1e47bd58881526f83e"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Dec 30 18:44:29 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 30 11:44:29 2025 +0100"
      },
      "message": "chore: centralize default seed (#48)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "f5143c311ae169b9c0bead1e47bd58881526f83e",
      "tree": "f8841d9ba86844a27d8e75dd4f427494a2ecd444",
      "parents": [
        "8855aa6462da50979c0804f0ee63b23b30b79910"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Dec 30 09:53:15 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 29 17:53:15 2025 -0800"
      },
      "message": "feat: add a generic error type  (#47)\n\n* feat: add a generic error type\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* apply\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* convenience constructors\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* more\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* rename error kind\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* no need source for now\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "8855aa6462da50979c0804f0ee63b23b30b79910",
      "tree": "a1d8ced6cf7dcd401248a55da669cfd8730bc963",
      "parents": [
        "f22231e28732a07e94807e3299d01ec6cd43a4d1"
      ],
      "author": {
        "name": "Chojan Shang",
        "email": "psiace@apache.org",
        "time": "Fri Dec 26 06:01:41 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 25 14:01:41 2025 -0800"
      },
      "message": "feat: implement count-min sketch (#38)\n\n* feat: implement count-min sketch\n\n* test: add count-min cases from rust-count-min-sketch\n\n* fix: move countmin module into datasketches crate\n\n* chore: make lint happy\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e\n\n---------\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e"
    },
    {
      "commit": "f22231e28732a07e94807e3299d01ec6cd43a4d1",
      "tree": "8d8d8bec71cdb380a845d6d2d263b6379612aa9e",
      "parents": [
        "792b4c5a34e3121100ac4d71fa2e8287b90a6244"
      ],
      "author": {
        "name": "Chojan Shang",
        "email": "psiace@apache.org",
        "time": "Fri Dec 26 06:01:10 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 25 14:01:10 2025 -0800"
      },
      "message": "feat: add xxhash64 (#39)\n\nSigned-off-by: Chojan Shang \u003cpsiace@apache.org\u003e"
    },
    {
      "commit": "792b4c5a34e3121100ac4d71fa2e8287b90a6244",
      "tree": "bbb39e426d4d9a785bf899792db42b9ca642d985",
      "parents": [
        "560b83ea5a7ab7b57a06466277d39048dfa584db"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Thu Dec 25 16:59:04 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 25 00:59:04 2025 -0800"
      },
      "message": "build: set up workspace layout  (#43)\n\n* build: set up workspace layout\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* fixup\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* try fix windows compile\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* fix(xtask): exclude xtask binary from build command to avoid file locking on Windows\n\n* workaround windows issue\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* windows runner has no yq\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "560b83ea5a7ab7b57a06466277d39048dfa584db",
      "tree": "1ce52db250db0a3b3567bf8191a7be52606c8918",
      "parents": [
        "51347b3507e02826a37ad3023f43e6453fe4aa1c"
      ],
      "author": {
        "name": "Filippo Rossi",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Mon Dec 22 15:21:50 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 15:21:50 2025 +0100"
      },
      "message": "chore: fix CI failing on main (#40)\n\n"
    },
    {
      "commit": "51347b3507e02826a37ad3023f43e6453fe4aa1c",
      "tree": "10d395e779c7b5f61acb4a56ffebb0b907e4e765",
      "parents": [
        "a081c458d013c60f05321b45c530b3ec4c98e709"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Dec 22 21:29:14 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 14:29:14 2025 +0100"
      },
      "message": "chore: rustfmt rules on nightly (#33)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "a081c458d013c60f05321b45c530b3ec4c98e709",
      "tree": "b193d32c23639aa56de9f451997403e46b8bcdc8",
      "parents": [
        "a21d7f671d2956823c687ded55b5ad00ed3b890b"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Dec 22 17:22:16 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 10:22:16 2025 +0100"
      },
      "message": "refactor: implement MurmurHash3 internally (#36)\n\n* add tests for murmurhash3\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* impl murmurhash3\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* test and fix up\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* drop mur3 dep\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* lint\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "a21d7f671d2956823c687ded55b5ad00ed3b890b",
      "tree": "6e40b15872af5d160c3b02992a418a063158d63d",
      "parents": [
        "bb6c191714f9f5e1349bc43ac2ab28ce29a934d3"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Sat Dec 20 03:32:26 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 19 11:32:26 2025 -0800"
      },
      "message": "feat: implement T-Digest (#23)\n\n* feat: implement T-Digest\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* impl merge and compress\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* impl get_rank\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* impl merge and add tests\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* demo iter\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* impl ser\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* impl de\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* fine tune deserialize tags\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* define code in one place\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* centralize compare logics\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* finish serde\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* enable freeze TDigestMut\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* add serde compat test files\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* support deserialize_compat\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* impl cdf and pmf\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* fine tune docs\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* naming and let  to do the reserve\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* further tidy\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* best effort avoid NaN\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* fixup! best effort avoid NaN\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* concrete tag\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* filter invalid inputs\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* weight nonzero and should not overflow\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* other_mean - self_mean may produce inf\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* no need for checking in sk files now\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* reuse test data loading logics\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "bb6c191714f9f5e1349bc43ac2ab28ce29a934d3",
      "tree": "8f52c462b2d730e620a9ce3cf7d98f6d940db69b",
      "parents": [
        "774fa42a2f5e0ff563ec6518b6ee47c39246c7f1"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Dec 19 17:46:05 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 19 10:46:05 2025 +0100"
      },
      "message": "chore: Prevent compilation on big-endian targets (#31)\n\nAdd compile error for unsupported big-endian targets."
    },
    {
      "commit": "774fa42a2f5e0ff563ec6518b6ee47c39246c7f1",
      "tree": "98576024a55e8483ed571cd7261b0ba369c1c710",
      "parents": [
        "4f5f2665b590be992e75eb5d6d5f8ee6b2cc75b4"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Fri Dec 19 13:04:37 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 18 21:04:37 2025 -0800"
      },
      "message": "build: generate snapshots on the fly  (#29)\n\n* build: generate snapshots on the fly\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* impl with docker\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* use a python script\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* for cpp snapshots\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* tidy\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* Add tool to generate serialization test data for Java and C++\n\n* setup jdk 25\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* Enhance snapshot generation script: Windows support and output capturing\n\n* Stream command output to stdout for real-time CI logs\n\n* fine tune\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "4f5f2665b590be992e75eb5d6d5f8ee6b2cc75b4",
      "tree": "f645bae5cf2584e45e46859ea31c4f6c28544595",
      "parents": [
        "9bbe3ff2844684447bad2022e2ce2873404de9cb"
      ],
      "author": {
        "name": "Filippo Rossi",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Wed Dec 17 15:52:00 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 17 15:52:00 2025 +0100"
      },
      "message": "test cleanup (#26)\n\n"
    },
    {
      "commit": "9bbe3ff2844684447bad2022e2ce2873404de9cb",
      "tree": "a979d50007587bdd6c33d1e6522595eeecfb0940",
      "parents": [
        "9e89596dfbdcfd028db58ce23ecf463dbe213b54"
      ],
      "author": {
        "name": "Filippo Rossi",
        "email": "12383260+notfilippo@users.noreply.github.com",
        "time": "Wed Dec 17 15:08:52 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 17 15:08:52 2025 +0100"
      },
      "message": "feat(hll): implement HllUnion (#25)\n\n* bootstrap\n\n* basic\n\n* get_result\n\n* cleanup\n\n* assertions\n\n* cleanup\n\n* api\n\n* docs\n\n* crate to super visibility\n\n* license header"
    },
    {
      "commit": "9e89596dfbdcfd028db58ce23ecf463dbe213b54",
      "tree": "d99c5499a35bfb999852b980e41247416d7d3d79",
      "parents": [
        "c6001128c77c624ad565293a9e2759c35a3d0680"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Tue Dec 16 18:55:08 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 16 11:55:08 2025 +0100"
      },
      "message": "chore: check InsufficientData before index access (#24)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "c6001128c77c624ad565293a9e2759c35a3d0680",
      "tree": "b66cc551f23914a7028709f4211366efcb2ea7fb",
      "parents": [
        "e5dab928d470ee21d0efb6a6876a077de8955c5c"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Dec 15 22:38:45 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 15 15:38:45 2025 +0100"
      },
      "message": "chore: code tidy integration tests (#20)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "e5dab928d470ee21d0efb6a6876a077de8955c5c",
      "tree": "96a3809ddd58755263741203900128aad768a6d1",
      "parents": [
        "f37288fab5d3d243d0c4f71c06f55853e6b452d5"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Dec 15 20:21:55 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 15 13:21:55 2025 +0100"
      },
      "message": "chore: fine tune asfyaml settings (#19)\n\n* chore: fixup new typos glossary and linters\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n* chore: fine tune asfyaml settings\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e\n\n---------\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "f37288fab5d3d243d0c4f71c06f55853e6b452d5",
      "tree": "df6172a71bb59dafd21a39d04f1010088e5037e0",
      "parents": [
        "4daf84c1a9a784a128965a206df0c25b4c9e96a2"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Dec 15 20:20:54 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 15 13:20:54 2025 +0100"
      },
      "message": "chore: fixup new typos glossary and linters (#18)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    },
    {
      "commit": "4daf84c1a9a784a128965a206df0c25b4c9e96a2",
      "tree": "92d1c666cd73422005a1f7bd4c74d53936aa0541",
      "parents": [
        "dd38076207dbd14bf09cc4cdfc72c6da14c73b2d"
      ],
      "author": {
        "name": "tison",
        "email": "wander4096@gmail.com",
        "time": "Mon Dec 15 18:53:00 2025 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 15 11:53:00 2025 +0100"
      },
      "message": "ci: install rust toolchain without actions (#16)\n\nSigned-off-by: tison \u003cwander4096@gmail.com\u003e"
    }
  ],
  "next": "dd38076207dbd14bf09cc4cdfc72c6da14c73b2d"
}
