)]}'
{
  "commit": "e76021ea8cdf166f6036baf2f6c8eca618d110fb",
  "tree": "c354fee2bbe6c86872c63fa2252d4e0661b3c0b0",
  "parents": [
    "b04cd416f36748c808aae4d8a9f399bce2eac10f"
  ],
  "author": {
    "name": "Behdad Esfahbod",
    "email": "behdad@behdad.org",
    "time": "Sun Aug 23 00:45:35 2026 -0600"
  },
  "committer": {
    "name": "Behdad Esfahbod",
    "email": "behdad@behdad.org",
    "time": "Sun Aug 23 00:45:35 2026 -0600"
  },
  "message": "[harfrust] Cache the shaper view across shape calls\n\nShaper construction rebuilds the OtTables/AatTables view -- ~800\ninstructions of dependent-load-heavy table parsing -- on every shape\ncall, while the heavy ShaperData underneath is already cached on the\nfont instance. Keep the constructed Shaper in the per-font data,\nkeyed on hb_font_t\u0027s variation-coords serial passed down from\nhb-harfrust.cc, rebuilding both the coords snapshot and the view only\nwhen the serial changes. This also fixes the instance\u0027s coords\nsnapshot going stale if variations change after font-data creation.\n\nLock-free by hb_font_t\u0027s contract: font parameters don\u0027t change while\nshaping calls are in flight, so replacing the cached entry on a\nserial change never races a reader; the only true race is two threads\nbuilding the first entry, resolved with a compare-exchange.\n\nMeasured (clang release rig, harfrust shaper): Roboto/en-words -6.3%\ninstructions / -8..-10% cycles, Roboto/thelittleprince -1.0%/-3%,\nDevanagari Sangam/hi-words -2.4%/-4.4%, Menlo -1.4%/-2.8%, Lucida\nGrande -1.1%/-2.1%, GeezaPro -0.4%/-0.6% -- short-buffer workloads\ngain most. Outputs byte-identical throughout, including Roboto\ncross-checked against the ot shaper. Full test suite passes.\n\nNeeds a harfrust release carrying Shaper::from_font_instance\n(harfbuzz/harfrust#443).\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1524674824e7f41ad0aa89317216b861a08f99ea",
      "old_mode": 33188,
      "old_path": "src/hb-harfrust.cc",
      "new_id": "4d06c4c827098497bb6856451b13c18ff7b61984",
      "new_mode": 33188,
      "new_path": "src/hb-harfrust.cc"
    },
    {
      "type": "modify",
      "old_id": "45a47eae584b9b204e4e8c9d9d66bd068b2e8c71",
      "old_mode": 33188,
      "old_path": "src/rust/shape.rs",
      "new_id": "7ab6a94723d11c5ba9b7bea11354250b6ff3ef63",
      "new_mode": 33188,
      "new_path": "src/rust/shape.rs"
    }
  ]
}
