)]}'
{
  "commit": "fd81a03ec91c4e729bb2c4f0456300015972bad0",
  "tree": "da2c175d3e78137335c54139b1053ff21afbf1c8",
  "parents": [
    "8665ee8100e8b305e026abd6cf17841ab41f329b"
  ],
  "author": {
    "name": "Jason Rhinelander",
    "email": "jason@imaginary.ca",
    "time": "Mon Jul 31 23:32:34 2017 -0400"
  },
  "committer": {
    "name": "Jason Rhinelander",
    "email": "jason@imaginary.ca",
    "time": "Thu Aug 17 09:33:27 2017 -0400"
  },
  "message": "Lazy instance value pointer allocation\n\nWe currently allocate instance values when creating the instance itself\n(except when constructing the instance for a `cast()`), but there is no\nparticular reason to do so: the instance itself and the internals (for\na non-simple layout) are allocated via Python, with no reason to\nexpect better locality from the invoked `operator new`.  Moreover, it\nmakes implementation of factory function constructors trickier and\nslightly less efficient: they don\u0027t use the pre-eallocate the memory,\nwhich means there is a pointless allocation and free.\n\nThis commit makes the allocation lazy: instead of preallocating when\ncreating the instance, the allocation happens when the instance is\nfirst loaded (if null at that time).\n\nIn addition to making it more efficient to deal with cases that don\u0027t\nneed preallocation, this also allows for a very slight performance\nincrease by not needing to look up the instances types during\nallocation.  (There is a lookup during the eventual load, of course, but\nthat is happening already).\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e1823bd561b6f78dd2f984e6ced0c58502316462",
      "old_mode": 33188,
      "old_path": "include/pybind11/cast.h",
      "new_id": "4b5a4bfc51bea482f9fa65248b7b8ef83ae61475",
      "new_mode": 33188,
      "new_path": "include/pybind11/cast.h"
    },
    {
      "type": "modify",
      "old_id": "6f9667e0531e70a70a92052f0c76cd803c2711f1",
      "old_mode": 33188,
      "old_path": "include/pybind11/detail/class.h",
      "new_id": "40efabcc175e6d8d7b4adcb176da1b54f42bc630",
      "new_mode": 33188,
      "new_path": "include/pybind11/detail/class.h"
    },
    {
      "type": "modify",
      "old_id": "2201d2b2c6856b7341a94d20259fb45c3c76bf15",
      "old_mode": 33188,
      "old_path": "include/pybind11/detail/common.h",
      "new_id": "c7b69f58b6a4770090348a8b56509a69becdfd91",
      "new_mode": 33188,
      "new_path": "include/pybind11/detail/common.h"
    }
  ]
}
