)]}'
{
  "log": [
    {
      "commit": "5a6f3747a88f1e1019f21dcc176c4687cce2c63f",
      "tree": "a17164020e4198c82ee978f52f65b25edffa971e",
      "parents": [
        "3664e70c352e704617e6c54a9ee0b8ddbfcdd1d5",
        "c5af791ce5da8fe209b660bd665e53fbeb187b93"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Jan 12 11:56:06 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 12 11:56:06 2024"
      },
      "message": "Merge pull request #27 from matttproud/v2-notices\n\nProvide notices about v2\u0027s disposition."
    },
    {
      "commit": "c5af791ce5da8fe209b660bd665e53fbeb187b93",
      "tree": "a17164020e4198c82ee978f52f65b25edffa971e",
      "parents": [
        "3664e70c352e704617e6c54a9ee0b8ddbfcdd1d5"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Jan 12 09:21:39 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 12 09:21:39 2024"
      },
      "message": "Provide notices about v2\u0027s disposition."
    },
    {
      "commit": "3664e70c352e704617e6c54a9ee0b8ddbfcdd1d5",
      "tree": "4c938957b360693f0ddc5718f3845dbc85d8a22f",
      "parents": [
        "5a0f9169fc38cc42a5c617c3dc049548ddc27487",
        "7c0096c86977a6345402445d1048134557c72820"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Jan 12 09:13:43 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 12 09:13:43 2024"
      },
      "message": "Merge pull request #22 from stapelberg/wrap\n\npbutil: Reimplement in terms of package protodelim.\r\n\r\nThe upstream Protocol Buffer implementation finally implemented\r\nlength-delimited message encoding and decoding natively.  This\r\ncommit adapts the existing API to be built off of the upstream."
    },
    {
      "commit": "7c0096c86977a6345402445d1048134557c72820",
      "tree": "4c938957b360693f0ddc5718f3845dbc85d8a22f",
      "parents": [
        "5a0f9169fc38cc42a5c617c3dc049548ddc27487"
      ],
      "author": {
        "name": "Michael Stapelberg",
        "email": "stapelberg@golang.org",
        "time": "Thu Jan 11 08:04:21 2024"
      },
      "committer": {
        "name": "Michael Stapelberg",
        "email": "stapelberg@golang.org",
        "time": "Fri Jan 12 08:42:50 2024"
      },
      "message": "Turn this package into a wrapper for protobuf/encoding/protodelim\n\nSince Go Protobuf v1.30.0, the protodelim package is available upstream.\n\nThe only notable API difference is that protodelim does not return the number of\nbytes read, which is why I added the countingReader type to pbutil/decode.go.\n"
    },
    {
      "commit": "5a0f9169fc38cc42a5c617c3dc049548ddc27487",
      "tree": "53c363c709bb48c5347f0c8beed8a1193d138d8f",
      "parents": [
        "d8e45f28e59a34ac89667fb05d8585297f784b85"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Tue Oct 25 16:05:59 2022"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Tue Oct 25 16:05:59 2022"
      },
      "message": "pbutil: publish major version 2 of this module.\n\nThis commit provides a touch-up of v1.0.3.  Since it introduces a new\nmajor version, several steps to upgrade will need to be followed as\ndescribed in the CHANGELOG.md file.  Users of major version 1 can continue\nusing that version until they are ready to transition.\n"
    },
    {
      "commit": "d8e45f28e59a34ac89667fb05d8585297f784b85",
      "tree": "f12b3cc92c10d70d00b199894466d2522fc3978f",
      "parents": [
        "c182affec369e30f25d3eb8cd8a478dee585ae7d",
        "c5a68ec3ce6f404a433753dd8b7898faead3d3cf"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Tue Oct 25 05:15:51 2022"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 25 05:15:51 2022"
      },
      "message": "Merge pull request #18 from matttproud/refactor/modernize-to-go1.19\n\nModernize the package for 2022."
    },
    {
      "commit": "c5a68ec3ce6f404a433753dd8b7898faead3d3cf",
      "tree": "f12b3cc92c10d70d00b199894466d2522fc3978f",
      "parents": [
        "c182affec369e30f25d3eb8cd8a478dee585ae7d"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sat Sep 24 14:45:31 2022"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Oct 23 06:32:22 2022"
      },
      "message": "pbutil: modernize the package for 2022.\n\nThis commit modernizes the package along several dimensions:\n\n* Rebasing on Protocol Buffers using native reflection API.\n* Refactoring tests to use `errors.Is` and `cmp` and subtests.\n* 100% test coverage, which is not a useful measure in and of\n  itself.\n\nThis version has been tested solely on Go 1.19, though I expect\nthat Go 1.13 would work.\n"
    },
    {
      "commit": "c182affec369e30f25d3eb8cd8a478dee585ae7d",
      "tree": "42af6209c93d94d6338062d178ae6616f0887f39",
      "parents": [
        "c12348ce28de40eed0136aa2b644d0ee0650e56c",
        "6eece144be078ae6d849163a4074e3a6b90106d2"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon Dec 31 17:19:20 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 31 17:19:20 2018"
      },
      "message": "Merge pull request #15 from SamWhited/support_modules\n\nSupport Go Modules"
    },
    {
      "commit": "6eece144be078ae6d849163a4074e3a6b90106d2",
      "tree": "42af6209c93d94d6338062d178ae6616f0887f39",
      "parents": [
        "c12348ce28de40eed0136aa2b644d0ee0650e56c"
      ],
      "author": {
        "name": "Sam Whited",
        "email": "sam@samwhited.com",
        "time": "Sat Dec 22 15:19:52 2018"
      },
      "committer": {
        "name": "Sam Whited",
        "email": "sam@samwhited.com",
        "time": "Sat Dec 22 15:19:52 2018"
      },
      "message": "Support Go Modules\n"
    },
    {
      "commit": "c12348ce28de40eed0136aa2b644d0ee0650e56c",
      "tree": "35be15502e967dc50fb552adae327c5dc433a243",
      "parents": [
        "3247c84500bff8d9fb6d579d800f20b3e091582c",
        "7d2226a0b256044be1a933edbf2745c7c6c4e473"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Apr 24 11:30:07 2016"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Apr 24 11:30:07 2016"
      },
      "message": "Merge pull request #11 from matttproud/testing/remove-externals\n\nall: remove external asset imports for tests."
    },
    {
      "commit": "7d2226a0b256044be1a933edbf2745c7c6c4e473",
      "tree": "35be15502e967dc50fb552adae327c5dc433a243",
      "parents": [
        "3247c84500bff8d9fb6d579d800f20b3e091582c"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Apr 24 11:03:21 2016"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Apr 24 11:18:53 2016"
      },
      "message": "all: remove external asset imports for tests.\n\nOur tests had relied upon unversioned external assets.  A more proper\nsolution would be vendoring but that process is overkill for merely\ntests.\n"
    },
    {
      "commit": "3247c84500bff8d9fb6d579d800f20b3e091582c",
      "tree": "d930cdd6f8bdaef2146bc51acdc661ce949ca109",
      "parents": [
        "d0c3fe89de86839aecf2e0579c40ba3bb336a453",
        "7e778b145b77141eb497d8d0e0a725553281a075"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sat Apr 23 17:36:17 2016"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sat Apr 23 17:36:17 2016"
      },
      "message": "Merge pull request #10 from matttproud/testing/delete-pbtest\n\npbtest: delete pkg because upstream IDL changes."
    },
    {
      "commit": "7e778b145b77141eb497d8d0e0a725553281a075",
      "tree": "d930cdd6f8bdaef2146bc51acdc661ce949ca109",
      "parents": [
        "d0c3fe89de86839aecf2e0579c40ba3bb336a453"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sat Apr 23 17:22:16 2016"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sat Apr 23 17:33:39 2016"
      },
      "message": "pbtest: delete pkg because upstream IDL changes.\n\nThis commit deletes the blackbox end-to-end tests associated with\n`testing/quick`, because several incompatible upstream changes broke\nthem, and it is difficult to tease apart where the fault lies for now.\nIt fixes #9.\n\nThe core of this is code is small and well tested.  At the very worst,\nintegrators can inform us quickly about breakages.\n"
    },
    {
      "commit": "d0c3fe89de86839aecf2e0579c40ba3bb336a453",
      "tree": "d01948d1eba82785635b76b053083e98145ffc39",
      "parents": [
        "edc6661b53c4f41d1b0c81788cd1094318596221"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Oct 11 10:25:29 2015"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Oct 11 10:25:29 2015"
      },
      "message": "Update LICENSE"
    },
    {
      "commit": "edc6661b53c4f41d1b0c81788cd1094318596221",
      "tree": "aa18743aa9f55577a14f3143713f773bd7816c86",
      "parents": [
        "fc2b8d3a73c4867e51861bbdd5ae3c1f0869dd6a"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Oct 11 10:22:10 2015"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Oct 11 10:22:10 2015"
      },
      "message": "Create NOTICE\n\nCreate NOTICE"
    },
    {
      "commit": "fc2b8d3a73c4867e51861bbdd5ae3c1f0869dd6a",
      "tree": "7def48be3b07a01add2ef847c6adb719ab7e6c40",
      "parents": [
        "ba7d65ac66e9da93a714ca18f6d1bc7a0c09100c",
        "d23aa0353c6500a97c053615ebd6dcb694d56cc1"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon Apr 06 17:39:34 2015"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon Apr 06 17:39:34 2015"
      },
      "message": "Merge pull request #8 from matttproud/refactor/new-directory-structure\n\nSwap ext for pbutil because old name was bad."
    },
    {
      "commit": "d23aa0353c6500a97c053615ebd6dcb694d56cc1",
      "tree": "7def48be3b07a01add2ef847c6adb719ab7e6c40",
      "parents": [
        "ba7d65ac66e9da93a714ca18f6d1bc7a0c09100c"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon Apr 06 16:10:26 2015"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon Apr 06 17:28:45 2015"
      },
      "message": "Swap ext for pbutil because old name was bad.\n\nThe original package name never conveyed the purpose very clearly.\nWe can stand on the shoulder of established convention and make this\nanonymous utility package better by following the example of io/ioutil.\nDoing so makes it compliant with the new conventions set forth here:\nhttp://goo.gl/K3u9aj.\n"
    },
    {
      "commit": "ba7d65ac66e9da93a714ca18f6d1bc7a0c09100c",
      "tree": "d3d5a3d5420ca39971b28d5c9cbb93e35d2f3f71",
      "parents": [
        "7a864a042e844af638df17ebbabf8183dace556a",
        "a54dae06c0faf29d6809624404a44565a1097efe"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Feb 13 22:47:17 2015"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Feb 13 22:47:17 2015"
      },
      "message": "Merge pull request #7 from juliusv/update-protobuf-pkg\n\nUpdate protobuf library package name."
    },
    {
      "commit": "a54dae06c0faf29d6809624404a44565a1097efe",
      "tree": "d3d5a3d5420ca39971b28d5c9cbb93e35d2f3f71",
      "parents": [
        "7a864a042e844af638df17ebbabf8183dace556a"
      ],
      "author": {
        "name": "Julius Volz",
        "email": "julius.volz@gmail.com",
        "time": "Fri Feb 13 22:18:31 2015"
      },
      "committer": {
        "name": "Julius Volz",
        "email": "julius.volz@gmail.com",
        "time": "Fri Feb 13 22:41:02 2015"
      },
      "message": "Update protobuf library package name.\n\nThe Golang protocol buffer library has now moved to GitHub:\n\nhttps://github.com/golang/protobuf\n\nAlthough \"go get\"-ing the old package name still works, moving\neverything to the new one will make vendoring cleaner.\n"
    },
    {
      "commit": "7a864a042e844af638df17ebbabf8183dace556a",
      "tree": "91867b3a86879ddfd331799b5654cb74b5d4d911",
      "parents": [
        "1f8dae66040bad36c04c59370a4e2ba2110a3726"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Thu Sep 18 06:06:20 2014"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Thu Sep 18 06:17:29 2014"
      },
      "message": "Standardize/refresh documentation; fix license.\n\nThe documentation needed a little polish to follow conventions, namely\nthe package\u0027s top-level documentation string and including a table of\nAPI equivalencies.\n\nThe license also had a typo since the Apache License 2.0 file was\ncopied carelessly from another project without being adapted for\nlocal use.  Mea culpa, lawyer cats.\n"
    },
    {
      "commit": "1f8dae66040bad36c04c59370a4e2ba2110a3726",
      "tree": "f763976bf4ba8bac59e39fa20624a787960e3a70",
      "parents": [
        "8d5796e554189a2dcba40c1bdaecf0032caf76fc",
        "2fbaa9b928c7c228b23513034ed6be9541e36d14"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Tue Jul 22 12:32:26 2014"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Tue Jul 22 12:32:26 2014"
      },
      "message": "Merge pull request #4 from u-c-l/bug/decode\n\nFix two more bugs."
    },
    {
      "commit": "2fbaa9b928c7c228b23513034ed6be9541e36d14",
      "tree": "f763976bf4ba8bac59e39fa20624a787960e3a70",
      "parents": [
        "8d5796e554189a2dcba40c1bdaecf0032caf76fc"
      ],
      "author": {
        "name": "Bjoern Rabenstein",
        "email": "bjoern@soundcloud.com",
        "time": "Tue Jul 22 12:24:52 2014"
      },
      "committer": {
        "name": "Bjoern Rabenstein",
        "email": "bjoern@soundcloud.com",
        "time": "Tue Jul 22 12:24:52 2014"
      },
      "message": "Unfortunately, two more subtle bugs to fix:\n\nUnfortunately, two more subtle bugs to fix:\n\n- If the encoded protobuf message is only three bytes long (or less),\n  not only the whole protobuf will fit into headerBuf, but also the\n  beginning of the next length varint. This will completely wreak\n  havoc in the read process. (This bug never bit us in Prometheus\n  because the protobuf messages were all long enough. But protobufs in\n  general can be very small (0 bytes in fact). I added a test for\n  that.)\n\n- If the reader stops in the middle of a length varint, it will\n  interpret the null byte that is already in headerBuf as the final\n  byte of the varint, which again wreaks havoc. (This bug only shows\n  up in Prometheus after\n  prometheus/prometheus@dfb9c2a\n  , and it is very rare... needs very unlucky fragmentation on the\n  network.)\n\nSolution to the first bug is to read byte-wise, which is slightly less\neffective, but simplifies the code later, because we don\u0027t \"overshoot\"\nanymore. Solution to the second bug is to only read the parts of\nheaderBuf that have been written to.\n"
    },
    {
      "commit": "8d5796e554189a2dcba40c1bdaecf0032caf76fc",
      "tree": "24d6313a881856531033bc3e09177247f43b8e47",
      "parents": [
        "fa50875d3feb3103a2a83c0a35d9524302653c68",
        "961158ffe2aa3a4f91c8fa0b5cf60ff998e72293"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon Jul 21 09:16:20 2014"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon Jul 21 09:16:20 2014"
      },
      "message": "Merge pull request #6 from matttproud/testing/replace-fuzz-test\n\nReplace the fuzz test with a proper fuzz test."
    },
    {
      "commit": "961158ffe2aa3a4f91c8fa0b5cf60ff998e72293",
      "tree": "24d6313a881856531033bc3e09177247f43b8e47",
      "parents": [
        "541eb0b746b9ca2c955f151a6341dcacdfdb25ec"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Wed Jul 16 16:46:57 2014"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Wed Jul 16 16:46:57 2014"
      },
      "message": "Replace the fuzz test with a proper fuzz test.\n\nThis old fuzz test did not exercise a fraction of the possible message\ntypes, so it gave us a false sense of confidence.  It has been replaced\nwith a new one that uses reflection to generate streams of varying\nmessage types to exercise the universe of real values.\n"
    },
    {
      "commit": "fa50875d3feb3103a2a83c0a35d9524302653c68",
      "tree": "895c5915cbac5bfe6de0344bdd1634ac414cb68d",
      "parents": [
        "dda6f998a21b2b5f98b175bbc42b8be7d23e7ae1",
        "541eb0b746b9ca2c955f151a6341dcacdfdb25ec"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Tue Jul 15 08:26:55 2014"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Tue Jul 15 08:26:55 2014"
      },
      "message": "Merge pull request #5 from matttproud/testing/table-for-behaviors\n\nInclude table tests for operations and end-to-end."
    },
    {
      "commit": "541eb0b746b9ca2c955f151a6341dcacdfdb25ec",
      "tree": "895c5915cbac5bfe6de0344bdd1634ac414cb68d",
      "parents": [
        "dda6f998a21b2b5f98b175bbc42b8be7d23e7ae1"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon Jul 14 19:54:28 2014"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon Jul 14 19:54:28 2014"
      },
      "message": "Include table tests for operations and end-to-end.\n\nBecause this package\u0027s original fuzz test is neither comprehensive nor\ntrustworthy (this was a limitation acknowledged at its time of\ncreation due to an imprudent assessment that iteration speed versus\ntime spent on quality/deliberateness is desirable), a set of targeted\ntabular tests have been created, which enable us to carefully exercise\nindividual behaviors without nasty imperative test scaffolding and\nother shenanigans, which should have been avoided in the first place.\n\nMea culpa.\n"
    },
    {
      "commit": "dda6f998a21b2b5f98b175bbc42b8be7d23e7ae1",
      "tree": "5ccf158fc46d45d16b3cfbe5d6c2869008addd43",
      "parents": [
        "f251fd0a51789b1424fde01a078fe53b26af295d",
        "b00146d88d52c6010fdc523097d78331b66440a5"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Thu Jul 03 10:59:35 2014"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Thu Jul 03 10:59:35 2014"
      },
      "message": "Merge pull request #3 from u-c-l/bug/decode\n\nBring decode.go Reader usage in line with the Reader contract."
    },
    {
      "commit": "b00146d88d52c6010fdc523097d78331b66440a5",
      "tree": "5ccf158fc46d45d16b3cfbe5d6c2869008addd43",
      "parents": [
        "7a97e88dd841b89dda46596620a3d0d2c04133b8"
      ],
      "author": {
        "name": "Bjoern Rabenstein",
        "email": "bjoern@soundcloud.com",
        "time": "Wed Jul 02 13:51:13 2014"
      },
      "committer": {
        "name": "Bjoern Rabenstein",
        "email": "bjoern@soundcloud.com",
        "time": "Wed Jul 02 18:52:15 2014"
      },
      "message": "Bring decode.go Reader usage in line with the Reader contract.\n\nFollowing items are important here:\n\n- A Reader should never return 0, nil, but if it does, it should be\n  treated as a no-op.\n\n- A Reader will read what\u0027s there and then return. Later calls will\n  then block until something can be read or an error occurs. (Or it\n  will return 0, nil, but see above.)\n\n- If a Reader returns an error, the bytes already read MUST be\n  considered before considering the error. A common example is that a\n  Reader reads everything as expected, but already knows the next call\n  will result in 0, io.EOF. In that case, some Reader implementations\n  return n, io.EOF (with n being the expected number of read bytes) to\n  give the caller the opportunity for performance optimizations (like\n  dropping the Reader without trying another read).\n\nEspecially the last item was causing trouble if reading directly from\nthe http response body (as it is one of those that returns io.EOF\nASAP). The second item causes trouble in subtle ways (imagine a stop\nin the middle of reading a varint - or you will try to unmarshal an\nincomplete proto message).\n\nBTW: The error \"truncated message\" would never trigger. Fixed\nimplicitly now.\n\nThe fix was easy for the part where the proto message is read because\nwe already know the length and can use io.ReadFull to avoid both, the\nstopping problem and the early io.EOF problem. (Check\nhttp://golang.org/src/pkg/io/io.go?s\u003d10103:10169#L273 to see how it\ndoes it.) THe varint reading is tricky. If we read less than\nbinary.MaxVarintLen32 bytes, we might actually be fine already. We\ncannot simply wait until we have read binary.MaxVarintLen32 bytes\nbecause the whole shebang (varint plus the whole proto message) might\nfit into less. So we have to try if we can parse the varint from what\nwe have and then try again until we either hit an error or can parse a\nvarint or we have read the maximum and can still not parse a varint\n(which is an error, too).\n"
    },
    {
      "commit": "f251fd0a51789b1424fde01a078fe53b26af295d",
      "tree": "7ac3d8c7e1853ea1a58e41695395f6869090871f",
      "parents": [
        "aef937669a1bdc9499adc48bb960e04d8c0662ec",
        "7a97e88dd841b89dda46596620a3d0d2c04133b8"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Jul 12 16:58:16 2013"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Jul 12 16:58:16 2013"
      },
      "message": "Merge pull request #1 from matttproud/fix/decoding/buffer-size\n\nShort circuit decoding if no data after header."
    },
    {
      "commit": "7a97e88dd841b89dda46596620a3d0d2c04133b8",
      "tree": "7ac3d8c7e1853ea1a58e41695395f6869090871f",
      "parents": [
        "042d19e02e63861ea8b6e22b48e5ee5aef6492ad"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Jul 12 16:57:06 2013"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Jul 12 16:57:06 2013"
      },
      "message": "Force encoding as 32-bit varints.\n"
    },
    {
      "commit": "042d19e02e63861ea8b6e22b48e5ee5aef6492ad",
      "tree": "dd983a289de3ac3e59b47d924a7d825f5404bdce",
      "parents": [
        "aef937669a1bdc9499adc48bb960e04d8c0662ec"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Jul 12 16:06:02 2013"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Fri Jul 12 16:31:13 2013"
      },
      "message": "Short circuit decoding if no data after header.\n\nThis commit introduces an immediate decode and exit behavior if the\ncurrently-extracted payload is the size of the initial header size\nfor the varint, which prevents zero-length allocations with ``make``.\n"
    },
    {
      "commit": "aef937669a1bdc9499adc48bb960e04d8c0662ec",
      "tree": "75862e622ba0c90ca660cf8a16880c176ec3402d",
      "parents": [
        "b79fe72aaff9e06af4ef7fdfd3cd4a616c5ec3bc"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Jul 07 16:04:43 2013"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Sun Jul 07 16:04:43 2013"
      },
      "message": "Fix decoding to use 5 bytes for length decoding.\n\nThe Java implementation was erroneously misread, and it was assumed\nthat varint-delimited encoding uses 64-bit varints; whereas, it really\nuses 32-bit encoded.  Thusly 5 bytes are maximally used as padding, not\n10.\n"
    },
    {
      "commit": "b79fe72aaff9e06af4ef7fdfd3cd4a616c5ec3bc",
      "tree": "61d56176e4ad09b054937cae9f0764f75d270efd",
      "parents": [
        "0b358c431b7a88639e15afce39c5799138e7d65a"
      ],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon May 27 18:04:04 2013"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon May 27 18:04:51 2013"
      },
      "message": "Run gofmt and fix link in README.\n"
    },
    {
      "commit": "0b358c431b7a88639e15afce39c5799138e7d65a",
      "tree": "266c8f92ca272701e69a4b56a43b20a7cb0b0222",
      "parents": [],
      "author": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon May 27 17:59:33 2013"
      },
      "committer": {
        "name": "Matt T. Proud",
        "email": "matt.proud@gmail.com",
        "time": "Mon May 27 17:59:33 2013"
      },
      "message": "Initial commit.\n"
    }
  ]
}
