)]}'
{
  "commit": "0b0b6618326ef82500ebd356f9f98b3bdfa1f580",
  "tree": "8b3054709d7b287718e79b73b66fd66b529e8812",
  "parents": [
    "30aaef70b7388bec66aaca1d3280ee3932cf2b4a",
    "b62d70a3bc6d58c6439c1f83bf1bc072b3631ba0"
  ],
  "author": {
    "name": "Ben Vanik",
    "email": "ben.vanik@gmail.com",
    "time": "Thu Apr 23 20:29:24 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Apr 23 20:29:24 2026 -0700"
  },
  "message": "[HAL] Allocation Pools And Async Frontier Substrate (#24236)\n\nThis PR introduces the generic allocation-pool substrate and the async\nfrontier machinery needed to schedule queue work without baking\nallocation policy or dependency lifetime assumptions into individual\ndrivers.\n\n## Why\n\nThe old HAL allocator surface mixed backing allocation, queue allocation\npolicy, and driver-specific pool behavior. That makes it hard to express\nmemory pressure without turning ordinary capacity outcomes into errors,\nand it makes queue implementations grow local policy that should be\nshared.\n\nThe new substrate separates those concerns: pool providers expose\nbacking memory, pools implement allocation policy, and queue/device\nintegration passes pool handles instead of implicit bitmasks. Capacity\npressure is represented as a pool acquisition result, not an\n`iree_status_t`.\n\n## What\u0027s Here\n\nAsync frontiers gain fixed storage helpers, status-free merge overflow\nresults, ref-counted frontier trackers, and explicit notification\nobserve/check/wait tokens. That gives queue scheduling code a shared\ndependency substrate without borrowed-lifetime traps or hidden wake\nbehavior.\n\nHAL gains `iree_hal_pool_t`, pool sets, slab providers/caches, CPU slab\nproviders, passthrough pools, fixed-block pools, and TLSF pools.\nOversized allocation routing is explicit instead of pretending a TLSF\nslab can handle\nrequests larger than the slab itself.\n\nAllocator and device integration moves queue allocation pools to\nexplicit pool handles. Existing drivers keep the least backend-specific\npolicy necessary to preserve current behavior.\n\nThe io_uring notification path intentionally stays eventfd-backed.\nValidation found that FUTEX_WAIT relay registration has no\nuserspace-visible \"armed\" edge, so a register-then-signal sequence can\nlose the wake before the SQE is active.",
  "tree_diff": []
}
