)]}'
{
  "log": [
    {
      "commit": "4030bb1f1f0c35b30ca7009e9ebd06849dd45306",
      "tree": "2bd9401e1c1ef7d7fc45bc92cec0b8da8334e5d6",
      "parents": [
        "e89373fe6b4a7413d7acd6da1725b83ef713e6e4"
      ],
      "author": {
        "name": "ShuNing",
        "email": "nolouch@gmail.com",
        "time": "Mon Aug 13 23:31:12 2018 +0800"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Mon Aug 13 11:31:12 2018 -0400"
      },
      "message": " Improve the iterate seek to O(logN) (#25)\n\n* improve the iterate seek to O(logN)\r\n\r\n* add benchmark\r\n"
    },
    {
      "commit": "e89373fe6b4a7413d7acd6da1725b83ef713e6e4",
      "tree": "8bfc1da328a90f7eac38192c899c72dd7b66db3d",
      "parents": [
        "316fb6d3f031ae8f4d457c6c5186b9e3ded70435",
        "a7570a4e67346a53cea2f7a7ed37bd86de713d61"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Wed Jan 24 11:54:31 2018 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 24 11:54:31 2018 -0700"
      },
      "message": "Merge pull request #21 from gconnell/master\n\nAdd a Clear method that clears all nodes into a freelist."
    },
    {
      "commit": "a7570a4e67346a53cea2f7a7ed37bd86de713d61",
      "tree": "8bfc1da328a90f7eac38192c899c72dd7b66db3d",
      "parents": [
        "316fb6d3f031ae8f4d457c6c5186b9e3ded70435"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Tue Sep 26 11:12:01 2017 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Tue Sep 26 11:12:01 2017 -0600"
      },
      "message": "Add a Clear method that clears all nodes into a freelist.\n"
    },
    {
      "commit": "316fb6d3f031ae8f4d457c6c5186b9e3ded70435",
      "tree": "840c7adf192c0af74712aa018c756a18c2d12b48",
      "parents": [
        "03716cb51c13a371ed7cb086e9f13d3a8f77c5f6"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Sat Dec 17 11:35:37 2016 -0700"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Sat Dec 17 11:37:10 2016 -0700"
      },
      "message": "Pedantically rename Clone\u0027s receiver.\n\nIt annoyed me that Clone\u0027s receiver was \u0027b\u0027 but the others were all \u0027t\u0027\n:)\n"
    },
    {
      "commit": "03716cb51c13a371ed7cb086e9f13d3a8f77c5f6",
      "tree": "dc0efe9610c8f235f178cacb29b847c3e6715cf2",
      "parents": [
        "0c3044bc8bada22db67b93f5760fe3f05d6a5c25"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Thu Dec 15 17:13:04 2016 -0700"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Thu Dec 15 17:13:04 2016 -0700"
      },
      "message": "Update clone docs to disuade concurrent Clone.\n"
    },
    {
      "commit": "0c3044bc8bada22db67b93f5760fe3f05d6a5c25",
      "tree": "b4b695ebcc22e38b8d9dd35c42b3ca5493d1ede0",
      "parents": [
        "925471ac9e2131377a91e1595defec898166fe49"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Sun Dec 11 00:56:42 2016 -0700"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Tue Dec 13 09:32:43 2016 -0700"
      },
      "message": "O(1) Clone of BTree.\n\nThis change allows a BTree user to quickly clone the tree, using copy-on-write\nlogic to modify shared state.  Both trees continue to reference the original\ntree\u0027s nodes for reading, thus the clone is O(1).\nWrites to either the original or new tree after the clone copy nodes instead\nof modifying them.  These operations remain O(logn), but slow down slightly due\nto the additional mallocs/copies necessitated by the copy-on-write logic.\n\nUses a copyOnWriteContext pointer at the tree and node level to determine\nwhich nodes are able to be modified and which are read-only and must be\ncopied before modification.\n\nTo simplify things, freelists have been made safe for concurrent access.\nWith copy-on-write, keeping track of which freelists are being used by\nwhich btrees is very difficult.  Consider the case:\n\n```go\nt1 :\u003d New()\nt2 :\u003d t1.Clone()\n```\n\nWhat freelist should t1 and t2 have?  Can you write to both t1 and t2 at\nonce?  With this, the answers are \"they\u0027re sharing one\", and \"yes\".\n"
    },
    {
      "commit": "925471ac9e2131377a91e1595defec898166fe49",
      "tree": "5550ae4d532b21ede7148b179e10a4be5e0b31bf",
      "parents": [
        "7364763242911ab6d418d2722e237194938ebad0",
        "311d74f9ecd35bf58ed11142bb01f0cbb98c3990"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Wed Oct 05 14:09:59 2016 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 05 14:09:59 2016 -0600"
      },
      "message": "Merge pull request #11 from keep94/leak\n\nFix memory leak in freeNode and splitNode."
    },
    {
      "commit": "311d74f9ecd35bf58ed11142bb01f0cbb98c3990",
      "tree": "5550ae4d532b21ede7148b179e10a4be5e0b31bf",
      "parents": [
        "dd6020083c1beb75a350c68be7f503f16ae090f2"
      ],
      "author": {
        "name": "keep94",
        "email": "keep94@gmail.com",
        "time": "Wed Oct 05 11:18:25 2016 -0700"
      },
      "committer": {
        "name": "keep94",
        "email": "keep94@gmail.com",
        "time": "Wed Oct 05 11:18:25 2016 -0700"
      },
      "message": "gconnell comments.\n"
    },
    {
      "commit": "dd6020083c1beb75a350c68be7f503f16ae090f2",
      "tree": "70fc741fc80cc230e864ed749eb71a2c1749e779",
      "parents": [
        "7364763242911ab6d418d2722e237194938ebad0"
      ],
      "author": {
        "name": "keep94",
        "email": "keep94@gmail.com",
        "time": "Tue Oct 04 10:02:35 2016 -0700"
      },
      "committer": {
        "name": "keep94",
        "email": "keep94@gmail.com",
        "time": "Tue Oct 04 10:02:35 2016 -0700"
      },
      "message": "Fix memory leak in freeNode and splitNode.\n"
    },
    {
      "commit": "7364763242911ab6d418d2722e237194938ebad0",
      "tree": "fde776f8fe2563dd92748a91682bb8824c809db3",
      "parents": [
        "cbf3301ee2fff94d14cfb35eea76d4491f0553e4",
        "301b2551885c1c70a4a0a30492e570694d3a1d68"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Fri Sep 23 11:12:10 2016 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 23 11:12:10 2016 -0600"
      },
      "message": "Merge pull request #7 from tidwall/backwards-iteration\n\nbackwards iteration"
    },
    {
      "commit": "cbf3301ee2fff94d14cfb35eea76d4491f0553e4",
      "tree": "0ff2f4044230f00b435b3c1af8a304964e246ff0",
      "parents": [
        "7b8aed74a691c0b46d439180d8cf3c9835f187cc",
        "f3179a503876e52c126ad3f868de30d472805505"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Fri Sep 23 11:11:33 2016 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 23 11:11:33 2016 -0600"
      },
      "message": "Merge pull request #8 from joe2far/patch-1\n\nFixed typo in docstring"
    },
    {
      "commit": "7b8aed74a691c0b46d439180d8cf3c9835f187cc",
      "tree": "6c4ca9c6a732f7de1055628ced710d81025854b9",
      "parents": [
        "7d79101e329e5a3adf994758c578dab82b90c017",
        "1d9a97aa42aee2d9ecffe6ededc4663c89a2d758"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Wed Sep 21 13:24:52 2016 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 21 13:24:52 2016 -0600"
      },
      "message": "Merge pull request #9 from keep94/leak\n\nFix memory leak in removeAt methods."
    },
    {
      "commit": "301b2551885c1c70a4a0a30492e570694d3a1d68",
      "tree": "98e5c8bb57b42b70b942a5107aba63db9188a9bc",
      "parents": [
        "1826edc4575da8898548d113b60322d97d92b6ef"
      ],
      "author": {
        "name": "Josh Baker",
        "email": "joshbaker77@gmail.com",
        "time": "Mon Aug 29 10:29:03 2016 -0700"
      },
      "committer": {
        "name": "Josh Baker",
        "email": "joshbaker77@gmail.com",
        "time": "Mon Aug 29 10:29:03 2016 -0700"
      },
      "message": "updated comment and added iteration benchmarks\n"
    },
    {
      "commit": "1d9a97aa42aee2d9ecffe6ededc4663c89a2d758",
      "tree": "6c4ca9c6a732f7de1055628ced710d81025854b9",
      "parents": [
        "7d79101e329e5a3adf994758c578dab82b90c017"
      ],
      "author": {
        "name": "keep94",
        "email": "keep94@gmail.com",
        "time": "Fri Aug 12 14:38:29 2016 -0700"
      },
      "committer": {
        "name": "keep94",
        "email": "keep94@gmail.com",
        "time": "Fri Aug 12 14:38:29 2016 -0700"
      },
      "message": "Fix memory leak in removeAt methods.\n"
    },
    {
      "commit": "f3179a503876e52c126ad3f868de30d472805505",
      "tree": "b9a33e32ac35ca0db1d78a7e3fde7680add75b5e",
      "parents": [
        "7d79101e329e5a3adf994758c578dab82b90c017"
      ],
      "author": {
        "name": "Joe Farrell",
        "email": "joe2farrell@gmail.com",
        "time": "Fri Jun 03 17:56:21 2016 +0100"
      },
      "committer": {
        "name": "Joe Farrell",
        "email": "joe2farrell@gmail.com",
        "time": "Fri Jun 03 17:56:21 2016 +0100"
      },
      "message": "Fixed typo in docstring"
    },
    {
      "commit": "1826edc4575da8898548d113b60322d97d92b6ef",
      "tree": "60ba2ed86d154242f75aeb103c69b5a3028b9515",
      "parents": [
        "7d79101e329e5a3adf994758c578dab82b90c017"
      ],
      "author": {
        "name": "Josh Baker",
        "email": "joshbaker77@gmail.com",
        "time": "Mon May 30 16:44:33 2016 -0700"
      },
      "committer": {
        "name": "Josh Baker",
        "email": "joshbaker77@gmail.com",
        "time": "Mon May 30 16:44:33 2016 -0700"
      },
      "message": "backwards iteration\n\nAdded `DescendRange`, `DescendLessOrEqual`, `DescendGreaterThan`,\nand `Descend` functions. These are modeled after the existing\n`Ascend..` methods.\n"
    },
    {
      "commit": "7d79101e329e5a3adf994758c578dab82b90c017",
      "tree": "b0f86a126d51b8877633294baad3b9c862699c32",
      "parents": [
        "00edb8c3163323f673bbe3c04afd9429eb12117d",
        "9cda4e30bb3bdd4f7e8ae79f795c0aeaf2b2efc3"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Tue May 24 09:18:35 2016 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Tue May 24 09:18:35 2016 -0600"
      },
      "message": "Merge pull request #6 from tidwall/patch-mark-gc\n\nset removed items to nil"
    },
    {
      "commit": "9cda4e30bb3bdd4f7e8ae79f795c0aeaf2b2efc3",
      "tree": "b0f86a126d51b8877633294baad3b9c862699c32",
      "parents": [
        "00edb8c3163323f673bbe3c04afd9429eb12117d"
      ],
      "author": {
        "name": "Josh Baker",
        "email": "joshbaker77@gmail.com",
        "time": "Mon May 23 15:54:40 2016 -0700"
      },
      "committer": {
        "name": "Josh Baker",
        "email": "joshbaker77@gmail.com",
        "time": "Mon May 23 15:54:40 2016 -0700"
      },
      "message": "set removed items to nil\n\nThis fixes an issue where the Go garbage collector does not release some\nitems which have been removed from the BTree because a reference to the\nitem still exists in the items and children slices.\n"
    },
    {
      "commit": "00edb8c3163323f673bbe3c04afd9429eb12117d",
      "tree": "61717608ececd073aaeec8747d0c07438878fb48",
      "parents": [
        "ffef89d565ec4071a8ccda06b9273f9f3c73597d"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Apr 18 11:03:23 2016 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Apr 18 11:03:23 2016 -0600"
      },
      "message": "Implement Min/Max to get first/last Item in BTree.\n"
    },
    {
      "commit": "ffef89d565ec4071a8ccda06b9273f9f3c73597d",
      "tree": "055593a89535b2ca27733a25cdb63bd747bee386",
      "parents": [
        "f06e229e679911bb31a04e07ac891115822e37c3",
        "e17093fc139b98e54111fcf6746825959d0ccdfe"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Thu Apr 14 22:37:56 2016 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Thu Apr 14 22:37:56 2016 -0600"
      },
      "message": "Merge pull request #5 from keep94/freelist\n\nAllow for common free lists."
    },
    {
      "commit": "e17093fc139b98e54111fcf6746825959d0ccdfe",
      "tree": "a0f447834fba7a709815c9eb68f51193e76a10dc",
      "parents": [
        "dc5533a1fce53c1e080ca3e825f8c49245d27cf8"
      ],
      "author": {
        "name": "keep94",
        "email": "keep94@gmail.com",
        "time": "Mon Apr 11 09:19:25 2016 -0700"
      },
      "committer": {
        "name": "keep94",
        "email": "keep94@gmail.com",
        "time": "Mon Apr 11 09:19:25 2016 -0700"
      },
      "message": "Respond to gconnell comments.\n"
    },
    {
      "commit": "dc5533a1fce53c1e080ca3e825f8c49245d27cf8",
      "tree": "d48e144d0cbe87378f2082ed89d3510adc437265",
      "parents": [
        "cc6329d4279e3f025a53a83c397d2339b5705c45"
      ],
      "author": {
        "name": "Travis Keep",
        "email": "keep94@gmail.com",
        "time": "Tue Mar 08 05:02:41 2016 -0800"
      },
      "committer": {
        "name": "keep94",
        "email": "keep94@gmail.com",
        "time": "Fri Apr 08 10:18:27 2016 -0700"
      },
      "message": "Allow for common free lists.\n"
    },
    {
      "commit": "f06e229e679911bb31a04e07ac891115822e37c3",
      "tree": "f5669a1203483881eb30d89d5991f3cbcedc6641",
      "parents": [
        "cc6329d4279e3f025a53a83c397d2339b5705c45",
        "189ebcb89dea6f3ea68fd30f452a9065e5bd4586"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Wed Mar 30 09:58:14 2016 -0700"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Wed Mar 30 09:58:14 2016 -0700"
      },
      "message": "Merge pull request #3 from jonboulle/patch-1\n\nFix minor typo in README"
    },
    {
      "commit": "189ebcb89dea6f3ea68fd30f452a9065e5bd4586",
      "tree": "f5669a1203483881eb30d89d5991f3cbcedc6641",
      "parents": [
        "cc6329d4279e3f025a53a83c397d2339b5705c45"
      ],
      "author": {
        "name": "Jonathan Boulle",
        "email": "jonathanboulle@gmail.com",
        "time": "Wed Mar 30 18:48:27 2016 +0200"
      },
      "committer": {
        "name": "Jonathan Boulle",
        "email": "jonathanboulle@gmail.com",
        "time": "Wed Mar 30 18:48:27 2016 +0200"
      },
      "message": "Fix minor typo in README"
    },
    {
      "commit": "cc6329d4279e3f025a53a83c397d2339b5705c45",
      "tree": "d4536feabc6b802e5354bc05196253ab51f90b93",
      "parents": [
        "4ab78eb785690c49c2eeb4254f9a92e75f1f2ff7"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Apr 13 10:36:44 2015 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Apr 13 10:36:44 2015 -0600"
      },
      "message": "Add travis build statu to readme.\n"
    },
    {
      "commit": "4ab78eb785690c49c2eeb4254f9a92e75f1f2ff7",
      "tree": "812aeda00944732706454d05b9bf1f5caea7b062",
      "parents": [
        "0c05920fc3d98100a5e3f7fd339865a6e2aaa671"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Apr 13 10:10:07 2015 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Apr 13 10:10:07 2015 -0600"
      },
      "message": "Simple Travis CI config.\n"
    },
    {
      "commit": "0c05920fc3d98100a5e3f7fd339865a6e2aaa671",
      "tree": "a10826ebefd69f74408f11b23c7d69c60b145ed2",
      "parents": [
        "7498308728cf578f7eb9440f91619631f091af96"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Wed Oct 22 08:06:32 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Wed Oct 22 08:06:32 2014 -0600"
      },
      "message": "Switch from sync.Pool to a per-tree freelist.\n\nDone for a couple reasons, but the big one is that trees may have different\nsized nodes.\n"
    },
    {
      "commit": "7498308728cf578f7eb9440f91619631f091af96",
      "tree": "a3b330e700eebb47110a81b82a6b815b4c37373f",
      "parents": [
        "fa2189ee1904a8c301132bdeaf06acad2816c12b",
        "118f8ac19d6c200aedb80fb824c31f503e68d40d"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Oct 20 18:20:01 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Oct 20 18:20:01 2014 -0600"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:google/btree\n"
    },
    {
      "commit": "fa2189ee1904a8c301132bdeaf06acad2816c12b",
      "tree": "72ed46fbd4b3537d28f1ef0dd118dbd834f3e960",
      "parents": [
        "267b577ec35427c678a006bea2f534c88af5c362"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Oct 20 18:17:48 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Oct 20 18:17:48 2014 -0600"
      },
      "message": "Make btree degree in tests/benchmarks configurable by flag.\n"
    },
    {
      "commit": "267b577ec35427c678a006bea2f534c88af5c362",
      "tree": "cf800bef3231e41654b3a27b9b62012605a944b4",
      "parents": [
        "443ef454aa6160770f706bd77a72e15c8bac9427"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Oct 20 17:47:47 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Oct 20 17:47:47 2014 -0600"
      },
      "message": "Use a sync.Pool for btree nodes.\n"
    },
    {
      "commit": "118f8ac19d6c200aedb80fb824c31f503e68d40d",
      "tree": "aac321e630fd91e3e8f141eccc4d060c3db835b4",
      "parents": [
        "443ef454aa6160770f706bd77a72e15c8bac9427"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Tue Aug 05 07:40:42 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Tue Aug 05 07:40:42 2014 -0600"
      },
      "message": "Fix comment on node insert.\n"
    },
    {
      "commit": "443ef454aa6160770f706bd77a72e15c8bac9427",
      "tree": "96a53a1b4b3dbf8e40c4fd3463f2124817d2e793",
      "parents": [
        "c0ecf76b2139a863c1d8f82c991ba9bff5168be9"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Aug 04 15:06:58 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Mon Aug 04 15:06:58 2014 -0600"
      },
      "message": "Fix btree import in btree_mem, and update comment.\n"
    },
    {
      "commit": "c0ecf76b2139a863c1d8f82c991ba9bff5168be9",
      "tree": "1e72fca14e55faa6bbb3dc41fec1ab0f4e83187c",
      "parents": [
        "6d00f65dd4d4a572f9a2db7ee9ed93a184361a60"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Fri Aug 01 20:32:23 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gsconnell@gmail.com",
        "time": "Fri Aug 01 20:32:23 2014 -0600"
      },
      "message": "Update first line of package doc to be more descriptive.\n"
    },
    {
      "commit": "6d00f65dd4d4a572f9a2db7ee9ed93a184361a60",
      "tree": "d2c9c270bd9259ddcb056a08e3dd7109722b4f09",
      "parents": [
        "07b41b253e55263d06351b777e384bb749e40134"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Fri Aug 01 11:14:24 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Fri Aug 01 11:14:24 2014 -0600"
      },
      "message": "Move comments around, add test example.\n\nFirst off, this commit moves in-depth discussion of implementation details and\nefficiency from the BTree docstring to the package docstring.  Secondly, we add\na simple test example detailing most of the functionality of the tree.\n"
    },
    {
      "commit": "07b41b253e55263d06351b777e384bb749e40134",
      "tree": "c10d9e8ab2a28599c1b75c8b8add8449983da3d6",
      "parents": [
        "f7f14e67160ebd63def5cad41c356d1cf9d52c65"
      ],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Thu Jul 31 15:46:25 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Thu Jul 31 15:46:25 2014 -0600"
      },
      "message": "Documentation fixes, small insert optimization.\n\nMost of this is finicky documentation/comment fixes.  However, we\u0027ve also\nchanged slice insertion to use copy() instead of a manual for-loop approach.\nThat\u0027s sped up the insert benchmark by over 15%, which is pretty nice :)\n"
    },
    {
      "commit": "f7f14e67160ebd63def5cad41c356d1cf9d52c65",
      "tree": "31ac725cda1685714edc5c8633cdc101c04769ed",
      "parents": [],
      "author": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Thu Jul 31 12:17:52 2014 -0600"
      },
      "committer": {
        "name": "Graeme Connell",
        "email": "gconnell@google.com",
        "time": "Thu Jul 31 12:17:52 2014 -0600"
      },
      "message": "Initial commit.\n"
    }
  ]
}
