)]}'
{
  "commit": "402cfb7c93bf4ad421f23fe7800d26d717ebf0fd",
  "tree": "898df13073b79c9fd12a59d71e1ce4397cf9facd",
  "parents": [
    "3e26b0eb43242997cd336f7263e15aff34a46982"
  ],
  "author": {
    "name": "Willem Kaufmann",
    "email": "willem.kaufmann@gmail.com",
    "time": "Wed Jul 29 09:43:01 2026 -0400"
  },
  "committer": {
    "name": "Willem Kaufmann",
    "email": "willem.kaufmann@gmail.com",
    "time": "Wed Jul 29 10:02:10 2026 -0400"
  },
  "message": "Add CompressionContext for reusing compression working memory\n\nToday, every Compress()/RawCompress() call allocates and frees an\ninternal WorkingMemory. Callers that compress frequently, or that run\nwith custom or per-thread allocators sensitive to large contiguous\nallocations, currently have no way to avoid this per-call allocation,\nand other mainstream codecs offer reusable contexts for exactly this\npurpose.\n\nAdd an opaque CompressionContext holding a reusable WorkingMemory sized\nfor kBlockSize (usable with inputs of any size and both compression\nlevels), plus Compress()/RawCompress() overloads that use it instead of\nallocating internally.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7f6fa449987e24ad772bc05fb41a1048ab3e4e17",
      "old_mode": 33188,
      "old_path": "snappy.cc",
      "new_id": "efca3af631a3e8539d1572936f61bf12378552a7",
      "new_mode": 33188,
      "new_path": "snappy.cc"
    },
    {
      "type": "modify",
      "old_id": "ecd83d7bb159ac1756b9d4766e58a44516ec91f4",
      "old_mode": 33188,
      "old_path": "snappy.h",
      "new_id": "423142b6324687f0d793f64695b7d9fcb185a86a",
      "new_mode": 33188,
      "new_path": "snappy.h"
    },
    {
      "type": "modify",
      "old_id": "2d04200efc23162e9204de7f857e0a8475f63761",
      "old_mode": 33188,
      "old_path": "snappy_unittest.cc",
      "new_id": "2ee6e2245d00aa5a92ac8d73a1ac67470360314a",
      "new_mode": 33188,
      "new_path": "snappy_unittest.cc"
    }
  ]
}
