)]}'
{
  "commit": "fe9112bbe8f27381dfad2c1fb98326bbb2a545d1",
  "tree": "271cf443bc0dcffcc508165482866794dd85f482",
  "parents": [
    "f7ac0f9ed14c47de6103f7fd057940ebf06559ff"
  ],
  "author": {
    "name": "csmartdalton",
    "email": "hello@rive.app",
    "time": "Tue Aug 30 22:54:10 2022 +0000"
  },
  "committer": {
    "name": "csmartdalton",
    "email": "hello@rive.app",
    "time": "Tue Aug 30 22:54:10 2022 +0000"
  },
  "message": "Add a simd library for SSE / NEON / WASM_SIMD\n\nAdds a \"simd\" namespace with vector utilities (SSE, NEON, WASM_SIMD),\nand implements RawPath::bounds in SIMD. This namespace relies\nexclusively on the latest clang vector extensions, so from here on, Rive\nneeds to be built with a recent clang. On our own bots, we had to bump\nthe Android builder to NDK r25b, the Ubuntu builder to 22.04, and the\nMacOS builder to macos-12.\n\nRawPathBounds bench result:\n\n  MacOS:   2.37ms -\u003e .579 (4.1x)\n  Windows: 3.53ms -\u003e 1.68 (2.1x)\n\nWindows SSE can be optimized down to .927ms (3.8x) by forcing the SSE\nmin/max instructions, but they have different behavior with NaN, which\nis why clang doesn\u0027t use them directly, so it seems like an\nover-optimization at this point.\n\nDiffs\u003d\n986b49674 Add a simd library for SSE / NEON / WASM_SIMD (#4199)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e9e0eacf111c07912fa80a7872c156bceaa07c68",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "5895a7e32798df343c865ea189939774e30f1a78",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "modify",
      "old_id": "f4c232c76cffad7151ffa7a5b0667951a18b4c50",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "4d7182e28b0be8e691bfc03fcdf1a73371934a7d",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "adbbd7d5eeb249bcd5d636b4a321882d069527b4",
      "new_mode": 33188,
      "new_path": "include/rive/math/simd.hpp"
    },
    {
      "type": "modify",
      "old_id": "6cfef0424211a635def8339561c786b2aed63c63",
      "old_mode": 33188,
      "old_path": "src/math/raw_path.cpp",
      "new_id": "161f15b8d06578131a7c55af6ec4991974901b18",
      "new_mode": 33188,
      "new_path": "src/math/raw_path.cpp"
    },
    {
      "type": "modify",
      "old_id": "bdc8a38f73cf018370f099b800ce1970720fa362",
      "old_mode": 33188,
      "old_path": "test/raw_path_test.cpp",
      "new_id": "0bcd67b1092c0f63a90b05e12ea65f4b8827b25c",
      "new_mode": 33188,
      "new_path": "test/raw_path_test.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1c45b5417b51665c21913b651bd922050c3bfbbf",
      "new_mode": 33188,
      "new_path": "test/simd_test.cpp"
    }
  ]
}
