)]}'
{
  "log": [
    {
      "commit": "095f1d351a5a2553a29c7a735f1d2aaa56c26b96",
      "tree": "63e7a0208ae490b27c55ec4dad3d0d6507fff8c7",
      "parents": [
        "a7398372e0f1934448adbf97702ad9509ace3e13"
      ],
      "author": {
        "name": "Marina Ciocea",
        "email": "marinaciocea@google.com",
        "time": "Wed Dec 14 18:24:47 2022 -0500"
      },
      "committer": {
        "name": "Marina Ciocea",
        "email": "marinaciocea@google.com",
        "time": "Thu Dec 15 17:20:52 2022 +0000"
      },
      "message": "[cppdap] Add OWNERS file\n\nAdd as owners the owners of the code that calls into this dependency.\n\nThe OWNERS file is generated by `fx update-3p-owners`.\n\nBug: 102810\nChange-Id: Iebbe424345a171f5e438e0fc3946d10bc501237b\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/cppdap/+/777245\nReviewed-by: Brett Wilson \u003cbrettw@google.com\u003e\n"
    },
    {
      "commit": "a7398372e0f1934448adbf97702ad9509ace3e13",
      "tree": "9def54ecbb271c6e28a8924e6fa83e997d305200",
      "parents": [
        "9ee0612e097e43ccbf19efbe7ae2e017ac10e545"
      ],
      "author": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Wed Nov 03 23:49:15 2021 -0700"
      },
      "committer": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Thu Nov 04 06:56:20 2021 +0000"
      },
      "message": "[cpp] Suppress -Wextra-semi in third party code\n\nBug: 56257\nChange-Id: I4d739e44eea421cf347243ca91fb1500dd2f88c2\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/cppdap/+/602344\nReviewed-by: Tamir Duberstein \u003ctamird@google.com\u003e\n"
    },
    {
      "commit": "9ee0612e097e43ccbf19efbe7ae2e017ac10e545",
      "tree": "55a721cb629557b7b5b055b4d16a3b632b76af2d",
      "parents": [
        "ad76c638dfc87cc4444ec16de606a51dfa438b20"
      ],
      "author": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Mon Nov 01 12:14:20 2021 -0700"
      },
      "committer": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Mon Nov 01 19:59:03 2021 +0000"
      },
      "message": "[cpp] Suppress -Wextra-semi\n\nBug: 56257\nChange-Id: I4ff71389ca5b9d4cefe891092291971c7ed6eaa1\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/cppdap/+/600643\nReviewed-by: Tamir Duberstein \u003ctamird@google.com\u003e\n"
    },
    {
      "commit": "ad76c638dfc87cc4444ec16de606a51dfa438b20",
      "tree": "3700d91f3f97c2b65e6a012f70b71d30eaea6d4e",
      "parents": [
        "fedd4fac7ace3cb5408b74a7637711825c3ef378",
        "ad185ee7624ed1cf35c54fc08ac8722cd8a3e1f1"
      ],
      "author": {
        "name": "Puneetha Ramachandra",
        "email": "puneetha@google.com",
        "time": "Thu Feb 18 14:18:10 2021 -0800"
      },
      "committer": {
        "name": "Puneetha Ramachandra",
        "email": "puneetha@google.com",
        "time": "Thu Feb 18 14:18:10 2021 -0800"
      },
      "message": "[cppdap] Merge from upstream for response cb fixes\n\nChange-Id: Id4faf9ffce7babf93fec89bf9ba67f323edf126b\n"
    },
    {
      "commit": "ad185ee7624ed1cf35c54fc08ac8722cd8a3e1f1",
      "tree": "deeca4feb9896a6acc379abeff7e8962ecc76cba",
      "parents": [
        "2a3ba209374f7384e6a78a47bafbd14ec5eceab4"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jan 18 12:31:42 2021 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Feb 11 21:58:21 2021 +0000"
      },
      "message": "license-checker.cfg: Update rules\n\nThe license classification rules in github.com/google/licensecheck have been updated.\n"
    },
    {
      "commit": "fedd4fac7ace3cb5408b74a7637711825c3ef378",
      "tree": "679fd2e3ef98b6a27c82bf6ed27bcf124061d748",
      "parents": [
        "2b055919abb0ff7f5e1fa015c02ac652278a01fc"
      ],
      "author": {
        "name": "Haowei Wu",
        "email": "haowei@google.com",
        "time": "Tue Jan 26 19:48:04 2021 -0800"
      },
      "committer": {
        "name": "Haowei Wu",
        "email": "haowei@google.com",
        "time": "Wed Feb 03 19:47:40 2021 +0000"
      },
      "message": "[build] Move rapidjson back to third_party\n\nPreviously rapidjson were moved to zircon/third_party in\norder to prevent abs paths to appear in Fuchsia build. This is no\nlonger needed and should be reverted back.\n\nBug: 57392\nChange-Id: I4f65524693a428e14c9bbc85450f3327ca4eb1e5\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/cppdap/+/476224\nReviewed-by: Petr Hosek \u003cphosek@google.com\u003e\n"
    },
    {
      "commit": "2a3ba209374f7384e6a78a47bafbd14ec5eceab4",
      "tree": "c6c9fa98ece1aaa5d5c89b91f7b6d244c3a0c11f",
      "parents": [
        "e10691ab3f979e69a4b4151a496ef075863837ed"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Feb 03 19:08:27 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 03 19:08:27 2021 +0000"
      },
      "message": "Merge pull request #58 from ben-clayton/response-callbacks\n\nAdd Session::registerHandler() overloads that support response callbacks"
    },
    {
      "commit": "e10691ab3f979e69a4b4151a496ef075863837ed",
      "tree": "f754ece3a4a8b9c6079f5464782aeb740b48d61d",
      "parents": [
        "6d6cbf17d7d783777a6756008982e99bef6e316f"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jan 13 19:28:09 2021 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Jan 14 12:49:37 2021 +0000"
      },
      "message": "Update DAP protocol to 1.43.0\n"
    },
    {
      "commit": "2b055919abb0ff7f5e1fa015c02ac652278a01fc",
      "tree": "ef0223977120ad7414516dcff6c32639d3aaf2e7",
      "parents": [
        "6d6cbf17d7d783777a6756008982e99bef6e316f"
      ],
      "author": {
        "name": "Puneetha Ramachandra",
        "email": "puneetha@google.com",
        "time": "Mon Nov 30 20:30:23 2020 -0800"
      },
      "committer": {
        "name": "Puneetha Ramachandra",
        "email": "puneetha@google.com",
        "time": "Fri Dec 04 03:58:11 2020 +0000"
      },
      "message": "Add fuchsia port and BUILD.gn\n\nReplaced json with rapidjson used in fuchsia. Replaced googletest\nwith one used in fuchsia. Added readme for fuchsia and BUILD.gn.\n\nTest: json_test\nChange-Id: I0313400943b20048439752a7f2f1194169c8f36b\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/github.com/google/cppdap/+/456566\nReviewed-by: Dangyi Liu \u003cdangyi@google.com\u003e\n"
    },
    {
      "commit": "6d6cbf17d7d783777a6756008982e99bef6e316f",
      "tree": "b6aa853928a1a7f0af1ad3235cc473c3a66c040f",
      "parents": [
        "77209caf044d58c7d87770b377027a65fe696466"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Dec 01 16:30:45 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Dec 02 17:44:24 2020 +0000"
      },
      "message": "Add support for rapidjson as the JSON library\n\nnlohmann is still the default, but if `CPPDAP_JSON_DIR` points to rapidjson, then this will be used instead\n\nMost of this was upstreamed from:\nhttps://fuchsia-review.googlesource.com/c/third_party/github.com/google/cppdap/+/456566\n"
    },
    {
      "commit": "77209caf044d58c7d87770b377027a65fe696466",
      "tree": "c768e824f662f84d49b68bc749e4bd745dc003ef",
      "parents": [
        "e53575d2727205c53a671bc63fc92dfe32ab03a7"
      ],
      "author": {
        "name": "Puneetha Ramachandra",
        "email": "puneetha@google.com",
        "time": "Tue Dec 01 03:16:11 2020 -0800"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Dec 01 18:13:31 2020 +0000"
      },
      "message": "Fix content reader for partial input\n\nWhen there is partial message in reader, popping out the\ncharacters lead to parse errors on the subsequent attempt\nto parse. To avoid this, the last matched characters\u0027\nindex is stored during parsing and reset on error.\n"
    },
    {
      "commit": "e53575d2727205c53a671bc63fc92dfe32ab03a7",
      "tree": "5850af2d154844569d1e7be415fc4071537f7b45",
      "parents": [
        "ea6098df7f34228a22ce0a27f34f60f99c3a8a53"
      ],
      "author": {
        "name": "Puneetha Ramachandra",
        "email": "puneetha@google.com",
        "time": "Tue Dec 01 09:19:41 2020 -0800"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Dec 01 17:59:43 2020 +0000"
      },
      "message": "Split bind API\n\nBind API is split into connect and startProcessingMessages calls.\nThis enables users to directly call connect and manage processing\nmessages on user threads.\n"
    },
    {
      "commit": "ea6098df7f34228a22ce0a27f34f60f99c3a8a53",
      "tree": "a4034be7f963be2125d1f43745cad70d9c8f1a1a",
      "parents": [
        "1fd23dda91e01550be1a421de307e6fedb2035a9"
      ],
      "author": {
        "name": "Puneetha Ramachandra",
        "email": "puneetha@google.com",
        "time": "Mon Nov 30 21:04:53 2020 -0800"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Dec 01 17:59:43 2020 +0000"
      },
      "message": "Added bindNoThread\n\nbindNoThread in conjunction with OnDataAvailable will provide\nusers with a choice of thread to process requests on. This is\nuseful when the user relies on single threaded message loop based\ndesign to avoid locking.\n"
    },
    {
      "commit": "1fd23dda91e01550be1a421de307e6fedb2035a9",
      "tree": "8ea5f7dbc195a006f10975aaba6c07ecad07ad9e",
      "parents": [
        "1e5ec3e40581b06202ec7e5a528accd9d2c7180a"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Jul 21 15:19:54 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Jul 21 16:31:05 2020 +0100"
      },
      "message": "Add license checker config and kokoro presubmit\n\n`license-checker` is a tool that verifies each file has contains a permitted license header.\n\nSee https://github.com/ben-clayton/license-checker for more information.\n\nAlso add missing licenses to presubmit scripts.\n"
    },
    {
      "commit": "1e5ec3e40581b06202ec7e5a528accd9d2c7180a",
      "tree": "f56fa053e7a5815839ab8ca1a4093bb6a119bb38",
      "parents": [
        "7b02b9f73ae154f67c9e6f5a16ca5a099ec8100b"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 29 20:41:32 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Jun 30 11:57:51 2020 +0100"
      },
      "message": "Change dap::integer backing type to int64_t\n\n`int` may be \u003c 64 bit, and some dap protocols use a 64 bit integer. Chnage to `int64_t` to be consistent.\n\nFixes: #45\n"
    },
    {
      "commit": "7b02b9f73ae154f67c9e6f5a16ca5a099ec8100b",
      "tree": "f85c50fa01961103c04f3b580543ff583a748c37",
      "parents": [
        "c9630a9aee892ee898830aa30c97baa3f017a54b"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 15 17:00:50 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 22 19:51:39 2020 +0100"
      },
      "message": "Add dap::initialize() and terminate() functions\n\nCan be used to explicitly control when the TypeInfo static initializers / destructors are called.\nUsually not needed.\n\nIssue: #40\n"
    },
    {
      "commit": "c9630a9aee892ee898830aa30c97baa3f017a54b",
      "tree": "e5f94fa76e02ce4280097a03f546212818197379",
      "parents": [
        "ed0af8fa2180655673c42702b459676bc405dc05"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Jun 11 09:56:04 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 15 15:28:07 2020 +0100"
      },
      "message": "TypeOf: Move Move TypeInfos to anon namespace\n\nInstead of constructing them as static fields.\nSlightly less cludgy.\n\nRelated issue: #40\n"
    },
    {
      "commit": "ed0af8fa2180655673c42702b459676bc405dc05",
      "tree": "1e3cecf0364e2e4bb28b233e0a0cee0cdf835760",
      "parents": [
        "9d3f5c8f1d62de43da85a63b07ba3b268648bc93"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Jun 11 09:53:32 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 15 15:16:10 2020 +0100"
      },
      "message": "Add lots more tests for dap::any.\n\nExercise copy, assign, moves.\n"
    },
    {
      "commit": "9d3f5c8f1d62de43da85a63b07ba3b268648bc93",
      "tree": "17a84b37b396b2335ef430065fa36b8d52ab4fdb",
      "parents": [
        "bb3dbcd2c37ccf0f8d6a88672edf2e1f9971447c"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jun 10 12:31:43 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jun 10 15:10:57 2020 +0100"
      },
      "message": "clang: Enable -Weverything, fix all warnings\n\nThis change fixes the following warnings:\n\n```\n    -Wc++98-compat-extra-semi\n    -Wc++98-compat-local-type-template-args\n    -Wc++98-compat-pedantic\n    -Wc++98-compat\n    -Wcomma\n    -Wdeprecated-copy-dtor\n    -Wexit-time-destructors\n    -Wextra-semi-stmt\n    -Wextra-semi\n    -Wfloat-conversion\n    -Wfloat-equal\n    -Wformat-nonliteral\n    -Wglobal-constructors\n    -Winconsistent-missing-destructor-override\n    -Wnon-virtual-dtor\n    -Wold-style-cast\n    -Wpadded\n    -Wreturn-std-move-in-c++11\n    -Wshadow-field-in-constructor\n    -Wshadow-uncaptured-local\n    -Wshift-sign-overflow\n    -Wsign-conversion\n    -Wundef\n    -Wunreachable-code-return\n    -Wused-but-marked-unused\n    -Wweak-vtables\n    -Wzero-as-null-pointer-constant\n```\n"
    },
    {
      "commit": "bb3dbcd2c37ccf0f8d6a88672edf2e1f9971447c",
      "tree": "cf7c8339b30f87917f0bff5d447c09212ca613a8",
      "parents": [
        "f0c28f93dde6e80fd6d24bdec4d474a6c45a13cf"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jun 10 12:50:21 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jun 10 15:10:57 2020 +0100"
      },
      "message": "Update DAP protocol to 1.41.0\n\nUpdate the script to include the DAP version in the file headers.\n\nRemove http file caching. Was never used.\n"
    },
    {
      "commit": "f0c28f93dde6e80fd6d24bdec4d474a6c45a13cf",
      "tree": "0f89454128af6d6cde44479231c70696a6dea6e3",
      "parents": [
        "2f607e077a5c19c67bf7008c7e2b429386279290"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jun 10 13:51:21 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jun 10 15:10:57 2020 +0100"
      },
      "message": "Fix moves of any when value isInBuffer\n\nThis was copying the pointer to the other\u0027s value in other.buffer.\n"
    },
    {
      "commit": "2f607e077a5c19c67bf7008c7e2b429386279290",
      "tree": "b23b96d65f43adf134cdfec21acf74b23638b88c",
      "parents": [
        "9003ee55b9d406b995d4c12d3d2d76e94fd90411"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jun 10 09:57:30 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jun 10 10:28:39 2020 +0100"
      },
      "message": "Fix deadlock closing socket on another thread\n\nwhile another thread is stuck in read() or write().\n\nFixes: #37\n"
    },
    {
      "commit": "9003ee55b9d406b995d4c12d3d2d76e94fd90411",
      "tree": "096ec879589df7d073a6b523d2171fc82e54b42b",
      "parents": [
        "53a62fd794ff02ee7ae7232361412eb7bf4a97fe"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 08 18:31:21 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 08 21:32:05 2020 +0100"
      },
      "message": "Socket: Use the RWMutex to fix TSAN error\n\n... about `close()`ing the socket on one thread while in a blocking `recv()` or `send()` call on another thread.\n\nFixes #35\n"
    },
    {
      "commit": "53a62fd794ff02ee7ae7232361412eb7bf4a97fe",
      "tree": "5719b4cb82a3adda7d06a02a98b2203647f5b7cd",
      "parents": [
        "78dd3ab57aeff2e225bae8eefdf6745aecd0778f"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 08 18:28:21 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 08 21:32:05 2020 +0100"
      },
      "message": "Add dap::RWMutex. A read / write mutex.\n\nAlso known as a shared mutex.\n`std::shared_mutex` was introduced in C++17, but cppdap is C++11.\n\nTo be used to fix #35.\n"
    },
    {
      "commit": "78dd3ab57aeff2e225bae8eefdf6745aecd0778f",
      "tree": "8d6d2bf6925c0491e0f57c9fe22ac23b815148ca",
      "parents": [
        "13c9e7d4656f91ae1cb7a3798881dfd94bb2c790"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 08 18:25:29 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 08 21:32:05 2020 +0100"
      },
      "message": "CMake: Handle building fuzzer with sanitizers\n\nIf any of the `CPPDAP_?SAN` sanitizers are enabled, then the build would fail as the compile flags would collide with hard-coded use of address sanitizer for the fuzzer.\n\nDon\u0027t hard code address sanitizer for the fuzzer - just use the CMake flag options.\n"
    },
    {
      "commit": "13c9e7d4656f91ae1cb7a3798881dfd94bb2c790",
      "tree": "37ea2c929ec54514b1dee87919ea5390db5fb529",
      "parents": [
        "261d62d91ee6afe33e41bab40800c76be8a146fa"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jun 05 12:47:38 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jun 08 20:22:05 2020 +0100"
      },
      "message": "Implement timeouts for dap::Socket::connect\n\nFixes: #24\n"
    },
    {
      "commit": "261d62d91ee6afe33e41bab40800c76be8a146fa",
      "tree": "82a824a6041946743788064e4f1f864ee2828cd8",
      "parents": [
        "aeb66147da6a27d41790c938c38b040f71ee6d11"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jun 05 10:50:09 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jun 05 10:53:52 2020 +0100"
      },
      "message": "Remove unnecessary virtual inheritance\n\nLooks like a copypasta mistake\n"
    },
    {
      "commit": "aeb66147da6a27d41790c938c38b040f71ee6d11",
      "tree": "e2c2dcde70a609fb54bc7112a60ee41bb52aacdd",
      "parents": [
        "773f0dff684d094d28259612e2d7f089a2fec252"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue May 26 13:33:59 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jun 05 10:53:52 2020 +0100"
      },
      "message": "json_serializer: Disable exceptions\n\nDefine `JSON_NOEXCEPTION` to avoid raising exceptions.\nExceptions are usually disabled for Google projects (https://google.github.io/styleguide/cppguide.html#Exceptions).\n\nAlso pass `false` to the `allow_exceptions` parameter of `nlohmann::json::parse()`.\n\nIssue identified by @kuafuwang in #26.\n"
    },
    {
      "commit": "773f0dff684d094d28259612e2d7f089a2fec252",
      "tree": "da367957d659fe3fd1907e89f58601dc0fe5562e",
      "parents": [
        "cc93ba9747201007c8ff90e7d924152485462fbc"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue May 26 13:30:57 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jun 05 10:53:52 2020 +0100"
      },
      "message": "Add support for fuzzing cppdap\n\nAdd build rules, scripts, basic corpus, and dictionary.\nCurrently requires recent clang toolchain.\n"
    },
    {
      "commit": "cc93ba9747201007c8ff90e7d924152485462fbc",
      "tree": "fb9ca8df2724223dc99bcfa886d41e511ad15d25",
      "parents": [
        "c9187480d12ed094d4cea06e4da40b54ce2c8aaf"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Jun 02 16:40:44 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Jun 02 17:18:32 2020 +0100"
      },
      "message": "Add the ability to derive message types from one another.\n\n`DAP_IMPLEMENT_STRUCT_TYPEINFO_EXT` and `DAP_STRUCT_TYPEINFO_EXT` are two new flavors of `DAP_IMPLEMENT_STRUCT_TYPEINFO` and `DAP_STRUCT_TYPEINFO` that allow you to derive message types.\n\nThis involved a bit of reworking on the serializer interfaces.\n\nAdded test.\n\nIssue: #32\n"
    },
    {
      "commit": "c9187480d12ed094d4cea06e4da40b54ce2c8aaf",
      "tree": "b47411e38be6c44bb2b34b3a597c4fa6c94aeb14",
      "parents": [
        "ad9b4588f26d500b9fbdeaff3d66ec7dfd6d9c9d"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue May 26 10:17:17 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed May 27 18:40:48 2020 +0100"
      },
      "message": "Fix short reads in ContentReader::buffer()\n\nThe actual length of data read by `dap::Reader::read()` was not being correctly inspected.\n\nFixed, added test.\n\nBug identified by @kuafuwang.\n\nFixes #27\n"
    },
    {
      "commit": "ad9b4588f26d500b9fbdeaff3d66ec7dfd6d9c9d",
      "tree": "38221474f8b86efd410f8525bc26a47d71e2d2a7",
      "parents": [
        "9e313445bb75bae71b5d003f7264ee55ae296023"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue May 26 10:28:51 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed May 27 18:40:08 2020 +0100"
      },
      "message": "Fix `dap::Socket::read()` when `recv()` errors\n\nIdentified by @kuafuwang.\n\nFixes #29\n"
    },
    {
      "commit": "9e313445bb75bae71b5d003f7264ee55ae296023",
      "tree": "9837ddbd0cefffc1d0a9b1a8c01b0c0fe0ba3cde",
      "parents": [
        "4bc690cba87274d8218c26e32bcef5362d65dc35"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue May 05 17:54:47 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu May 07 13:55:54 2020 +0100"
      },
      "message": "Kokoro Ubuntu: Switch to docker image\n\npresubmit.sh now runs presubmit-docker.sh using the new radial\ndocker image which contains various toolchains.\n\nThe `/bin/using.sh` bash script exports the `using` bash function\nwhich can be called to configure toolchains at specific versions.\n"
    },
    {
      "commit": "4bc690cba87274d8218c26e32bcef5362d65dc35",
      "tree": "1806f8893efdc00733946bdaf85e4c8ce2b88b5c",
      "parents": [
        "4dcca5775616ada2796ff7f84c3a4843eee9b506"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Apr 27 14:15:01 2020 +0100"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue May 05 13:03:20 2020 +0100"
      },
      "message": "Update DAP protocol to Version 1.40\n\nUpdated with:\n `go run scripts/protocol_gen/protocol_gen.go`\n"
    },
    {
      "commit": "4dcca5775616ada2796ff7f84c3a4843eee9b506",
      "tree": "50e4eac880e58e30d153e5a02565d85279bcaa89",
      "parents": [
        "c4358807e2e61c6fbc34f17074b8e52223e156f9"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Mar 12 17:38:45 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Mar 13 07:01:42 2020 +0000"
      },
      "message": "Socket: Enable TCP_NODELAY\n\nDAP usually consists of small packet requests, with small packet responses. When there are many frequent, blocking requests made, Nagle\u0027s algorithm can dramatically limit the request-\u003eresponse rates.\n"
    },
    {
      "commit": "c4358807e2e61c6fbc34f17074b8e52223e156f9",
      "tree": "2e66baa6739e75696e5ccbe2a3abe08a353202e4",
      "parents": [
        "de7dffaf6635ffa3c78553bb6b9e11a50c9b86ad"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Feb 05 16:54:57 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Feb 06 13:37:41 2020 +0000"
      },
      "message": "Fix new gcc 9 \u0027deprecated-copy\u0027 warning.\n\nExample warning:\n\ncppdap/include/dap/future.h:172:14: error: implicitly-declared ‘dap::ResponseOrError\u003cdap::StackTraceResponse\u003e\u0026 dap::ResponseOrError\u003cdap::StackTraceResponse\u003e::operator\u003d(const dap::ResponseOrError\u003cdap::StackTraceResponse\u003e\u0026)’ is deprecated [-Werror\u003ddeprecated-copy]\n\nAdd missing constructors and assignment operators.\nThis probably adds more than is absolutely necessary, but there\u0027s no\nharm in being thorough.\n"
    },
    {
      "commit": "de7dffaf6635ffa3c78553bb6b9e11a50c9b86ad",
      "tree": "3740e61f7887ac69b0bfb8794c9cc8b1e0a47089",
      "parents": [
        "9a9d46f6b6a09607c00bef0f85d302f2f70759a4"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Jan 28 14:04:23 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Jan 28 14:44:35 2020 +0000"
      },
      "message": "Socket: Use SO_REUSEADDR, disable SO_LINGER\n\nUse these to avoid \"socket in use\" errors when restarting a DAP that uses the same port.\n"
    },
    {
      "commit": "9a9d46f6b6a09607c00bef0f85d302f2f70759a4",
      "tree": "7359cba22ca68fed944baa53d14f50cb4d6c1d87",
      "parents": [
        "3e6cfd6c2f174ac79835015d1e1fe35fc1c008b7"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "headlessclayton@gmail.com",
        "time": "Fri Jan 24 15:03:29 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jan 24 15:21:26 2020 +0000"
      },
      "message": "Fix bad usage of std::move\n\nIssue #16 describes the problem and solution perfectly.\n\nUpdated tests to cover this.\n\nFixes #16\n"
    },
    {
      "commit": "3e6cfd6c2f174ac79835015d1e1fe35fc1c008b7",
      "tree": "5a450a4a1890d3b700f4d8f9ee8efd68fa239661",
      "parents": [
        "4abe43c1310668dc8b9d51d8708907fcb3f00a4b"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jan 22 11:58:24 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jan 24 12:53:20 2020 +0000"
      },
      "message": "CMake: Make the cppdap target\u0027s include directory public\n\nAvoids having to pull this in as an explicit include directory for projects that depend on cppdap.\n"
    },
    {
      "commit": "4abe43c1310668dc8b9d51d8708907fcb3f00a4b",
      "tree": "114217700cb2b1c732235ae6b67a5ae0562cb44d",
      "parents": [
        "ced82a0501423bdce13210006bf39fe0263f0c24"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Jan 22 12:00:02 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jan 24 07:25:33 2020 +0000"
      },
      "message": "optional: Remove the value() method that returns non-const-ref.\n\nI\u0027m not convinced that `opt.value() \u003d foo` is a desirable pattern,\nand worse still it confuses some compilers about which overload to\nuse.\n\nJust remove it.\n"
    },
    {
      "commit": "ced82a0501423bdce13210006bf39fe0263f0c24",
      "tree": "7df854ca04d506ae3480c73d5170ce737ca906f8",
      "parents": [
        "96b25aafe04f06b0809770bd09bc5d5897707bad"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "headlessclayton@gmail.com",
        "time": "Fri Jan 17 19:01:13 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jan 17 20:07:55 2020 +0000"
      },
      "message": "examples: Change stdin and stdout to binary mode\n\nOn windows text mode for these plays with newline escape sequences, breaking the ContextStream encoding.\n\nFixes: #12\n"
    },
    {
      "commit": "96b25aafe04f06b0809770bd09bc5d5897707bad",
      "tree": "307c11351a65e857b747f83dc9db3dca46eeff89",
      "parents": [
        "93b861004e522581958a59afb9e8f623dac0ef9c"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "headlessclayton@gmail.com",
        "time": "Fri Jan 17 19:00:05 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jan 17 20:07:55 2020 +0000"
      },
      "message": "src/io.cpp: Fix uninitialized variable.\n\n`std::atomic\u003cbool\u003e` does not default initialize to `false`.\n\nBug: #12\n"
    },
    {
      "commit": "93b861004e522581958a59afb9e8f623dac0ef9c",
      "tree": "382861460b761d3c1cbadc4ab0ea819557d3d9e7",
      "parents": [
        "cdc19ac4d9d5d0d94794f3cd62419e15fa6180f7"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "headlessclayton@gmail.com",
        "time": "Fri Jan 17 18:59:05 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Jan 17 20:07:55 2020 +0000"
      },
      "message": "examples: Suffix package exe with .exe on Windows\n\nWithout this the vscode extension cannot find the example executable, and the example fails.\n\nAlso use $USERPROFILE instead of  $HOME for finding the `.vscode` user directory for installing the extension.\n\nBug: #12\n"
    },
    {
      "commit": "cdc19ac4d9d5d0d94794f3cd62419e15fa6180f7",
      "tree": "e37da1f669bc682d20c20ee372773aaf4aa6cba7",
      "parents": [
        "3a10d4cabd5508b8dd155a27302173af1b9775ea"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Sun Jan 05 09:25:43 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jan 06 15:00:24 2020 +0000"
      },
      "message": "Serialization: Correctly encode structs with no fields\n\nEmpty structs were being serialized as `null`, when they should have been serialized as `{}`.\n\nThis was due to the type inference on the serializer - where no calls to `field()` would result in the default `null` type.\n\nTo solve this, the `serialize(const void* object, const std::initializer_list\u003cField\u003e\u0026)` inline helper has been promoted to a virtual function (and renamed to `fields()`).\nThe JSON serializer implementation of this now first sets the object type to `object`, even if there are no fields to serialize.\n\nAdded test for this.\n\nFixes: #10\n"
    },
    {
      "commit": "3a10d4cabd5508b8dd155a27302173af1b9775ea",
      "tree": "17edbf7f2bf4dab3845f8000be923c21386939b3",
      "parents": [
        "8633abaf88162bf30768ca1a66541cf0ebbd37e7"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Sun Jan 05 08:37:44 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jan 06 15:00:24 2020 +0000"
      },
      "message": "Format all source files\n"
    },
    {
      "commit": "8633abaf88162bf30768ca1a66541cf0ebbd37e7",
      "tree": "7fa316676ed7eb548b231d622e25dcb08781ac70",
      "parents": [
        "1be9bb6712a04eac2ebc2997ccd786bcabf9c45e"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Sun Jan 05 08:37:05 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jan 06 15:00:24 2020 +0000"
      },
      "message": "Add clang-format-all.sh to format all project sources\n"
    },
    {
      "commit": "1be9bb6712a04eac2ebc2997ccd786bcabf9c45e",
      "tree": "5cb2de0c17d1d14ef5b6e2a9d88ec23e0edcc9b5",
      "parents": [
        "d19d8f83c96bd293fd4b0c3c52b10d4d058bb4e1"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Sun Jan 05 08:33:33 2020 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Jan 06 15:00:24 2020 +0000"
      },
      "message": "launch.json - fix name of unittests to launch\n"
    },
    {
      "commit": "d19d8f83c96bd293fd4b0c3c52b10d4d058bb4e1",
      "tree": "67755dad6402a5c9da318ab0e7e898564fd1cbe2",
      "parents": [
        "73d697eac43c1c4add3d7ffc103e59a00994dfe1"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Dec 31 21:04:57 2019 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 31 21:04:57 2019 +0000"
      },
      "message": "Address #7 nits and fix compiler warning (#9)\n\nCompiler warning was signed / unsigned compare."
    },
    {
      "commit": "73d697eac43c1c4add3d7ffc103e59a00994dfe1",
      "tree": "4d7cde26760e75c80e3f7c87e57ce92a4690998d",
      "parents": [
        "eab43f3518ab3dbf7f74573085918b139933464f"
      ],
      "author": {
        "name": "kuafuwang",
        "email": "731784510@qq.com",
        "time": "Wed Jan 01 04:58:33 2020 +0800"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Dec 31 20:58:33 2019 +0000"
      },
      "message": "Fix Response type info, make response \u0027body\u0027 field optional\n\nThe `body` field of the Response is optional. Do not error if it is missing.\r\n\r\nIf the typeinfo of the response. This was incorrectly using the Request type.\r\n\r\nAuthored by kuafuwang, squashed by ben-clayton."
    },
    {
      "commit": "eab43f3518ab3dbf7f74573085918b139933464f",
      "tree": "bcb2915dc49510bcdeafac420f5b1f75cf89a667",
      "parents": [
        "cc7b68a365fe8afae781937f781fe90d69f4ebdc"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Wed Dec 04 12:55:32 2019 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Dec 05 15:12:56 2019 +0000"
      },
      "message": "net::Server: Fix onError parameter default.\n\nThe onError parameter of Server::start was default initialized with\nOnError(), which is an \u0027invalid target\u0027, not a no-op implementation.\n\nReplace with a true no-op implementation.\n"
    },
    {
      "commit": "cc7b68a365fe8afae781937f781fe90d69f4ebdc",
      "tree": "bd85c23c1db35adbe7e3b52bdf6ee009e9947d36",
      "parents": [
        "dc3b3eaeb35520abaec1ee3a104253f91a14acde"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Dec 02 13:43:14 2019 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Dec 02 13:55:45 2019 +0000"
      },
      "message": "CMakeLists.txt: Make it easier to control options from dependee projects.\n"
    },
    {
      "commit": "dc3b3eaeb35520abaec1ee3a104253f91a14acde",
      "tree": "6d5f76d292a8baacf93f34e1f564866a57947bd4",
      "parents": [
        "010e3e3c862d15c91d30409a4139ee78b84a1e3b"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Nov 26 17:56:42 2019 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Tue Nov 26 17:59:58 2019 +0000"
      },
      "message": "CMakeLists.txt: Disable MSVC warning from third_party\n\n`nlohmann/json` raises a `size_t` to `int` MSVC warning that will fail the build if `CPPDAP_WARNINGS_AS_ERRORS` is enabled.\r\nGiven that this is not our code, the best we can do is to make an exception for this warning."
    },
    {
      "commit": "010e3e3c862d15c91d30409a4139ee78b84a1e3b",
      "tree": "b37d0c2765ac3af01f7e10d44d944f7b494d051b",
      "parents": [
        "44d158805cf0570211f26fa7af6e5a7a580a8ef8"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "headlessclayton@gmail.com",
        "time": "Mon Nov 18 12:22:21 2019 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Mon Nov 18 13:00:26 2019 +0000"
      },
      "message": "CMakeLists.txt: Make it easier to specify third_party vars.\n\nOnly set the third_party directory variables if they\u0027re not already set\n(by the dependee project).\n"
    },
    {
      "commit": "44d158805cf0570211f26fa7af6e5a7a580a8ef8",
      "tree": "006a34989b0fe695b4d6188fd050eba484e1563a",
      "parents": [
        "1f7f48904a2de56a081e88f520e24b6ec52eb497"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Nov 14 08:04:02 2019 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Nov 14 08:10:16 2019 +0000"
      },
      "message": "Reimplement std::future and std::promise to workaround TSAN false positives\n"
    },
    {
      "commit": "1f7f48904a2de56a081e88f520e24b6ec52eb497",
      "tree": "03dfcfabb2f822ac83cbf7162311a9c9795fe0cd",
      "parents": [
        "d13d4a4151f87e66de673870043ac3edd5ef0027"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Nov 14 00:37:38 2019 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Nov 14 00:37:38 2019 +0000"
      },
      "message": "Fix memory leak in src/socket.cpp\n"
    },
    {
      "commit": "d13d4a4151f87e66de673870043ac3edd5ef0027",
      "tree": "1ad3026b4346f30634e7f5dfafe0806b6a028f8f",
      "parents": [
        "a4b9640ffcf16b169f36cd3160be58d497d7100f"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Nov 14 00:12:19 2019 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Nov 14 00:29:38 2019 +0000"
      },
      "message": "GCC build fixes\n"
    },
    {
      "commit": "a4b9640ffcf16b169f36cd3160be58d497d7100f",
      "tree": "e803891d30122efacd5d4bf25769f2a9859e3743",
      "parents": [
        "2dfd15462fab2dbf047a3aea9115c78e54421f83"
      ],
      "author": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Nov 08 22:35:41 2019 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Thu Nov 14 00:09:46 2019 +0000"
      },
      "message": "Add Kokoro presubmit scripts\n"
    },
    {
      "commit": "2dfd15462fab2dbf047a3aea9115c78e54421f83",
      "tree": "cd8806be0f2b5311423a3ebb67d20844b4e72b81",
      "parents": [],
      "author": {
        "name": "Ben Clayton",
        "email": "headlessclayton@gmail.com",
        "time": "Thu Oct 31 17:06:38 2019 +0000"
      },
      "committer": {
        "name": "Ben Clayton",
        "email": "bclayton@google.com",
        "time": "Fri Nov 08 21:58:50 2019 +0000"
      },
      "message": "Initial drop of cppdap\n"
    }
  ]
}
