)]}'
{
  "log": [
    {
      "commit": "8ee79997227bf9b34611aee7946ae64735e6fd93",
      "tree": "9997fbf303f48d6d1ef2f76389b7cd217749bc57",
      "parents": [
        "56841e9de571218dd3afd857de01cc473a3e6002"
      ],
      "author": {
        "name": "Bryan C. Mills",
        "email": "bcmills@google.com",
        "time": "Wed Nov 16 22:31:26 2016 -0500"
      },
      "committer": {
        "name": "Bryan C. Mills",
        "email": "bcmills@google.com",
        "time": "Wed Nov 16 22:31:26 2016 -0500"
      },
      "message": "descriptor: rename generated protobuf package on import.\n\nThis works around https://github.com/google/go-genproto/issues/8,\nrenaming the local package to match its expected name.\n"
    },
    {
      "commit": "56841e9de571218dd3afd857de01cc473a3e6002",
      "tree": "7e4d3c971e034e4f357800d15c919be05120668b",
      "parents": [
        "cf10ca0ea91371dd30946defd93a0ed43aa1efe7"
      ],
      "author": {
        "name": "bcmills",
        "email": "bcmills@google.com",
        "time": "Wed Nov 16 23:50:35 2016 +0000"
      },
      "committer": {
        "name": "Bryan C. Mills",
        "email": "bcmills@google.com",
        "time": "Wed Nov 16 22:07:29 2016 -0500"
      },
      "message": "jsonpb: merge https://github.com/golang/protobuf/pull/255\n\ntreat `null` JSON values for `Timestamp` and `Duration` as defaults\n\n* Handle unmarshalling of null json values for timestamp and duration types\n* Add tests for json values that include nulls for timestamp and duration\nPiperOrigin-RevId: 139390817\n"
    },
    {
      "commit": "cf10ca0ea91371dd30946defd93a0ed43aa1efe7",
      "tree": "15e36fe88adff04ccc410d7496ec828600547c91",
      "parents": [
        "62e782f47e4c57935994133e44f1716d281504e4"
      ],
      "author": {
        "name": "bcmills",
        "email": "bcmills@google.com",
        "time": "Wed Nov 16 19:27:51 2016 +0000"
      },
      "committer": {
        "name": "Bryan C. Mills",
        "email": "bcmills@google.com",
        "time": "Wed Nov 16 22:07:01 2016 -0500"
      },
      "message": "proto: Add a descriptor subpackage.\n\nThis provides a more reasonable API for obtaining a FileDescriptorProto and\nDescriptorProto for a given proto.Message — a process that is currently possible\n(but undocumented) using the public proto API.\n\nThe major use case for obtaining a DescriptorProto is to decode custom message\noptions, which are encoded as extensions on the MessageOptions submessage.\n(See https://developers.google.com/protocol-buffers/docs/proto#customoptions.)\n\nFixes https://github.com/golang/protobuf/issues/179.\nPiperOrigin-RevId: 139356528\n"
    },
    {
      "commit": "62e782f47e4c57935994133e44f1716d281504e4",
      "tree": "77de01c1a77f31a9fcf5fe2fefbedf5b435eb2e4",
      "parents": [
        "224aaba33b1ac32a92a165f27489409fb8133d08"
      ],
      "author": {
        "name": "bcmills",
        "email": "bcmills@google.com",
        "time": "Wed Nov 16 18:08:21 2016 +0000"
      },
      "committer": {
        "name": "Bryan C. Mills",
        "email": "bcmills@google.com",
        "time": "Wed Nov 16 22:03:25 2016 -0500"
      },
      "message": "proto: Fix a Marshal race on messages with extensions.\n\n(*Buffer).enc_exts was not acquiring a necessary lock when writing\nlazily-decoded extensions back to the map.\nPiperOrigin-RevId: 139345543\n"
    },
    {
      "commit": "224aaba33b1ac32a92a165f27489409fb8133d08",
      "tree": "5abe5740af94ccd7586a5e30f25d77fefdf0b983",
      "parents": [
        "8e1c791771cf5854f2402ad63f68b05672e099d2"
      ],
      "author": {
        "name": "Mark Costello",
        "email": "mark@markcostello.net",
        "time": "Wed Nov 16 14:48:24 2016 -0500"
      },
      "committer": {
        "name": "Bryan C. Mills",
        "email": "bmills@alumni.cmu.edu",
        "time": "Wed Nov 16 14:48:24 2016 -0500"
      },
      "message": "jsonpb: treat `null` JSON values for `Timestamp` and `Duration` as defaults (#255)\n\n* Handle unmarshalling of null json values for timestamp and duration types\r\n* Add tests for json values that include nulls for timestamp and duration"
    },
    {
      "commit": "8e1c791771cf5854f2402ad63f68b05672e099d2",
      "tree": "a21595c16bab1f7fb522ede4c22abcd7c81ad110",
      "parents": [
        "cb9b7771abc2a63ab206dde76539f08f66ab994d"
      ],
      "author": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Wed Nov 16 09:21:15 2016 -0800"
      },
      "committer": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Wed Nov 16 09:21:15 2016 -0800"
      },
      "message": "Generate pb.go files after https://github.com/golang/protobuf/commit/cb9b7771abc2a63ab206dde76539f08f66ab994d\n"
    },
    {
      "commit": "cb9b7771abc2a63ab206dde76539f08f66ab994d",
      "tree": "1c149a6ee2503e14299f25a3e49d734a255864f7",
      "parents": [
        "4a5b3fd3082794b57dadf9f962fffa5ecad974d5"
      ],
      "author": {
        "name": "lmilewski",
        "email": "lmilewski@google.com",
        "time": "Wed Nov 16 16:53:41 2016 +0000"
      },
      "committer": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Wed Nov 16 09:17:24 2016 -0800"
      },
      "message": "Add a benchmark demonstrating lock contention when Marshaling/Unmarshaling maps.\n\nThis benchmark is derived from a Google service which experienced poor performance when handling protos with maps.\n\nThe current implementation of map decoding uses reflection. In particular reflect.New, reflect.NewAt, and reflect.(*Value).Addr all call reflect.(*rvalue).ptrTo.\n\nreflect.(*rvalue).ptrTo uses a cache protected by a mutex. Grabbing this lock is what causes the problem.\n\nreflect.(*rvalue).ptrTo also implements a fast path (which avoids critical sections) for certain types known to the compiler. Hopefully we can extend the compiler to generate descriptors for more types (https://golang.org/issue/17931) so that we can hit the fast path for all types needed for proto decoding.\nPiperOrigin-RevId: 139337589\n"
    },
    {
      "commit": "4a5b3fd3082794b57dadf9f962fffa5ecad974d5",
      "tree": "00aadd5579f781fa20db5d396ed8230ef712e0a2",
      "parents": [
        "24f28ae800abfde9310e779f94be606b1a98a3fc"
      ],
      "author": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Tue Nov 15 17:38:01 2016 -0800"
      },
      "committer": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Tue Nov 15 17:38:01 2016 -0800"
      },
      "message": "Regenerate pb.go files after https://github.com/golang/protobuf/commit/24f28ae800abfde9310e779f94be606b1a98a3fc\n"
    },
    {
      "commit": "24f28ae800abfde9310e779f94be606b1a98a3fc",
      "tree": "9f8cf8a9b65e84542966bbc6f712e50b9487468a",
      "parents": [
        "1bdfb324ed170f07fd36e676b0d09fd9c6ec086a"
      ],
      "author": {
        "name": "Googler",
        "email": "noreply@google.com",
        "time": "Tue Nov 15 17:24:17 2016 -0800"
      },
      "committer": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Tue Nov 15 17:30:21 2016 -0800"
      },
      "message": "protoc-gen-go: Add Filename to ExtensionDesc.\n\nThis will allow looking up the FileDescriptorProto for the file that\ndefines an extension of a message, for richer introspection.\n"
    },
    {
      "commit": "1bdfb324ed170f07fd36e676b0d09fd9c6ec086a",
      "tree": "d4228f34c4164dc9f69a5ae413655fb51d68f5ca",
      "parents": [
        "0358ab2536213fd3d28c8db132a93b4dca63461f"
      ],
      "author": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Tue Nov 15 17:17:33 2016 -0800"
      },
      "committer": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Tue Nov 15 17:17:33 2016 -0800"
      },
      "message": "Run \u0027make generate-test-pbs\u0027 in proto/ to regenerate proto3.pb.go testdata\n"
    },
    {
      "commit": "0358ab2536213fd3d28c8db132a93b4dca63461f",
      "tree": "390d11b1e9c5c08ab17157ac8521f544eff37db9",
      "parents": [
        "da116c3771bf4a398a43f44e069195ef1c9688ef"
      ],
      "author": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Tue Nov 15 16:41:52 2016 -0800"
      },
      "committer": {
        "name": "Lukasz Milewski",
        "email": "lmilewski@google.com",
        "time": "Tue Nov 15 16:41:52 2016 -0800"
      },
      "message": "Generate new pb.go files.\n\nGenerated code got out of sync with the generated after:\n  https://github.com/golang/protobuf/commit/09b5638faf9cc5d6d0230ab90fd7e2b5a15d19ea\n  https://github.com/golang/protobuf/commit/da116c3771bf4a398a43f44e069195ef1c9688ef\n"
    },
    {
      "commit": "da116c3771bf4a398a43f44e069195ef1c9688ef",
      "tree": "7c041d9ee46379b51d7f9cba13f78b78161337fc",
      "parents": [
        "4bd1920723d7b7c925de087aa32e2187708897f7"
      ],
      "author": {
        "name": "lmilewski",
        "email": "lmilewski@google.com",
        "time": "Fri Nov 04 18:21:45 2016 +0000"
      },
      "committer": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Mon Nov 14 16:59:28 2016 -0800"
      },
      "message": "proto: generate Get methods for fields of basic type in proto3\n\nGiven proto3 schema:\n\n  message Foo {\n    string some_value \u003d 1;\n  }\n\n  message Bar {\n    Foo foo \u003d 1;\n  }\n\n  message Baz {\n    Bar bar \u003d 1;\n  }\n\nAccessing baz.bar.foo.SomeValue currently requires this code:\n\n        if f :\u003d baz.GetBar().GetFoo(); f !\u003d nil {\n                fmt.Printf(\"value was %v\\n\", f.SomeValue)\n        }\n\nAfter the CL, it becomes:\n\n        fmt.Printf(\"value was %v\\n\", baz.GetBar().GetFoo().GetSomeValue())\n\nThere are downsides to generating more code:\n   - all things equal, less code is better\n   - larger API surface\n\nThe upsides are:\n - consistency with proto2 API (proto2 and proto3 can be mixed. Keeping API consistent is important)\n - easier to explain API - all fields have Get method. No exceptions.\n - reduced user confusion - questions about this come up frequently\n\ntesting:\n  - added a new test\n  - inspected a diff for an arbitrarily chosen schema\nPiperOrigin-RevId: 138212965\n"
    },
    {
      "commit": "4bd1920723d7b7c925de087aa32e2187708897f7",
      "tree": "ad8d41abdd9fc371d49e7ab23a0a32efcc53b7fd",
      "parents": [
        "2bc9827a78f95c6665b5fe0abd1fd66b496ae2d8",
        "d6803ead56f623f1085f33f981907442aca44809"
      ],
      "author": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Tue Nov 08 23:27:36 2016 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 08 23:27:36 2016 -0800"
      },
      "message": "Merge pull request #249 from Huawei-PTLab/master\n\nAllow \"make test\" to run with Bourne shell."
    },
    {
      "commit": "d6803ead56f623f1085f33f981907442aca44809",
      "tree": "ad8d41abdd9fc371d49e7ab23a0a32efcc53b7fd",
      "parents": [
        "2bc9827a78f95c6665b5fe0abd1fd66b496ae2d8"
      ],
      "author": {
        "name": "Bryan Chan",
        "email": "bryan.chan@huawei.com",
        "time": "Tue Nov 08 04:20:17 2016 -0500"
      },
      "committer": {
        "name": "Bryan Chan",
        "email": "bryan.chan@huawei.com",
        "time": "Tue Nov 08 04:20:17 2016 -0500"
      },
      "message": "Allow \"make test\" to run with Bourne shell.\n"
    },
    {
      "commit": "2bc9827a78f95c6665b5fe0abd1fd66b496ae2d8",
      "tree": "3d47a3beb116a196bc0d739634983ea1db2e9ca2",
      "parents": [
        "09b5638faf9cc5d6d0230ab90fd7e2b5a15d19ea"
      ],
      "author": {
        "name": "Googler",
        "email": "noreply@google.com",
        "time": "Thu Nov 03 22:44:32 2016 +0000"
      },
      "committer": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Thu Nov 03 15:46:52 2016 -0700"
      },
      "message": "improve error message for duplicate oneof in text parsing\nPiperOrigin-RevId: 138128520\n"
    },
    {
      "commit": "09b5638faf9cc5d6d0230ab90fd7e2b5a15d19ea",
      "tree": "594f6fcfdcffe742afe2240e74964493567f53ce",
      "parents": [
        "a66a4fa9a8dd2304462f7aad7161e8bf53eee461"
      ],
      "author": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Thu Nov 03 15:25:19 2016 -0700"
      },
      "committer": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Thu Nov 03 15:25:19 2016 -0700"
      },
      "message": "grpc: update generated code version\n\nPiperOrigin-RevId: 138096562\n\nChange-Id: I1e52a7bbb12485de97f3552cd89229cca3a950f2\n"
    },
    {
      "commit": "a66a4fa9a8dd2304462f7aad7161e8bf53eee461",
      "tree": "adf7322699951d8d70aece36f06cf6c89a642cf8",
      "parents": [
        "98fa357170587e470c5f27d3c3ea0947b71eb455"
      ],
      "author": {
        "name": "Googler",
        "email": "noreply@google.com",
        "time": "Tue Nov 01 19:59:13 2016 +0000"
      },
      "committer": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Thu Nov 03 14:01:36 2016 -0700"
      },
      "message": "Produce an error when unmarshaling text protos if a oneof field is set more than once.\nPiperOrigin-RevId: 137859856\n"
    },
    {
      "commit": "98fa357170587e470c5f27d3c3ea0947b71eb455",
      "tree": "2ad28f3d68069c848a9fa1f9942a8bb91739dc4b",
      "parents": [
        "3571fb58c2425ca244702e8e2dfb156d95c44246"
      ],
      "author": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Wed Oct 12 13:53:35 2016 -0700"
      },
      "committer": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Wed Oct 12 13:53:35 2016 -0700"
      },
      "message": "Fix tests.\n\n* Fix bad import path\n* Re-generate proto Go code after altering the proto definition\n"
    },
    {
      "commit": "3571fb58c2425ca244702e8e2dfb156d95c44246",
      "tree": "cddd8d442b2045d7c10c839af7d978b4b1fbd3b3",
      "parents": [
        "730e9124bf047f25aebb052d2a74c609414c12e5"
      ],
      "author": {
        "name": "notcarl",
        "email": "notcarl@google.com",
        "time": "Mon Oct 10 17:47:57 2016 +0000"
      },
      "committer": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Wed Oct 12 12:55:25 2016 -0700"
      },
      "message": "Add a decoding benchmark for multiple small repeated ints\nPiperOrigin-RevId: 135693188\n"
    },
    {
      "commit": "730e9124bf047f25aebb052d2a74c609414c12e5",
      "tree": "b3caecb8126770cfbc61b5e22f404dd0f6082169",
      "parents": [
        "5d356b9d1c22e345c2ea08432302e82fd02d8a61"
      ],
      "author": {
        "name": "joetsai",
        "email": "joetsai@google.com",
        "time": "Fri Oct 07 19:29:42 2016 +0000"
      },
      "committer": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Wed Oct 12 12:55:05 2016 -0700"
      },
      "message": "Fix jsonpb for Go 1.8\n\nAn upcoming change in Go1.8 (https://go-review.googlesource.com/30371) changes\nthe output of JSON to be more compliant with the ES6 standard. This causes\nthe tests to fail.\n\nWe fix the test by simply bumping the floating point numbers higher to\nalways induce the scientific notation format in JSON.\nPiperOrigin-RevId: 135504815\n"
    },
    {
      "commit": "5d356b9d1c22e345c2ea08432302e82fd02d8a61",
      "tree": "aaac8d5f4e3398c9ed817adfc97baa203c3d2817",
      "parents": [
        "1976b9edadc994262a35b3e30a378efeb07e44ac"
      ],
      "author": {
        "name": "notcarl",
        "email": "notcarl@google.com",
        "time": "Fri Oct 07 18:05:21 2016 +0000"
      },
      "committer": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Wed Oct 12 12:54:56 2016 -0700"
      },
      "message": "Unroll DecodeVarint to speed up int32/int64/uint64 slice decoding.\n\nThere are two variations here, one is using goto (called cpp) and one using if-else (called java).  The cpp is much faster than the original, and slightly faster than java:\n\nOriginal vs. Cpp variant:\nname                            old time/op  new time/op  delta\nVarint32ArraySmall/Len8-12       282ns ± 3%   280ns ± 1%   -0.78%  (p\u003d0.005 n\u003d17+16)\nVarint32ArraySmall/Len16-12      370ns ± 2%   370ns ± 5%   +0.04%  (p\u003d0.038 n\u003d18+19)\nVarint32ArraySmall/Len32-12      535ns ± 7%   516ns ± 5%   -3.47%  (p\u003d0.000 n\u003d20+20)\nVarint32ArraySmall/Len64-12      801ns ± 2%   763ns ± 3%   -4.81%  (p\u003d0.000 n\u003d16+19)\nVarint32ArraySmall/Len128-12    1.31µs ± 1%  1.25µs ± 2%   -4.75%  (p\u003d0.000 n\u003d16+19)\nVarint32ArraySmall/Len256-12    2.29µs ± 0%  2.19µs ± 4%   -4.70%  (p\u003d0.000 n\u003d16+20)\nVarint32ArraySmall/Len512-12    4.30µs ± 9%  3.94µs ± 3%   -8.46%  (p\u003d0.000 n\u003d20+20)\nVarint32ArraySmall/Len1024-12   7.99µs ± 1%  7.41µs ± 2%   -7.23%  (p\u003d0.000 n\u003d17+19)\nVarint32ArraySmall/Len2048-12   18.2µs ± 3%  16.9µs ± 2%   -7.13%  (p\u003d0.000 n\u003d20+19)\nVarint32ArraySmall/Len4096-12   35.2µs ± 4%  32.4µs ± 0%   -7.88%  (p\u003d0.000 n\u003d20+17)\nVarint32ArrayLarge/Len34-12      769ns ± 7%   651ns ± 1%  -15.31%  (p\u003d0.000 n\u003d20+17)\nVarint32ArrayLarge/Len68-12     1.23µs ± 2%  1.03µs ± 3%  -16.43%  (p\u003d0.000 n\u003d17+17)\nVarint32ArrayLarge/Len136-12    2.18µs ± 4%  1.76µs ± 2%  -19.10%  (p\u003d0.000 n\u003d20+19)\nVarint32ArrayLarge/Len272-12    4.03µs ±11%  3.19µs ± 4%  -20.68%  (p\u003d0.000 n\u003d20+20)\nVarint32ArrayLarge/Len544-12    7.37µs ± 5%  5.81µs ± 0%  -21.22%  (p\u003d0.000 n\u003d18+16)\nVarint32ArrayLarge/Len1088-12   13.5µs ± 4%  10.6µs ± 0%  -21.53%  (p\u003d0.000 n\u003d20+17)\nVarint32ArrayLarge/Len2176-12   26.5µs ± 1%  21.0µs ± 2%  -20.74%  (p\u003d0.000 n\u003d16+17)\nVarint32ArrayLarge/Len4352-12   56.7µs ± 5%  45.1µs ± 3%  -20.35%  (p\u003d0.000 n\u003d20+20)\nVarint32ArrayLarge/Len8704-12    109µs ± 3%    88µs ± 6%  -19.75%  (p\u003d0.000 n\u003d20+20)\nVarint32ArrayLarge/Len17408-12   209µs ± 0%   165µs ± 0%  -21.17%  (p\u003d0.000 n\u003d16+17)\nVarint64ArraySmall/Len8-12       303ns ± 1%   304ns ± 2%     ~     (p\u003d0.205 n\u003d16+17)\nVarint64ArraySmall/Len16-12      412ns ± 5%   414ns ±13%     ~     (p\u003d0.236 n\u003d20+19)\nVarint64ArraySmall/Len32-12      593ns ± 7%   568ns ± 3%   -4.15%  (p\u003d0.000 n\u003d19+17)\nVarint64ArraySmall/Len64-12      921ns ± 3%   874ns ± 3%   -5.10%  (p\u003d0.000 n\u003d20+20)\nVarint64ArraySmall/Len128-12    1.54µs ± 0%  1.48µs ± 2%   -3.76%  (p\u003d0.000 n\u003d20+20)\nVarint64ArraySmall/Len256-12    2.74µs ± 4%  2.61µs ± 3%   -4.87%  (p\u003d0.000 n\u003d17+20)\nVarint64ArraySmall/Len512-12    5.05µs ± 0%  4.76µs ± 2%   -5.67%  (p\u003d0.000 n\u003d18+19)\nVarint64ArraySmall/Len1024-12   9.59µs ± 0%  9.07µs ± 3%   -5.39%  (p\u003d0.000 n\u003d17+19)\nVarint64ArraySmall/Len2048-12   23.7µs ± 3%  22.3µs ± 2%   -6.06%  (p\u003d0.000 n\u003d20+18)\nVarint64ArraySmall/Len4096-12   46.9µs ± 1%  45.0µs ± 1%   -3.96%  (p\u003d0.000 n\u003d17+18)\nVarint64ArrayLarge/Len164-12    3.48µs ± 4%  2.71µs ± 3%  -22.02%  (p\u003d0.000 n\u003d19+20)\nVarint64ArrayLarge/Len328-12    6.59µs ± 4%  4.97µs ± 0%  -24.56%  (p\u003d0.000 n\u003d20+17)\nVarint64ArrayLarge/Len656-12    12.4µs ± 1%   9.4µs ± 1%  -24.44%  (p\u003d0.000 n\u003d18+17)\nVarint64ArrayLarge/Len1312-12   23.3µs ± 5%  17.3µs ± 3%  -25.85%  (p\u003d0.000 n\u003d19+20)\nVarint64ArrayLarge/Len2624-12   51.9µs ± 5%  39.3µs ± 0%  -24.40%  (p\u003d0.000 n\u003d19+16)\nVarint64ArrayLarge/Len5248-12    109µs ± 0%    85µs ± 2%  -22.00%  (p\u003d0.000 n\u003d20+19)\nVarint64ArrayLarge/Len10496-12   208µs ± 4%   157µs ± 1%  -24.36%  (p\u003d0.000 n\u003d20+18)\nVarint64ArrayLarge/Len20992-12   434µs ± 6%   331µs ± 1%  -23.68%  (p\u003d0.000 n\u003d20+19)\nVarint64ArrayLarge/Len41984-12   854µs ± 5%   665µs ± 1%  -22.11%  (p\u003d0.000 n\u003d20+19)\nVarint64ArrayLarge/Len83968-12  1.74ms ± 2%  1.38ms ± 2%  -20.49%  (p\u003d0.000 n\u003d19+19)\nDecodeEmpty-12                   212ns ± 5%   202ns ± 1%   -5.01%  (p\u003d0.000 n\u003d20+16)\n\nJava vs Cpp Variant:\nname                            old time/op  new time/op  delta\nVarint32ArraySmall/Len8-12       284ns ± 3%   280ns ± 1%  -1.46%  (p\u003d0.000 n\u003d17+16)\nVarint32ArraySmall/Len16-12      370ns ± 0%   370ns ± 5%  -0.09%  (p\u003d0.046 n\u003d16+19)\nVarint32ArraySmall/Len32-12      514ns ± 0%   516ns ± 5%    ~     (p\u003d0.147 n\u003d19+20)\nVarint32ArraySmall/Len64-12      782ns ± 2%   763ns ± 3%  -2.46%  (p\u003d0.000 n\u003d18+19)\nVarint32ArraySmall/Len128-12    1.29µs ± 5%  1.25µs ± 2%  -3.56%  (p\u003d0.000 n\u003d20+19)\nVarint32ArraySmall/Len256-12    2.21µs ± 1%  2.19µs ± 4%  -0.87%  (p\u003d0.021 n\u003d17+20)\nVarint32ArraySmall/Len512-12    4.01µs ± 2%  3.94µs ± 3%  -1.79%  (p\u003d0.000 n\u003d17+20)\nVarint32ArraySmall/Len1024-12   7.55µs ± 0%  7.41µs ± 2%  -1.82%  (p\u003d0.000 n\u003d16+19)\nVarint32ArraySmall/Len2048-12   17.0µs ± 0%  16.9µs ± 2%  -0.75%  (p\u003d0.027 n\u003d19+19)\nVarint32ArraySmall/Len4096-12   33.1µs ± 2%  32.4µs ± 0%  -1.88%  (p\u003d0.000 n\u003d17+17)\nVarint32ArrayLarge/Len34-12      673ns ± 1%   651ns ± 1%  -3.21%  (p\u003d0.000 n\u003d17+17)\nVarint32ArrayLarge/Len68-12     1.08µs ± 1%  1.03µs ± 3%  -4.82%  (p\u003d0.000 n\u003d19+17)\nVarint32ArrayLarge/Len136-12    1.83µs ± 1%  1.76µs ± 2%  -3.65%  (p\u003d0.000 n\u003d17+19)\nVarint32ArrayLarge/Len272-12    3.27µs ± 1%  3.19µs ± 4%  -2.34%  (p\u003d0.000 n\u003d17+20)\nVarint32ArrayLarge/Len544-12    6.04µs ± 1%  5.81µs ± 0%  -3.86%  (p\u003d0.000 n\u003d16+16)\nVarint32ArrayLarge/Len1088-12   11.0µs ± 0%  10.6µs ± 0%  -3.78%  (p\u003d0.000 n\u003d16+17)\nVarint32ArrayLarge/Len2176-12   21.7µs ± 1%  21.0µs ± 2%  -3.28%  (p\u003d0.000 n\u003d17+17)\nVarint32ArrayLarge/Len4352-12   46.2µs ± 0%  45.1µs ± 3%  -2.24%  (p\u003d0.000 n\u003d20+20)\nVarint32ArrayLarge/Len8704-12   90.7µs ± 8%  87.8µs ± 6%  -3.16%  (p\u003d0.000 n\u003d19+20)\nVarint32ArrayLarge/Len17408-12   171µs ± 1%   165µs ± 0%  -3.72%  (p\u003d0.000 n\u003d16+17)\nVarint64ArraySmall/Len8-12       309ns ± 5%   304ns ± 2%  -1.61%  (p\u003d0.000 n\u003d18+17)\nVarint64ArraySmall/Len16-12      403ns ± 1%   414ns ±13%    ~     (p\u003d0.774 n\u003d20+19)\nVarint64ArraySmall/Len32-12      569ns ± 0%   568ns ± 3%  -0.18%  (p\u003d0.012 n\u003d17+17)\nVarint64ArraySmall/Len64-12      898ns ± 0%   874ns ± 3%  -2.64%  (p\u003d0.000 n\u003d17+20)\nVarint64ArraySmall/Len128-12    1.52µs ± 1%  1.48µs ± 2%  -2.07%  (p\u003d0.000 n\u003d16+20)\nVarint64ArraySmall/Len256-12    2.65µs ± 0%  2.61µs ± 3%  -1.48%  (p\u003d0.000 n\u003d20+20)\nVarint64ArraySmall/Len512-12    4.86µs ± 1%  4.76µs ± 2%  -2.03%  (p\u003d0.000 n\u003d16+19)\nVarint64ArraySmall/Len1024-12   9.16µs ± 2%  9.07µs ± 3%  -0.97%  (p\u003d0.001 n\u003d17+19)\nVarint64ArraySmall/Len2048-12   22.7µs ± 2%  22.3µs ± 2%  -1.89%  (p\u003d0.000 n\u003d20+18)\nVarint64ArraySmall/Len4096-12   45.4µs ± 1%  45.0µs ± 1%  -0.84%  (p\u003d0.000 n\u003d19+18)\nVarint64ArrayLarge/Len164-12    2.84µs ± 1%  2.71µs ± 3%  -4.39%  (p\u003d0.000 n\u003d16+20)\nVarint64ArrayLarge/Len328-12    5.26µs ± 1%  4.97µs ± 0%  -5.36%  (p\u003d0.000 n\u003d20+17)\nVarint64ArrayLarge/Len656-12    10.0µs ± 1%   9.4µs ± 1%  -6.03%  (p\u003d0.000 n\u003d17+17)\nVarint64ArrayLarge/Len1312-12   18.1µs ± 1%  17.3µs ± 3%  -4.61%  (p\u003d0.000 n\u003d16+20)\nVarint64ArrayLarge/Len2624-12   41.3µs ± 0%  39.3µs ± 0%  -4.92%  (p\u003d0.000 n\u003d17+16)\nVarint64ArrayLarge/Len5248-12   88.6µs ± 2%  84.8µs ± 2%  -4.33%  (p\u003d0.000 n\u003d18+19)\nVarint64ArrayLarge/Len10496-12   165µs ± 1%   157µs ± 1%  -4.41%  (p\u003d0.000 n\u003d20+18)\nVarint64ArrayLarge/Len20992-12   341µs ± 2%   331µs ± 1%  -3.00%  (p\u003d0.000 n\u003d19+19)\nVarint64ArrayLarge/Len41984-12   696µs ± 1%   665µs ± 1%  -4.46%  (p\u003d0.000 n\u003d19+19)\nVarint64ArrayLarge/Len83968-12  1.43ms ± 1%  1.38ms ± 2%  -3.38%  (p\u003d0.000 n\u003d17+19)\nDecodeEmpty-12                   205ns ± 3%   202ns ± 1%  -1.45%  (p\u003d0.000 n\u003d17+16)\n\nBoth were run with 20 iterations on the decoding benchmark, on a mostly quiet machine with cpu frequency scaling disabled.\nPiperOrigin-RevId: 135494672\n"
    },
    {
      "commit": "1976b9edadc994262a35b3e30a378efeb07e44ac",
      "tree": "a395365986700e0ce7effec15bdcc4a06ec891dc",
      "parents": [
        "5fb654a4b202da10dadb417e7132400efafe4c87"
      ],
      "author": {
        "name": "notcarl",
        "email": "notcarl@google.com",
        "time": "Thu Oct 06 00:46:16 2016 +0000"
      },
      "committer": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Wed Oct 12 12:46:27 2016 -0700"
      },
      "message": "Note that Buffer.Unmarshal does NOT reset the destination protobuf.\n\nWhen repeatedly Unmarshalling into the same destination, this can cause a memory leak.\nPiperOrigin-RevId: 135304939\n"
    },
    {
      "commit": "5fb654a4b202da10dadb417e7132400efafe4c87",
      "tree": "d4030a47c1af94ead72e01409d72c4ced657d1ff",
      "parents": [
        "99d46c5d2d9449e5ee7feaf73228ba989a9cd649"
      ],
      "author": {
        "name": "notcarl",
        "email": "notcarl@google.com",
        "time": "Wed Oct 05 01:26:47 2016 +0000"
      },
      "committer": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Wed Oct 12 12:46:00 2016 -0700"
      },
      "message": "Add Varint decoding benchmarks\nPiperOrigin-RevId: 135181742\n"
    },
    {
      "commit": "99d46c5d2d9449e5ee7feaf73228ba989a9cd649",
      "tree": "5317341e57ed78a873989b4b2b9aafcb33fc8506",
      "parents": [
        "df1d3ca07d2d07bba352d5b73c4313b4e2a6203e"
      ],
      "author": {
        "name": "notcarl",
        "email": "notcarl@google.com",
        "time": "Mon Oct 03 23:47:50 2016 +0000"
      },
      "committer": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Wed Oct 12 12:43:44 2016 -0700"
      },
      "message": "Add protobuf benchmarks for varint encoding.\n\nWe add two sets of benchmarks:\n1. This benchmark uses increasingly large Any messages, which are common for storage systems.\nFor database like services, which are agnostic to the type being stored, Proto2 extensions could be used.\nHowever, Proto3 drops unknown fields and most of extensions, so Any must be used.\nAny types are also used as the arbitrary payload mechanism for RPC metadata.\n2. Another benchmark uses the barest possible proto, meant to show the overhead of the encoding system.\nThis is the default cost of encoding a proto with absolutely no fields.\n\nPiperOrigin-RevId: 135044506\n"
    },
    {
      "commit": "df1d3ca07d2d07bba352d5b73c4313b4e2a6203e",
      "tree": "f12e2ba30ff4c27daba19ecd6be3c54aa0f9be85",
      "parents": [
        "87c000235d3d852c1628dc9490cd21ab36a7d69f"
      ],
      "author": {
        "name": "bcmills",
        "email": "bcmills@google.com",
        "time": "Tue Sep 27 20:09:49 2016 +0000"
      },
      "committer": {
        "name": "Joe Tsai",
        "email": "joetsai@digital-static.net",
        "time": "Fri Sep 30 13:48:58 2016 -0700"
      },
      "message": "proto: In Size, don\u0027t double-count the tagcode for structs that implement Marshaler.\n\nIn (*Buffer).Marshal, don\u0027t ignore output returned alongside RequiredNotSetError.\n\nRemove a redundant shouldContinue check in Marshal (we\u0027re going to return the error we were given no matter what, and there\u0027s no field name to add here).\n\nUpdate the test to check for consistency among Marshal, (*Buffer).Marshal, and Size.\n\nThis resolves https://github.com/golang/protobuf/issues/236.\nPiperOrigin-RevId: 134444296\n"
    },
    {
      "commit": "87c000235d3d852c1628dc9490cd21ab36a7d69f",
      "tree": "9a1ee9a637fec73b526437af94a4bb930705fff1",
      "parents": [
        "1f49d83d9aa00e6ce4fc8258c71cc7786aec968a",
        "e8b7c67215abd7972a3b83f7620e04e7fa5e18e9"
      ],
      "author": {
        "name": "Bryan C. Mills",
        "email": "bmills@alumni.cmu.edu",
        "time": "Mon Sep 26 14:56:24 2016 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 26 14:56:24 2016 -0400"
      },
      "message": "Merge pull request #235 from lstoll/lstoll-mod-nanos-correctly\n\njsonpb: Fix Timestamp unmarshaling for pre-epoch times"
    },
    {
      "commit": "e8b7c67215abd7972a3b83f7620e04e7fa5e18e9",
      "tree": "9a1ee9a637fec73b526437af94a4bb930705fff1",
      "parents": [
        "1f49d83d9aa00e6ce4fc8258c71cc7786aec968a"
      ],
      "author": {
        "name": "Lincoln Stoll",
        "email": "lincoln.stoll@gmail.com",
        "time": "Fri Sep 23 21:53:50 2016 -0400"
      },
      "committer": {
        "name": "Lincoln Stoll",
        "email": "lincoln.stoll@gmail.com",
        "time": "Sun Sep 25 11:21:07 2016 -0400"
      },
      "message": "Fix Timestamp Unmarshaling for pre-epoch times\n\nThe `%` operator is the remainder, so was resulting in negative\nnano components. The UnixNano call can also overflow, notably for\nthe zero time. Switch to using `Unix()` directly for seconds, and\n`Nanosecond()` for the nanosecond component.\n"
    },
    {
      "commit": "1f49d83d9aa00e6ce4fc8258c71cc7786aec968a",
      "tree": "33d86ed7330c59f5dc6f2fdb66374ad6e28b3c99",
      "parents": [
        "5bdfda0a01d81b6b1694960c0d8d84c49c10d0ab"
      ],
      "author": {
        "name": "light",
        "email": "light@google.com",
        "time": "Wed Aug 24 20:12:15 2016 +0000"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Mon Aug 29 12:42:33 2016 -0700"
      },
      "message": "Allow t/f and True/False while parsing text protos\n\nFor consistency with C++ and Java.\nPiperOrigin-RevId: 131207429\n"
    },
    {
      "commit": "5bdfda0a01d81b6b1694960c0d8d84c49c10d0ab",
      "tree": "97a242f06a294fbf876f7c6c9770eba57ec2e146",
      "parents": [
        "ef00c02a19ffe87bd3f6866760e531b54ada72c6"
      ],
      "author": {
        "name": "Googler",
        "email": "noreply@google.com",
        "time": "Tue Aug 23 23:23:45 2016 +0000"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Mon Aug 29 12:42:06 2016 -0700"
      },
      "message": "Change MessageName to check if Message has an XXX_MessageName() method, and use the name returned by that method instead of internal registry when present.\nPiperOrigin-RevId: 131111087\n"
    },
    {
      "commit": "ef00c02a19ffe87bd3f6866760e531b54ada72c6",
      "tree": "ce6aff38538adf5f54d21e9ac3cdb51e55700926",
      "parents": [
        "888eb0692c857ec880338addf316bd662d5e630e"
      ],
      "author": {
        "name": "hakim",
        "email": "hakim@google.com",
        "time": "Mon Aug 22 20:00:37 2016 +0000"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Mon Aug 29 12:41:35 2016 -0700"
      },
      "message": "proto.Equal: document map equality and clarify the rule for repeated fields.\nPiperOrigin-RevId: 130971987\n"
    },
    {
      "commit": "888eb0692c857ec880338addf316bd662d5e630e",
      "tree": "20d435de6d998f250420e2a5d28dab4ab0c6739a",
      "parents": [
        "f592bd283e9ef86337a432eb50e592278c3d534d",
        "06e148329f15045f35652bc6c57b815f6da5e435"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Tue Aug 23 14:25:17 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Tue Aug 23 14:25:17 2016 -0700"
      },
      "message": "Remove conformance binary from repository\n\nMerge #219\n"
    },
    {
      "commit": "06e148329f15045f35652bc6c57b815f6da5e435",
      "tree": "20d435de6d998f250420e2a5d28dab4ab0c6739a",
      "parents": [
        "f592bd283e9ef86337a432eb50e592278c3d534d"
      ],
      "author": {
        "name": "Bruno Clermont",
        "email": "bruno@robotinfra.com",
        "time": "Tue Aug 23 13:22:09 2016 +0200"
      },
      "committer": {
        "name": "Bruno Clermont",
        "email": "bruno@robotinfra.com",
        "time": "Tue Aug 23 13:22:09 2016 +0200"
      },
      "message": "remove binary from repository\n"
    },
    {
      "commit": "f592bd283e9ef86337a432eb50e592278c3d534d",
      "tree": "5fec1131b30a5b208a4f2d9f72d1fd5b4d1d02a1",
      "parents": [
        "855c5d638b1772fa56ac51335d18ad4d633a2daf"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Aug 17 10:41:13 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Aug 17 10:41:13 2016 -0700"
      },
      "message": "_conformance: generate proto\n"
    },
    {
      "commit": "855c5d638b1772fa56ac51335d18ad4d633a2daf",
      "tree": "11d6cee50066ac08a86c5430f6d53edc41c07abc",
      "parents": [
        "7390af9dcd3c33042ebaf2474a1724a83cf1a7e6"
      ],
      "author": {
        "name": "light",
        "email": "light@google.com",
        "time": "Wed Aug 17 17:12:34 2016 +0000"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Aug 17 10:27:13 2016 -0700"
      },
      "message": "third_party/golang/protobuf: open source conformance test runner\nPiperOrigin-RevId: 130532724\n"
    },
    {
      "commit": "7390af9dcd3c33042ebaf2474a1724a83cf1a7e6",
      "tree": "0bda848d6111c388d1d996e5f2b1763a6d1561f4",
      "parents": [
        "2c1988e8c18d14b142c0b472624f71647cf39adb"
      ],
      "author": {
        "name": "light",
        "email": "light@google.com",
        "time": "Mon Aug 15 22:33:34 2016 +0000"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Mon Aug 15 15:36:29 2016 -0700"
      },
      "message": "Fix comment for Buffer.index field\n\nPiperOrigin-RevId: 130332792\n"
    },
    {
      "commit": "2c1988e8c18d14b142c0b472624f71647cf39adb",
      "tree": "ad958ee34789778cf4f2dc51b5cde66f347c4cdf",
      "parents": [
        "c3cefd437628a0b7d31b34fe44b3a7a540e98527"
      ],
      "author": {
        "name": "Feng Xiao",
        "email": "xiaofeng@google.com",
        "time": "Mon Aug 08 11:15:00 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Tue Aug 09 09:52:32 2016 -0700"
      },
      "message": "Update Go tests for C++ JSON name change\n"
    },
    {
      "commit": "c3cefd437628a0b7d31b34fe44b3a7a540e98527",
      "tree": "8554c554287b059b9fbf90dbeeab3f4129fc9700",
      "parents": [
        "1687f003bf0280bd6182a5a1c7241856b269a6c0"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jul 27 10:26:17 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jul 27 10:26:17 2016 -0700"
      },
      "message": "README: add compatibility section\n"
    },
    {
      "commit": "1687f003bf0280bd6182a5a1c7241856b269a6c0",
      "tree": "679b38270d478f0159c0902489f76eabce26a92a",
      "parents": [
        "2c2f7268d78c9b309e301a6df31de3b6e4430dca"
      ],
      "author": {
        "name": "Luke Granger-Brown",
        "email": "lukegb@google.com",
        "time": "Wed Jul 27 05:08:00 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jul 27 10:13:31 2016 -0700"
      },
      "message": "proto: Prevent Any protos from being deserialized multiple times.\n\nThis avoids people specifying protos (inadvertently) as:\n\nsome_repeated_any {\n  [type.googleapis.com/a/path/proto.Type] {\n    blah: 1\n  }\n  [type.googleapis.com/a/path/proto.Type] {\n    blah: 2\n  }\n}\n\nwhen they meant:\n\nsome_repeated_any {\n  [type.googleapis.com/a/path/proto.Type] {\n    blah: 1\n  }\n}\nsome_repeated_any {\n  [type.googleapis.com/a/path/proto.Type] {\n    blah: 2\n  }\n}\n"
    },
    {
      "commit": "2c2f7268d78c9b309e301a6df31de3b6e4430dca",
      "tree": "baa2320b4a2ddeda740aeb91cb1a63457cdd8185",
      "parents": [
        "51fb628d55f334811b0d925d6a2be809c75de49b"
      ],
      "author": {
        "name": "Bryan Mills",
        "email": "bcmills@google.com",
        "time": "Tue Jul 26 18:21:00 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jul 27 10:10:55 2016 -0700"
      },
      "message": "protoc-gen-go: Make proto3 scalar repeated fields packed by default (per the proto3 spec).\n\nThis resolves #197.\n"
    },
    {
      "commit": "51fb628d55f334811b0d925d6a2be809c75de49b",
      "tree": "fad2cf771d1a01b7767b1d9f5deb8614f5e2b724",
      "parents": [
        "18a29c075ffa1ea325956e76a7a363ff054e3fab"
      ],
      "author": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Mon Jul 18 08:27:00 2016 -0800"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jul 27 10:05:15 2016 -0700"
      },
      "message": "proto: don\u0027t panic when calling ExtensionDescs on an uninitialized message.\n"
    },
    {
      "commit": "18a29c075ffa1ea325956e76a7a363ff054e3fab",
      "tree": "120978c25d00396e1ee360b1df4c254f1cf4f35b",
      "parents": [
        "874264fbbb43f4d91e999fecb4b40143ed611400"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jul 27 10:02:04 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jul 27 10:02:04 2016 -0700"
      },
      "message": "regenerate .pb.go\n"
    },
    {
      "commit": "874264fbbb43f4d91e999fecb4b40143ed611400",
      "tree": "81186704fa958a3bf1c58ffc0058f53a7988680b",
      "parents": [
        "af59feb4214c835e81558f78e88b58bf034a7319"
      ],
      "author": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Mon Jul 11 13:55:00 2016 +0000"
      },
      "committer": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Tue Jul 12 12:38:13 2016 -0700"
      },
      "message": "proto: check for required fields when unmarshalling groups\n\nChange-Id: Icf8b82a07500ab226cf24b4c6aacc9a0a7476a59\n"
    },
    {
      "commit": "af59feb4214c835e81558f78e88b58bf034a7319",
      "tree": "c61bc7c3416642ad707e3732eb444feefa81e0c3",
      "parents": [
        "3607a4a99491b23e98d1a68cb408800bdcfb5698"
      ],
      "author": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Thu Jul 07 06:43:00 2016 +0000"
      },
      "committer": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Tue Jul 12 12:34:28 2016 -0700"
      },
      "message": "jsonpb: sort numeric proto keys in numeric order\n\nWhen marshalling to JSON, sort numeric proto keys in numeric order per\nhttps://developers.google.com/protocol-buffers/docs/proto#maps.\n\nChange-Id: Iab5bdfbf599ce35e856ad4d0e503fd2ab1a9aacd\n"
    },
    {
      "commit": "3607a4a99491b23e98d1a68cb408800bdcfb5698",
      "tree": "3b2b555402a32dec84dfc226db410e2adcba8420",
      "parents": [
        "3852dcfda249c2097355a6aabb199a28d97b30df"
      ],
      "author": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Tue Jul 12 12:09:51 2016 -0700"
      },
      "committer": {
        "name": "Damien Neil",
        "email": "dneil@google.com",
        "time": "Tue Jul 12 12:09:51 2016 -0700"
      },
      "message": "fix compiler golden test\n\nChange-Id: Icb29ca6bfa96fbc071cebaac4fc4f5dcbfd1d252\n"
    },
    {
      "commit": "3852dcfda249c2097355a6aabb199a28d97b30df",
      "tree": "cab41ba8da115953f6371b27dac3d0f30941cf78",
      "parents": [
        "b3e26a40c2321140ad7c7d031030d3c9e3cdecc7"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jun 29 14:10:53 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jun 29 14:10:53 2016 -0700"
      },
      "message": "jsonpb: add option to ignore unknown fields in a message\n\nI added a new Unmarshaler type for symmetry with Marshaler.\n"
    },
    {
      "commit": "b3e26a40c2321140ad7c7d031030d3c9e3cdecc7",
      "tree": "00b220975914c3d01da1c4cf630b8377e4737905",
      "parents": [
        "78b168c14fc28c8c711844d210f7ab845083e3b1"
      ],
      "author": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Wed Jun 29 11:38:43 2016 -0400"
      },
      "committer": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Wed Jun 29 11:40:17 2016 -0400"
      },
      "message": "proto: regenerate proto3.pb.go from .proto file\n\nA test depends on the new \u0027Cute\u0027 field.\n"
    },
    {
      "commit": "78b168c14fc28c8c711844d210f7ab845083e3b1",
      "tree": "7355531024c8ba366f3526d2da65f5c100332cf7",
      "parents": [
        "f6b4231c7fd7ac9df487f17759fc107fd61d98a0"
      ],
      "author": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Thu Jun 23 12:41:00 2016 -0400"
      },
      "committer": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Tue Jun 28 11:26:44 2016 -0400"
      },
      "message": "net/proto2/go: add GetAllExtensionDescs returns a []*ExtensionDesc\n\n// GetAllExtensionDescs returns a slice of all the descriptors\n// extensions present in pb.\n// // If an extension is not registered, a descriptor with only the\n// \u0027field\u0027 value set will\n// // be returned instead of a full descriptor.\n// // The returned slice is not guaranteed to be in any given order.\n// func GetAllExtensionDescs(pb Message) (extensions []*ExtensionDesc,\n// err error)\n"
    },
    {
      "commit": "f6b4231c7fd7ac9df487f17759fc107fd61d98a0",
      "tree": "31ca2e0eb5d168de32b793ab42eaa98a2b2a262d",
      "parents": [
        "0c1f6d65b5a189c2250d10e71a5506f06f9fa0a0"
      ],
      "author": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Fri Jun 17 14:49:00 2016 -0400"
      },
      "committer": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Tue Jun 28 11:21:12 2016 -0400"
      },
      "message": "proto: import change from Google.\n\nAdd tests for merging a map field. When src contains a duplicate key,\nits value message replaces (not merges with) the value message in dst.\n"
    },
    {
      "commit": "0c1f6d65b5a189c2250d10e71a5506f06f9fa0a0",
      "tree": "9df6d16122a8fdb8e4c3fe256fcae94b46c9ae53",
      "parents": [
        "5386fff85b00d237cd7d34b2d6ecbb403eb42eb8"
      ],
      "author": {
        "name": "Menghan Li",
        "email": "menghanl@google.com",
        "time": "Tue Jun 14 15:31:40 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Tue Jun 14 15:31:40 2016 -0700"
      },
      "message": "protoc-gen-go/grpc: pass file descriptor for service as Metadata\n\nBump support package version number from 2 to 3.\n"
    },
    {
      "commit": "5386fff85b00d237cd7d34b2d6ecbb403eb42eb8",
      "tree": "f91f38d5980b6c4e4b4de0e72a901776d730aee9",
      "parents": [
        "8616e8ee5e20a1704615e6c8d7afcdac06087a67"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Tue Jun 14 15:30:17 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Tue Jun 14 15:30:17 2016 -0700"
      },
      "message": "proto: s/Printf/Print/ where there\u0027s no format verb\n"
    },
    {
      "commit": "8616e8ee5e20a1704615e6c8d7afcdac06087a67",
      "tree": "4e60ef539d694ba53c2e2102563afe9c2e03b9b9",
      "parents": [
        "545732fb9671625a62a399186a066c4f8b942bc5"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jun 08 14:55:45 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jun 08 14:55:45 2016 -0700"
      },
      "message": "ptypes: regen and remove transforms from regen.sh\n"
    },
    {
      "commit": "545732fb9671625a62a399186a066c4f8b942bc5",
      "tree": "c80c94911e06b60f6e8b9f050287a7d5a0886782",
      "parents": [
        "ba6f978a1a6606adf3ccb6987f15c64262bfdbc2"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Tue Jun 07 14:17:10 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jun 08 14:17:10 2016 -0700"
      },
      "message": "protoc-gen-go: export the generated variable name of the FileDescriptor bytes\n"
    },
    {
      "commit": "ba6f978a1a6606adf3ccb6987f15c64262bfdbc2",
      "tree": "be9463971e1602efd09e9c2bc6cd9bfa9b0e67c4",
      "parents": [
        "c27503d0b47c72ba38d300aeaf9b82071a7f5d86"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Mon Jun 06 14:14:46 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jun 08 14:14:46 2016 -0700"
      },
      "message": "Make proto.RegisterFile public for gRPC\n\nRegenerated .pb.go files\n"
    },
    {
      "commit": "c27503d0b47c72ba38d300aeaf9b82071a7f5d86",
      "tree": "eac53254f3cbb1e050ed29f974c178633ed5ba36",
      "parents": [
        "f43dfb5ff114b82b6bff2fe6b18f64ca4145681b"
      ],
      "author": {
        "name": "Googler",
        "email": "noreply@google.com",
        "time": "Mon Jun 06 12:07:43 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jun 08 12:07:43 2016 -0700"
      },
      "message": "Fix marshalAny\u0027s handling of indentation.\n"
    },
    {
      "commit": "f43dfb5ff114b82b6bff2fe6b18f64ca4145681b",
      "tree": "b8cabc7723768b6552d387bbefcf4bb49a8c3bec",
      "parents": [
        "3b06fc7a4cad73efce5fe6217ab6c33e7231ab4a"
      ],
      "author": {
        "name": "Googler",
        "email": "noreply@google.com",
        "time": "Sun Jun 05 12:03:06 2016 -0700"
      },
      "committer": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed Jun 08 12:03:06 2016 -0700"
      },
      "message": "Add missing error check in jsonpb\u0027s marshal implementation.\n\nOtherwise invalid JSON can be produced.\n"
    },
    {
      "commit": "3b06fc7a4cad73efce5fe6217ab6c33e7231ab4a",
      "tree": "47408421d4a4a11ae826766f3ffa1181b4f0ddbd",
      "parents": [
        "1111461c35931a806efe06a9a43ad52a24c608ff"
      ],
      "author": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Wed Jun 01 11:17:05 2016 -0400"
      },
      "committer": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Wed Jun 01 11:17:05 2016 -0400"
      },
      "message": "net/proto2/go: make a slight change to how we handle []byte fields\n\nThis is meant to fix https://github.com/golang/protobuf/pull/188. There\nare no tests because we don\u0027t guarantee that we\u0027re going to maintain\nthis behavior in the future.\n\nFixes #188\n"
    },
    {
      "commit": "1111461c35931a806efe06a9a43ad52a24c608ff",
      "tree": "3abc61cdcfb66d215d1a03afc0574ec9c5fb887a",
      "parents": [
        "9e6977f30c91c78396e719e164e57f9287fff42c"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Wed May 25 19:11:34 2016 -0400"
      },
      "committer": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Tue May 31 19:11:34 2016 -0400"
      },
      "message": "proto: allow text proto map keys to be omitted or order swapped\n"
    },
    {
      "commit": "9e6977f30c91c78396e719e164e57f9287fff42c",
      "tree": "11cc9d9b12e1e89ceb16a7c0f7b798e05c736a49",
      "parents": [
        "e51d002c610dbe8c136679a67a6ded5df4d49b5c"
      ],
      "author": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Tue May 24 15:56:25 2016 -0400"
      },
      "committer": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Tue May 24 15:56:25 2016 -0400"
      },
      "message": "proto: fix equality to work with V1 generated format\n\nWhen the new V2 generated extension format was introduced, we\nmistakenly dropped support for comparing V1 generated extensions\nfor equality. Add that back.\n"
    },
    {
      "commit": "e51d002c610dbe8c136679a67a6ded5df4d49b5c",
      "tree": "65358f9f8195223ab89febfbb42347c7f3f289eb",
      "parents": [
        "cd85f19845cc96cc6e5269c894d8cd3c67e9ed83"
      ],
      "author": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Mon May 23 09:09:04 2016 -0400"
      },
      "committer": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Mon May 23 09:09:04 2016 -0400"
      },
      "message": "net/proto2: remove \u003cmessage\u003e.ExtensionMap() from generated messages\n\nTurn generated message struct field XXX_Extensions map[int32]Extension\ninto an embedded proto.InternalExtensions  struct\n\nInternalExtensions is a struct without any exported fields and methods.\nThis effectively makes the representation of the extension map private.\nThe proto package can access InternalExtensions by checking that the\ngenerated struct has the method \u0027extmap() proto.InternalExtensions\u0027.\n\nAlso lock accesses to the extension map.\n\nThis change bumps the Go protobuf generated code version number. Any\n.pb.go files generated with this version of the proto package or later\nwill require this version or later of the proto package to compile.\n"
    },
    {
      "commit": "cd85f19845cc96cc6e5269c894d8cd3c67e9ed83",
      "tree": "c7758a95273785e4674790390c5ba6fc65e00f76",
      "parents": [
        "a4ab9ec5de4f205e5aa1809eae63857f1e655c78"
      ],
      "author": {
        "name": "Ross Light",
        "email": "light@google.com",
        "time": "Thu May 19 15:50:37 2016 -0400"
      },
      "committer": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Thu May 19 15:52:29 2016 -0400"
      },
      "message": "proto: return error from Marshal if a message encodes to \u003e 2GiB\n\nWhile this check could be done before marshalling, it shouldn\u0027t occur\nfrequently and thus would slow down proto encoding on average.\n"
    },
    {
      "commit": "a4ab9ec5de4f205e5aa1809eae63857f1e655c78",
      "tree": "8e07631c9725db5efd75db4a4dfe5847c6124ac0",
      "parents": [
        "7cc19b78d562895b13596ddce7aafb59dd789318"
      ],
      "author": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Thu May 19 15:37:11 2016 -0400"
      },
      "committer": {
        "name": "matloob@google.com",
        "email": "matloob@golang.org",
        "time": "Thu May 19 15:37:11 2016 -0400"
      },
      "message": "proto: clean up proto API for extensions\n\nMethods that manipulate protos with extensions will now take\nproto.Message instead of the internal extendableProto interface.\n\nA ClearExtensions method is added to clear all extensions on protos.\n"
    },
    {
      "commit": "7cc19b78d562895b13596ddce7aafb59dd789318",
      "tree": "d21f3e172765dfb7c43167230d2b72a390004bec",
      "parents": [
        "bf531ff1a004f24ee53329dfd5ce0b41bfdc17df"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Tue Apr 26 07:53:00 2016 +1000"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Tue Apr 26 07:58:24 2016 +1000"
      },
      "message": "Use grpcPkg for a bit of code gen that overlooked it.\n"
    },
    {
      "commit": "bf531ff1a004f24ee53329dfd5ce0b41bfdc17df",
      "tree": "3500b34432b4d32986cf00ae5db2442f6ae4d2a5",
      "parents": [
        "2ebff28ac76fb19e2d25e5ddd4885708dfdd5611"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Apr 20 14:40:00 2016 +1000"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Apr 20 14:44:02 2016 +1000"
      },
      "message": "jsonpb: Marshal Any according to the spec.\n\nUnmarshaling Any is a TODO.\n\nFixes #170.\n"
    },
    {
      "commit": "2ebff28ac76fb19e2d25e5ddd4885708dfdd5611",
      "tree": "fe4d7e5ac692b9fcd2e1cb290c22272e1bd9c91f",
      "parents": [
        "331aba25e29be6408a842fca779ec9c0526d9409"
      ],
      "author": {
        "name": "Dave Day",
        "email": "djd@golang.org",
        "time": "Mon Apr 18 12:44:00 2016 +1000"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Tue Apr 19 09:54:22 2016 +1000"
      },
      "message": "Correctly set OrigName for oneof fields.\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "331aba25e29be6408a842fca779ec9c0526d9409",
      "tree": "e9bf25a5e7a65f721e196cd339ed17a9b8e60518",
      "parents": [
        "f0a097ddac24fb00e07d2ac17f8671423f3ea47c"
      ],
      "author": {
        "name": "Qi Zhao",
        "email": "toqizhao@gmail.com",
        "time": "Tue Apr 19 09:34:00 2016 +1000"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Tue Apr 19 09:40:00 2016 +1000"
      },
      "message": "Update the grpc plugin to support the grpc-go interceptor implementation.\n\nSee https://github.com/grpc/grpc-go/pull/642 for the corresponding grpc-go change.\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "f0a097ddac24fb00e07d2ac17f8671423f3ea47c",
      "tree": "259e5ddfd65568cb1c61e4c1f144b665e0062bda",
      "parents": [
        "78550bb1d05cd1ea812b182b603bf401a7d33ce9"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Apr 13 14:01:00 2016 +1000"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Apr 13 14:07:52 2016 +1000"
      },
      "message": "jsonpb: Fix handling of repeated enums.\n\nEnums used in maps is still broken, but commented-out test data\nis now there, together with TODOs.\n\nFixes #164.\n"
    },
    {
      "commit": "78550bb1d05cd1ea812b182b603bf401a7d33ce9",
      "tree": "41cc9d8862f9db1e9e0a98e7fb481c10380ff1b2",
      "parents": [
        "dda510ac0fd43b39770f22ac6260eb91d377bce3"
      ],
      "author": {
        "name": "Bryan Mills",
        "email": "bcmills@google.com",
        "time": "Fri Apr 01 08:55:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Apr 13 14:04:24 2016 +1000"
      },
      "message": "Improve error message when text unmarshaling a nested message with a required field.\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "dda510ac0fd43b39770f22ac6260eb91d377bce3",
      "tree": "bbfe00fb68f7a52c054b3ccd8fce457456d0174c",
      "parents": [
        "8d92cf5fc15a4382f8964b08e1f42a75c0591aa3"
      ],
      "author": {
        "name": "Andrew Gerrand",
        "email": "adg@golang.org",
        "time": "Wed Mar 30 11:19:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Mar 30 11:23:40 2016 +1100"
      },
      "message": "Use reflection-driven field accesses under GopherJS.\n\nLike App Engine, GopherJS does not support unsafe.\nThis change adds a \u0027js\u0027 build tag (set by GopherJS)\nalongside the existing \u0027appengine\u0027 tags.\n\nFixes #154.\n"
    },
    {
      "commit": "8d92cf5fc15a4382f8964b08e1f42a75c0591aa3",
      "tree": "e3677640abfc8b5a9c8bc3f6fdeb468f4dcc6366",
      "parents": [
        "d120e2f9573fd13ef964982b1d1f118cee00e4d0"
      ],
      "author": {
        "name": "Bryan Mills",
        "email": "bcmills@google.com",
        "time": "Sat Mar 19 05:57:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Tue Mar 22 09:33:53 2016 +1100"
      },
      "message": "Add specific error for oneof with nil element.\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "d120e2f9573fd13ef964982b1d1f118cee00e4d0",
      "tree": "0b473cef2e8ffaf659373fa73d3a5fdb26cefbf1",
      "parents": [
        "2fea9e168bab814ca0c6e292a6be164f624fc6ca"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Mar 18 12:05:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Mar 21 09:47:21 2016 +1100"
      },
      "message": "Add Any helper funcs to the ptypes package.\n"
    },
    {
      "commit": "2fea9e168bab814ca0c6e292a6be164f624fc6ca",
      "tree": "136925f8e4d32937ff8ed24254090c2bb488fefb",
      "parents": [
        "62e4364d64b32762febb61f2c88c0a29bc49a225"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Mar 21 09:39:39 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Mar 21 09:39:39 2016 +1100"
      },
      "message": "Expose the gRPC code generation plugin.\n\nClarify the unsupported nature of this interface in the README.\n\nFixes #147.\n"
    },
    {
      "commit": "62e4364d64b32762febb61f2c88c0a29bc49a225",
      "tree": "93a88b9a59fb4ff702c90842e5cfbcb7da624c41",
      "parents": [
        "99511271042a09d1e01baea8781caa5210fec66e"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Mar 17 12:31:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Mar 17 12:32:49 2016 +1100"
      },
      "message": "jsonpb: Accept both camelCase and orig_name as field names for oneof fields.\n\nFixes #148.\n"
    },
    {
      "commit": "99511271042a09d1e01baea8781caa5210fec66e",
      "tree": "ef1fe60b810f31f3962e7b44a292fae948b63737",
      "parents": [
        "0fd8c908d872c921af513ef5091964bbd2e0d904"
      ],
      "author": {
        "name": "Nikki VonHollen",
        "email": "vonhollen@google.com",
        "time": "Thu Mar 10 21:13:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Mar 14 12:43:34 2016 +1100"
      },
      "message": "Add support for decoding a stream of JSON objects.\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "0fd8c908d872c921af513ef5091964bbd2e0d904",
      "tree": "d972a0dbb508600cb3d665ebbe90694f43051f71",
      "parents": [
        "b9504f23731d0b61ccfff7370a161d6c857ca00d"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Mar 11 10:32:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Mar 11 10:37:40 2016 +1100"
      },
      "message": "Switch use of strings.LastIndexByte to strings.LastIndex.\n\nIt has almost zero impact on performance in practice,\nand permits this code to keep working with Go 1.4.\n\nFixes #146.\n"
    },
    {
      "commit": "b9504f23731d0b61ccfff7370a161d6c857ca00d",
      "tree": "137cea76de435ace6b2267913bed71575f8ea09b",
      "parents": [
        "750c6bd0827ae5f3ebc8f49c6dedacc7c5f555b4"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Mar 09 11:48:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Mar 09 13:16:27 2016 +1100"
      },
      "message": "A few small bits of style modernisation,\nsuch as using append where it makes the code shorter and more natural.\n"
    },
    {
      "commit": "750c6bd0827ae5f3ebc8f49c6dedacc7c5f555b4",
      "tree": "95a37502c6880db164ba8d6825d13299d9c05800",
      "parents": [
        "e3aaa3aa25c1c69c346988da1c9baa87b6016576"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Mar 09 13:15:09 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Mar 09 13:15:10 2016 +1100"
      },
      "message": "Generate the new go_package options for the WKTs.\n\nThis is getting upstreamed; for now, do it locally\nto ease construction.\n"
    },
    {
      "commit": "e3aaa3aa25c1c69c346988da1c9baa87b6016576",
      "tree": "97a841c73563613fa503269fa511386125802436",
      "parents": [
        "cde632b2dfc9b2747363b9ad6efa68c902944a27"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Mar 09 11:28:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Mar 09 11:38:23 2016 +1100"
      },
      "message": "Add compatibility markers to grpc generated code.\n\nThis asserts at build time that the generated code is compatible with\nthe grpc package that it is linked to. It is analogous to the similar\nconstant that asserts compatibility with regular proto generated code.\n"
    },
    {
      "commit": "cde632b2dfc9b2747363b9ad6efa68c902944a27",
      "tree": "8ff70ecfd692fd8e5d0daf0118fc31aeaf481977",
      "parents": [
        "c75fbf01dc6cb73649c4cd4326182c3e44aa9dbb"
      ],
      "author": {
        "name": "Michael Matloob",
        "email": "matloob@google.com",
        "time": "Tue Mar 08 09:25:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Tue Mar 08 09:48:39 2016 +1100"
      },
      "message": "Use the zero value when decoding a map element that is missing its key or value.\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "c75fbf01dc6cb73649c4cd4326182c3e44aa9dbb",
      "tree": "4a1697f2471295570474fa8d548c504ddba50f10",
      "parents": [
        "1cc4d6fa4abfabc2fe9cb202f3f1dde0e1032e86"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Mar 04 09:17:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Mar 04 10:23:20 2016 +1100"
      },
      "message": "Implement new semantics for `option go_package`.\n\nFull proposal: https://github.com/golang/protobuf/issues/139\n\nFixes #139.\n"
    },
    {
      "commit": "1cc4d6fa4abfabc2fe9cb202f3f1dde0e1032e86",
      "tree": "8c1af5fb72e64f817cd2a12892360103ca8fa22a",
      "parents": [
        "552c7b9542c194800fd493123b3798ef0a832032"
      ],
      "author": {
        "name": "Lev Shamardin",
        "email": "levs@google.com",
        "time": "Fri Mar 04 03:50:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Mar 04 10:18:21 2016 +1100"
      },
      "message": "Support for google.protobuf.Any expansion in text marshaling and unmarshaling.\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "552c7b9542c194800fd493123b3798ef0a832032",
      "tree": "e19c89cdc19151a28f2614d1c76338fea0863690",
      "parents": [
        "2fc053c57e60ac4997412fcc5cf05a1bb892188e"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Feb 26 12:45:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Feb 26 12:55:42 2016 +1100"
      },
      "message": "jsonpb: Handle Struct and NullValue WKTs.\n"
    },
    {
      "commit": "2fc053c57e60ac4997412fcc5cf05a1bb892188e",
      "tree": "d7de6cab66938683a1171a07878cae53aab35ee6",
      "parents": [
        "45760678a2e5102a51433d40069dbc9ec5b26753"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Feb 26 05:52:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Feb 26 12:55:06 2016 +1100"
      },
      "message": "Generate Descriptor method for groups.\n"
    },
    {
      "commit": "45760678a2e5102a51433d40069dbc9ec5b26753",
      "tree": "fb958f4531e1a1c75a2740b7ba3a993d04927372",
      "parents": [
        "c6184d34b2de4dfe1105ca59c95bda6abdcaf367"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 25 14:18:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 25 15:16:41 2016 +1100"
      },
      "message": "Generate a XXX_WellKnownType method for NullValue.\n"
    },
    {
      "commit": "c6184d34b2de4dfe1105ca59c95bda6abdcaf367",
      "tree": "0c06298757694f1c98cea8114a4ddc63df6d7baf",
      "parents": [
        "3e847b4d77a69fe9c6eb2df6d7957c5a73ba192d"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 25 11:12:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 25 15:13:32 2016 +1100"
      },
      "message": "jsonpb: Format and parse the WKTs in wrappers.proto.\n\nPer the spec, they are meant to use the same representation\nin JSON as the wrapped primitive type. Fortunately for us,\nthat is trivial to implement.\n"
    },
    {
      "commit": "3e847b4d77a69fe9c6eb2df6d7957c5a73ba192d",
      "tree": "0f2be3b4f37eb3f78c4a1894d9029a9c7be85a63",
      "parents": [
        "553c764c95697e59b8bcc8b82a860cdf42447de9"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Tue Feb 23 15:29:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 25 15:07:38 2016 +1100"
      },
      "message": "Add remaining Go-supported WKTs to the list of types to generate XXX_WellKnownType for.\n\nThese don\u0027t (yet) have support in jsonpb, but will soon.\n"
    },
    {
      "commit": "553c764c95697e59b8bcc8b82a860cdf42447de9",
      "tree": "13c808d58c6f8b543ae7cc9a55bba3551409c73d",
      "parents": [
        "3c84672111d91bb5ac31719e112f9f7126a0e26e"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Tue Feb 23 14:14:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 25 15:02:00 2016 +1100"
      },
      "message": "Generate XXX_WellKnownType method for recognised well-known types.\n\nJust Duration and Timestamp for now.\n\nMake jsonpb recognise them and format/parse according to the spec.\n"
    },
    {
      "commit": "3c84672111d91bb5ac31719e112f9f7126a0e26e",
      "tree": "fd559ac2cfa0fc7da98b57d5a130978f90e5b830",
      "parents": [
        "127091107ff5f822298f1faa7487ffcf578adcf6"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Feb 22 08:49:41 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Feb 22 08:49:41 2016 +1100"
      },
      "message": "Add Timestamp helper funcs to the ptypes package.\n"
    },
    {
      "commit": "127091107ff5f822298f1faa7487ffcf578adcf6",
      "tree": "9fdfa338c1f3cff581fc369d8bf512484ecdce23",
      "parents": [
        "89238a3245885ada85d2f4fdbe76adae392df69b"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Feb 17 11:46:17 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Feb 17 11:47:48 2016 +1100"
      },
      "message": "Rearrange the well-known types package layout and API:\n\n- Rename `types` to `ptypes`.\n- Rename `DurationFromProto` to `Duration`.\n- Unexport `ValidateDuration`.\n\nSorry for the breakage. This should be the final location of everything.\n"
    },
    {
      "commit": "89238a3245885ada85d2f4fdbe76adae392df69b",
      "tree": "42a68dd1ed21a7ed0f761b37e8892d1c18891d90",
      "parents": [
        "b3392a2965eaf83a934d81e8aede92fdb9ad061e"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Feb 15 08:55:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Feb 15 09:01:53 2016 +1100"
      },
      "message": "Add initial well-known types support package.\n\nThis is initially only Duration helper funcs;\nmore will follow.\n"
    },
    {
      "commit": "b3392a2965eaf83a934d81e8aede92fdb9ad061e",
      "tree": "b73aea9d392eef3f65d5fc182e3000f0d6fd0956",
      "parents": [
        "0dfe8f37844c14cb32c7247925270e0f7ba90973"
      ],
      "author": {
        "name": "Lev Shamardin",
        "email": "levs@google.com",
        "time": "Tue Feb 09 22:30:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Feb 15 08:57:01 2016 +1100"
      },
      "message": "Configurable TextMarshaler for protos.\n\nThis also replaces (Marshal|Compact)Text(String?) implementations with\ncalls to the TextMarshaler methods.\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "0dfe8f37844c14cb32c7247925270e0f7ba90973",
      "tree": "6d479877d5fd8a8759832844a510f16f2bba72c7",
      "parents": [
        "8ea33d25124a63a964f248594fdd8887178543f2"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 11 12:39:55 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 11 12:39:55 2016 +1100"
      },
      "message": "Add more well-known types: Struct, Timestamp and Wrappers.\n\nUpdates #50.\n"
    },
    {
      "commit": "8ea33d25124a63a964f248594fdd8887178543f2",
      "tree": "a8f2fa029eb7e645210b3c071c0be40985e92cef",
      "parents": [
        "001690d39bd620847bb265d93a7c5e1bd3737308"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Feb 10 15:40:45 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 11 09:39:53 2016 +1100"
      },
      "message": "Add well-known types.\n\nThis introduces supported Go packages for each well-known type,\nand a placeholder support package for interacting with them.\n\nThis commit adds Any, Duration and Empty; more types will follow.\n\nUpdates #50.\n"
    },
    {
      "commit": "001690d39bd620847bb265d93a7c5e1bd3737308",
      "tree": "f6472aa575ac71319fdfd7328b1b74df8bdf136a",
      "parents": [
        "d20896fc31fb0e955e57970d61eb6eea054ff048"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Feb 10 14:04:11 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Feb 10 14:04:11 2016 +1100"
      },
      "message": "Switch jsonpb.Marshaler to use camelCase by default.\n\nThis now matches the official proto3 JSON spec at\nhttps://developers.google.com/protocol-buffers/docs/proto3#json.\nNote that jsonpb.Unmarshaler accepts both field name forms.\n\nThere is a new Marshaler.OrigName field that can be used to preserve\nthe old behaviour.\n\nThis may require using protoc version 3.0.0 beta2 or later.\n"
    },
    {
      "commit": "d20896fc31fb0e955e57970d61eb6eea054ff048",
      "tree": "9685d697514eb5dbc7c6816f7fbc19a841132ea7",
      "parents": [
        "b982704f8bb716bb608144408cff30e15fbde841"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Feb 10 10:39:21 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Feb 10 10:39:21 2016 +1100"
      },
      "message": "Add support for plumbing json_name from protoc through to proto.Properties.\n\nThis will be used by the jsonpb package at a later date.\n"
    },
    {
      "commit": "b982704f8bb716bb608144408cff30e15fbde841",
      "tree": "c9be7790bb148351ae1a4e76be2ea4f5f28040d6",
      "parents": [
        "45bba206dd5270d96bac4942dcfe515726613249"
      ],
      "author": {
        "name": "Daniel Kraft",
        "email": "d@domob.eu",
        "time": "Tue Feb 02 18:33:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Feb 04 10:08:20 2016 +1100"
      },
      "message": "Extend the text format parser to allow concatenation of string literals in single quotes.\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "45bba206dd5270d96bac4942dcfe515726613249",
      "tree": "22c6edefa97e65b93d142912e43c07cb2040b710",
      "parents": [
        "6aaa8d47701fa6cf07e914ec01fde3d4a1fe79c3"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Jan 29 08:30:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Jan 29 08:33:50 2016 +1100"
      },
      "message": "jsonpb: Don\u0027t emit zero value proto3 fields by default.\n\nThis aligns the default behaviour with the spec\n(https://developers.google.com/protocol-buffers/docs/proto3#json),\nbut also adds a Marshaler option to control it.\n\nFixes #122.\n"
    },
    {
      "commit": "6aaa8d47701fa6cf07e914ec01fde3d4a1fe79c3",
      "tree": "e5cfec7bd37ea23bc99601f857972ff349f7d3f3",
      "parents": [
        "5fc2294e655b78ed8a02082d37808d46c17d7e64"
      ],
      "author": {
        "name": "Zac Mullett",
        "email": "zac.mullett@gmail.com",
        "time": "Sun Jan 24 20:11:55 2016 +0100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Mon Jan 25 08:44:18 2016 +1100"
      },
      "message": "Adding repeated field data population example\n\nSigned-off-by: David Symonds \u003cdsymonds@golang.org\u003e\n"
    },
    {
      "commit": "5fc2294e655b78ed8a02082d37808d46c17d7e64",
      "tree": "94ca98f9babdf6ef47ab9daea9e0b42e0bf20ffe",
      "parents": [
        "2402d76f3d41f928c7902a765dfc872356dd3aad"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Thu Jan 21 14:29:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Fri Jan 22 08:34:52 2016 +1100"
      },
      "message": "Clarify jsonpb package docs.\n"
    },
    {
      "commit": "2402d76f3d41f928c7902a765dfc872356dd3aad",
      "tree": "57a17340bc20855e5c48136f2421188cc5357e39",
      "parents": [
        "4df416cb47b2e9f43a56776922e284f3e678166e"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Jan 06 12:58:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Jan 06 13:06:35 2016 +1100"
      },
      "message": "Add compatibility markers to proto generated code.\n\nThis asserts at build time that the generated code is compatible with\nthe proto package that it is linked to.\n"
    },
    {
      "commit": "4df416cb47b2e9f43a56776922e284f3e678166e",
      "tree": "6f9b96099e90ec557d15553d4161f0cbd747d626",
      "parents": [
        "04eac41517df87aa1adec44b1c032a027b546f05"
      ],
      "author": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Jan 06 06:53:00 2016 +1100"
      },
      "committer": {
        "name": "David Symonds",
        "email": "dsymonds@golang.org",
        "time": "Wed Jan 06 08:47:15 2016 +1100"
      },
      "message": "Fix proto.Equal handling of proto3 bytes fields.\n\nproto3 specifies that non-message scalar fields don\u0027t have a \"has\" bit,\nand so []byte{} and []byte(nil) are considered equivalent.\n"
    }
  ],
  "next": "04eac41517df87aa1adec44b1c032a027b546f05"
}
