)]}'
{
  "log": [
    {
      "commit": "dae575452e8f93a3d53cdc6b5d6942161fbf2075",
      "tree": "04ebd38f069de4cb5a5fdb75d5225bd62606a9e7",
      "parents": [
        "a1415ca0597622f26286d303f3c821e6693c0d00",
        "6200bedc9b033cfb94a1ab6b05aeca3584bf7d49"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Jul 18 12:44:26 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 18 12:44:26 2022 +0000"
      },
      "message": "Merge \"Remove slab dependency\" into main"
    },
    {
      "commit": "a1415ca0597622f26286d303f3c821e6693c0d00",
      "tree": "6b5b01d5221aae45857cfbfa83d89f2e08b3e7a4",
      "parents": [
        "40aaab4fb6c242bd950886cd3f4ca21bf1f542b5",
        "bd508b4d82d939daa77b8982d4025e8255075be4"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Jul 18 12:44:21 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 18 12:44:21 2022 +0000"
      },
      "message": "Merge \"Sort sources\" into main"
    },
    {
      "commit": "6200bedc9b033cfb94a1ab6b05aeca3584bf7d49",
      "tree": "dd89fb6c40de35eedd9e32f47de919a1bcfcf160",
      "parents": [
        "bd508b4d82d939daa77b8982d4025e8255075be4"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Jul 18 07:53:32 2022 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Jul 18 07:53:32 2022 -0400"
      },
      "message": "Remove slab dependency\n\nThis is used in path.rs, which is dead code until\nhttps://github.com/cloudflare/quiche/commit/3e719a3 which is not yet\nincluded in any released version.\n\nChange-Id: Ic80420770f954ac17e760375481e63b2700c0275\n"
    },
    {
      "commit": "bd508b4d82d939daa77b8982d4025e8255075be4",
      "tree": "a7abb3f5c29dcb4bf12e442a9918ad71c7723540",
      "parents": [
        "d6f18a39fd57a49a2b29c12f98d59ac9e8dc67f2"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Jul 18 07:52:22 2022 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Mon Jul 18 07:52:22 2022 -0400"
      },
      "message": "Sort sources\n\nChange-Id: I0da15507ac92038e305399b8c9bfeca9355b42de\n"
    },
    {
      "commit": "40aaab4fb6c242bd950886cd3f4ca21bf1f542b5",
      "tree": "a8013c28dd3f26d78f09019514cc17fe38426a80",
      "parents": [
        "d6f18a39fd57a49a2b29c12f98d59ac9e8dc67f2"
      ],
      "author": {
        "name": "Steven Grady",
        "email": "slgrady@google.com",
        "time": "Fri Jul 08 23:43:28 2022 +0000"
      },
      "committer": {
        "name": "Steven Grady",
        "email": "slgrady@google.com",
        "time": "Fri Jul 08 23:43:28 2022 +0000"
      },
      "message": "[quiche] Fix deps/public_deps\n\nThe recent quiche upgrade refactored \"octets\" into a separate\ncrate, but it\u0027s not a public dependency.\n\nChange-Id: I97cc2660186e42ecc135f05ec2d8112d8c383223\n"
    },
    {
      "commit": "d6f18a39fd57a49a2b29c12f98d59ac9e8dc67f2",
      "tree": "bf042120d68776d7ee87403df719106f00c48396",
      "parents": [
        "bc0284381cb57031685e86396aa2be0118b092f2"
      ],
      "author": {
        "name": "Steven Grady",
        "email": "slgrady@google.com",
        "time": "Thu Jul 07 17:08:56 2022 +0000"
      },
      "committer": {
        "name": "Steven Grady",
        "email": "slgrady@google.com",
        "time": "Thu Jul 07 17:08:56 2022 +0000"
      },
      "message": "Switch to quiche 0.14.0\n\nNote, there are no longer local changes. Only OSRB prevents\nthis from going into rust_crates/vendor.\n\nChange-Id: I8a602d241cb322a71e43cf0e655a108ab5d09c9e\n"
    },
    {
      "commit": "bc0284381cb57031685e86396aa2be0118b092f2",
      "tree": "2aca6e5518d2146b982a2742bfc4a8e40300bf67",
      "parents": [
        "57ae3124e5d0ef9277f44fb11653508b7aac86eb",
        "4f5e2a4b483998e777aa1fb4850f52790ff80027"
      ],
      "author": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Fri May 06 21:33:38 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 06 21:33:38 2022 +0000"
      },
      "message": "Merge \"Merge tag \u00270.12.0\u0027 into new_main\" into main"
    },
    {
      "commit": "4f5e2a4b483998e777aa1fb4850f52790ff80027",
      "tree": "2aca6e5518d2146b982a2742bfc4a8e40300bf67",
      "parents": [
        "5aa7aa8e47160194dea5cbdedd5561cba5c808f4",
        "6437b3c2db0dd3c1d6c76cb71d784c874b185d01"
      ],
      "author": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Thu May 05 16:06:29 2022 -0700"
      },
      "committer": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Thu May 05 16:07:12 2022 -0700"
      },
      "message": "Merge tag \u00270.12.0\u0027 into new_main\n\nquiche 0.12.0\n\nChange-Id: Iee4f1ed7b4e6eca1d2714317e655957b19a1e27f\n"
    },
    {
      "commit": "57ae3124e5d0ef9277f44fb11653508b7aac86eb",
      "tree": "152a16fa0b20425d15e1a08d7d95a6d427a12468",
      "parents": [
        "5aa7aa8e47160194dea5cbdedd5561cba5c808f4",
        "00391739a9e8049e88123bbcec9cd248350836cd"
      ],
      "author": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Thu May 05 19:40:10 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 05 19:40:10 2022 +0000"
      },
      "message": "Merge \"[quiche] Copy keys to new upstream location\" into main"
    },
    {
      "commit": "00391739a9e8049e88123bbcec9cd248350836cd",
      "tree": "152a16fa0b20425d15e1a08d7d95a6d427a12468",
      "parents": [
        "de3143f3eac60eb5087d1d76ac84bdcb0d001253"
      ],
      "author": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Thu May 05 11:48:27 2022 -0700"
      },
      "committer": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Thu May 05 11:48:27 2022 -0700"
      },
      "message": "[quiche] Copy keys to new upstream location\n\nChange-Id: I2551df15add974cebbc08545c8ef1c2fb552f2a7\n"
    },
    {
      "commit": "6437b3c2db0dd3c1d6c76cb71d784c874b185d01",
      "tree": "50872dbfd1bbe8b3851b1b758f16e3f2b36bb362",
      "parents": [
        "e650e21c9c97d6391ebc79a35e4b9af3013d7167"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Feb 04 10:15:23 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Feb 04 10:15:23 2022 +0000"
      },
      "message": "0.12.0\n"
    },
    {
      "commit": "e650e21c9c97d6391ebc79a35e4b9af3013d7167",
      "tree": "8547a21aeaa2629cf98bc87a191414cef777417f",
      "parents": [
        "88955b9366698b3a69b75380f081e1124d913a58"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Wed Feb 02 10:04:56 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Feb 04 09:41:28 2022 +0000"
      },
      "message": "ignore *.(s)qlog files\n"
    },
    {
      "commit": "88955b9366698b3a69b75380f081e1124d913a58",
      "tree": "faee840180f555fc94712ee58f3e7c9edb19fae3",
      "parents": [
        "cba02ef1e4792f7d33d7b9575f3287d5712b6a7a"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "1229714+junhochoi@users.noreply.github.com",
        "time": "Fri Feb 04 01:41:01 2022 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 04 09:41:01 2022 +0000"
      },
      "message": "crypto: check payload size before decryption\n\nIn `packet::decrypt_pkt()`, when `payload` is too small and\r\nno space in `ciphertext`, it may cause overflow in\r\n`max_out_len` in `crypto::open_with_u64_counter()`, and lead\r\nto a crash.\r\n\r\nThis can happen when the received packet payload is corrupted.\r\nTo fix it, an overflow check for `max_out_len` is added."
    },
    {
      "commit": "cba02ef1e4792f7d33d7b9575f3287d5712b6a7a",
      "tree": "94b7f3ae4b1ad419cca128a3a6fd2dbc344bbd9b",
      "parents": [
        "70442de283a6436dcdecea337475f3e29f91b857"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Tue Feb 01 18:23:46 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Feb 03 13:51:18 2022 +0000"
      },
      "message": "h3: switch to simple stream ID hasher\n"
    },
    {
      "commit": "70442de283a6436dcdecea337475f3e29f91b857",
      "tree": "f04e8e0186d035c9b9ac7b77700d97f61a4d2b31",
      "parents": [
        "9ccaef53dd5eb9485cb44914f2aaba26fb0b3e89"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Tue Feb 01 18:21:02 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Feb 03 13:51:18 2022 +0000"
      },
      "message": "stream: switch to simple stream ID hasher\n"
    },
    {
      "commit": "9ccaef53dd5eb9485cb44914f2aaba26fb0b3e89",
      "tree": "8a58b059c671cdebfa0a5f20658132076949c9d4",
      "parents": [
        "0bdb180adbd6c3ab1c4a0855d5d7a0efce394df0"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Tue Feb 01 17:45:44 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Feb 03 13:51:18 2022 +0000"
      },
      "message": "stream: add a simple hasher for stream collections\n\nquiche uses several different collections to store stream state. To date\nmany of these use std::collections{HashMap, HashSet} and we\u0027ve relied on\nthe default hashing algorithm. However, QUIC stream IDs are a 64-bit\nnumber space that have some protocol-specific behaviors and checks. We\nfeatures and properties that many hashing algorithms provide are not so\nuseful for QUIC stream IDs.\n\nThis commit introduces a simple no-op hasher for collections that store\nQUIC stream IDs. It just uses the u64 stream identifier directly.\nMigrating collections to use the hasher is left to other commits.\n"
    },
    {
      "commit": "0bdb180adbd6c3ab1c4a0855d5d7a0efce394df0",
      "tree": "524bdd07bb6ef9b19509679c8c8be909805c4fd4",
      "parents": [
        "88c14484728ede47c0b6bbe7915e6725d502c0d3"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Feb 01 11:36:54 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Feb 01 14:17:35 2022 +0000"
      },
      "message": "build: fix pkg-config output path\n\nWhen building the tarball from crates.io rather than from the git\nrepository, the target directory for the pkg-config file doesn\u0027t exist.\n\nNote that when explicitly passing the --target option to cargo, this\nchanges the output directory from \"target/\u003cprofile\u003e/quiche.pc\" (e.g.\n\"target/debug/quiche.pc\") to \"target/\u003ctarget\u003e/\u003cprofile\u003e/quiche.pc\" (e.g.\n\"target/x86_64-unknown-linux-gnu/debug).\n\nFixes #1142.\n"
    },
    {
      "commit": "88c14484728ede47c0b6bbe7915e6725d502c0d3",
      "tree": "f4ebd98361d7ea2bb72466e89f3b398d7be63c04",
      "parents": [
        "0295e3d02ffcf1e4fe93b30a479ca8e49a5189ca"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Mon Jan 31 17:53:15 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Feb 01 09:21:51 2022 +0000"
      },
      "message": "h3: exit stream state transition earlier on error\n\nWhen quiche processes HTTP/3 streams, in a particular state we reject\nnon-DATA frames that are larger than an internal limit and return an\nerror.\n\nThis change moves the limit check earlier, in order to avoid stream\ninformation getting updated with inaccurate information being stored\nwithin the library.\n"
    },
    {
      "commit": "0295e3d02ffcf1e4fe93b30a479ca8e49a5189ca",
      "tree": "bc79025145ac304d1f86a9973a22afe090178999",
      "parents": [
        "113d249315304587879e040cfec5eeb92578a6aa"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Jan 31 15:42:58 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Feb 01 09:21:36 2022 +0000"
      },
      "message": "Revert \"ffi: remove quiche_conn_session() and quiche_conn_peer_cert() for now\"\n\nThis reverts commit ebbf54251c71628327dae12b4a12087e6c3df497.\n"
    },
    {
      "commit": "113d249315304587879e040cfec5eeb92578a6aa",
      "tree": "3a40b26463add874fc0ed3ccf76b8b3b4ed46481",
      "parents": [
        "5b3ab16751e8e0e51d364a49601a0040abbe1b4d"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Jan 31 15:46:07 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Feb 01 09:21:36 2022 +0000"
      },
      "message": "don\u0027t duplicate memory when returning TLS session and peer certificate\n\nInstead of duplicating the memory, return a byte slice instead so then\nthe application can decide if it wants to copy or not.\n"
    },
    {
      "commit": "5b3ab16751e8e0e51d364a49601a0040abbe1b4d",
      "tree": "a2ef43061958aef18294e2837a32d716f4ea4bbd",
      "parents": [
        "779d0901e79a8d40635c2bd400cd98ac50850b5f"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "junho.choi@gmail.com",
        "time": "Fri Jan 28 01:28:48 2022 -0800"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Sun Jan 30 20:32:04 2022 +0000"
      },
      "message": "build: remove cdylib from iOS build\n\nBuilding iOS doesn\u0027t support cdylib so it always gets a warning\n`dropping unsupported crate type `cdylib` for target ...`.\nCurrently crate-type is not overridable per target, so doing\na little trick for CI.\n"
    },
    {
      "commit": "779d0901e79a8d40635c2bd400cd98ac50850b5f",
      "tree": "6f1818e6204809525bd3d918bb8e7a55a8e0e9cf",
      "parents": [
        "091988c9f2b0c66d31658a4d4cb7617a1e8f45ce"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "junho.choi@gmail.com",
        "time": "Fri Jan 28 01:27:34 2022 -0800"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Sun Jan 30 20:32:04 2022 +0000"
      },
      "message": "build: target_os is host os for build script\n\nSince build script is compiled as a executable, its target_os is\na host, not a target. Need to use CARGO_CFG_TARGET_OS to get the\nactual target os to build.\n"
    },
    {
      "commit": "091988c9f2b0c66d31658a4d4cb7617a1e8f45ce",
      "tree": "dc8e4158e44bd90f229326abf9951ae000b71876",
      "parents": [
        "ca458339c5e5f92013ea494af87c1974dc1435a5"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "junho.choi@gmail.com",
        "time": "Thu Jan 27 13:43:39 2022 -0800"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Jan 28 10:49:03 2022 +0000"
      },
      "message": "ci: reduce CI warning on quiche_multiarch\n\nSince multi-arch build are done in `cross` docker container,\nno need to install rust.\n\nIt will reduce `tool rustfmt is already installed...` warning and\nsave a little build time.\n"
    },
    {
      "commit": "ca458339c5e5f92013ea494af87c1974dc1435a5",
      "tree": "c40b5a9674687be711021d4feeb3554195d2ffc2",
      "parents": [
        "81f8cb8ed73db9b191ca01d885419cb0e52cff7b"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Jan 27 16:55:46 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Jan 27 16:55:46 2022 +0000"
      },
      "message": "0.11.0\n"
    },
    {
      "commit": "81f8cb8ed73db9b191ca01d885419cb0e52cff7b",
      "tree": "9cb7aa52f027db5819c0c7b83872729e28be8de6",
      "parents": [
        "02f6bdadd5550b1bab4e8aba0828006e1be66b6e"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Jan 27 10:51:23 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Jan 27 15:55:16 2022 +0000"
      },
      "message": "release.sh: update to workspace layout\n"
    },
    {
      "commit": "02f6bdadd5550b1bab4e8aba0828006e1be66b6e",
      "tree": "da9e18b43b2b1deb5a4d43343b8db1d21a4cac3e",
      "parents": [
        "d074914afeb45f8176347272b91e9e47b44e8a2e"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Mon Jan 24 20:06:18 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Jan 25 14:55:04 2022 +0000"
      },
      "message": "qlog: bump to 0.6.0\n"
    },
    {
      "commit": "d074914afeb45f8176347272b91e9e47b44e8a2e",
      "tree": "a395563c210ff8b278f5704e574cf6fc61a686a0",
      "parents": [
        "02588d0df1ebb4ce8c275c56a16037f1446ca376"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Mon Jan 24 19:51:29 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Jan 25 14:55:04 2022 +0000"
      },
      "message": "qlog: update documents\n"
    },
    {
      "commit": "02588d0df1ebb4ce8c275c56a16037f1446ca376",
      "tree": "a5278222f850a587d7eb5c8b4a19490ff12638b0",
      "parents": [
        "87fc17f792196ef9ff2b70e7b0a8cf2ac9f9aa5e"
      ],
      "author": {
        "name": "市川恭佑 (ebi)",
        "email": "44393661+ebi-yade@users.noreply.github.com",
        "time": "Mon Jan 24 17:33:41 2022 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 24 08:33:41 2022 +0000"
      },
      "message": "README: update the certificate path in the example commands\n\n"
    },
    {
      "commit": "87fc17f792196ef9ff2b70e7b0a8cf2ac9f9aa5e",
      "tree": "95252b5106ea45b65315b882f5bd2e4cd7df6bc2",
      "parents": [
        "f5299024eee5e5ede61d2693c2a63e0fbad9cd9b"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Wed Dec 08 16:59:12 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Jan 21 17:59:43 2022 +0000"
      },
      "message": "qlog: minimise temporary allocations\n"
    },
    {
      "commit": "f5299024eee5e5ede61d2693c2a63e0fbad9cd9b",
      "tree": "92a966cc759a56ed055f56850f6815c1deeb855c",
      "parents": [
        "4e922713a4c8da53e92057bd98fb598eaf89bbaa"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Sat Nov 06 13:15:51 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Jan 21 17:59:43 2022 +0000"
      },
      "message": "qlog: support for JSON-SEQ serialization format\n\nTo date, the qlog crate has support only the JSON serialization format.\nIn simple terms, that means a Trace object that contains an array of\nEvents. To avoid buffering, the qlog crate provides a streaming\nserializer component for the non-streaming JSON format. Events are\nappended to the end of a single line, written to a Writer. When\ncomplete, the Trace object is finalized.\n\ndraft-ietf-quic-qlog-main-schema-01 added support for the JSON-SEQ\nformat, which is a true streaming format. Traces and Events are rendered\nas individual records each prefixed by an ASCII Record Separator (\u003cRS\u003e,\n0x1E), and each ending with an ASCII Line Feed character (\\n, 0x0A).\n\nThis change adds support for JSON-SEQ to the core data model. The\nstreaming serializer has been updated to use the JSON-SEQ format.\n"
    },
    {
      "commit": "4e922713a4c8da53e92057bd98fb598eaf89bbaa",
      "tree": "638ef56067141e49ef622b48c83d9b4cfc793c19",
      "parents": [
        "ebbf54251c71628327dae12b4a12087e6c3df497"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Fri Jan 21 04:38:20 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Jan 21 15:33:26 2022 +0000"
      },
      "message": "spell check\n"
    },
    {
      "commit": "ebbf54251c71628327dae12b4a12087e6c3df497",
      "tree": "d6dbd6e218053d6a719b739afa146f6ef249489f",
      "parents": [
        "4728b85502ba9e895ecf3193b6866caf1b74ff59"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Jan 21 12:41:36 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Jan 21 15:33:08 2022 +0000"
      },
      "message": "ffi: remove quiche_conn_session() and quiche_conn_peer_cert() for now\n\nWhile we figure out a better way to implement these, we should remove\nthem so people don\u0027t accidentally use them. See  issue #1127 for more\ndetails.\n\nFixes #1127.\n"
    },
    {
      "commit": "4728b85502ba9e895ecf3193b6866caf1b74ff59",
      "tree": "32e3b3bc821acfb01dc9e25fb3cc2e057d9c8a3c",
      "parents": [
        "74a3b0473f8cd3eecfc1f6060c09711f67f07a6c"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Jan 13 14:02:26 2022 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Jan 21 15:32:49 2022 +0000"
      },
      "message": "ffi: add missing quiche_config_load_verify_locations_from_directory wrapper\n"
    },
    {
      "commit": "74a3b0473f8cd3eecfc1f6060c09711f67f07a6c",
      "tree": "cacdcd7014a1e973b7cd53e241b9076cfe80210d",
      "parents": [
        "12a0feb465f71686b99b6099e8946cc289c57113"
      ],
      "author": {
        "name": "Quentin De Coninck",
        "email": "quentin_d@apple.com",
        "time": "Tue Jan 18 11:06:06 2022 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Jan 21 12:46:08 2022 +0000"
      },
      "message": "stream: fix reception of data overlapping several chunks\n\nA sender might sometimes redimension its STREAM frames, making the\nreceiver get some out-of-order small chunks of data. At some point,\na sender might send a larger chunk overlapping several already\nreceived one. In that case, the condition covering the case the new\nbuffer\u0027s end overlaps existing buffer can be entered several times\nin the for loop. However, the `tmp_buf` variable might not be\n`None` at assignment time, causing data loss.\n\nInstead of relying on a one-slot `Option\u003cRangeBuf\u003e`, rely on a\nsmall-sized `VecDeque\u003cRangeBuf\u003e`.\n\nFixes #1130.\n"
    },
    {
      "commit": "12a0feb465f71686b99b6099e8946cc289c57113",
      "tree": "997083d5460aa618488c685289396e353c13ac5e",
      "parents": [
        "a9ee599a7bf9f4365d4368c1b0d8e7b92bf2424f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Dec 17 13:12:44 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Jan 18 15:31:02 2022 +0000"
      },
      "message": "build(deps): update boring-sys requirement from 1.0.2 to 2.0.0\n\nUpdates the requirements on [boring-sys](https://github.com/cloudflare/boring) to permit the latest version.\n- [Release notes](https://github.com/cloudflare/boring/releases)\n- [Changelog](https://github.com/cloudflare/boring/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/cloudflare/boring/commits)\n\n---\nupdated-dependencies:\n- dependency-name: boring-sys\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "a9ee599a7bf9f4365d4368c1b0d8e7b92bf2424f",
      "tree": "c6b9da3fd8761af4af72cad198a5a090c2f72394",
      "parents": [
        "0157f19b9bdd34514a21fc20154422f753a76e10"
      ],
      "author": {
        "name": "Lucas Pardue",
        "email": "lucas@cloudflare.com",
        "time": "Mon Jan 10 15:16:17 2022 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 10 15:16:17 2022 +0000"
      },
      "message": "ffi: expose peer certificate to C API\n\nFixes #1120﻿."
    },
    {
      "commit": "0157f19b9bdd34514a21fc20154422f753a76e10",
      "tree": "5297f64f603eec55a247df80e08c548b1e80a2b6",
      "parents": [
        "311ff01858d8ee2580c24bce9a710bc737b1abf4"
      ],
      "author": {
        "name": "Eric Rosenberg",
        "email": "eric_rosenberg@apple.com",
        "time": "Wed Jan 05 12:03:24 2022 -0800"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Jan 10 14:37:11 2022 +0000"
      },
      "message": "update recommendation for when to call send()\n"
    },
    {
      "commit": "311ff01858d8ee2580c24bce9a710bc737b1abf4",
      "tree": "6ef4ce25b2f293bb23bad00c3c09a00e255709e6",
      "parents": [
        "af678919d35d7ea4068b4af5156128d6c88fed68"
      ],
      "author": {
        "name": "Christopher Davenport",
        "email": "chris@christopherdavenport.tech",
        "time": "Mon Jan 10 05:16:02 2022 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 10 13:16:02 2022 +0000"
      },
      "message": "README: fix thin C API link\n\n"
    },
    {
      "commit": "5aa7aa8e47160194dea5cbdedd5561cba5c808f4",
      "tree": "445da1ab1e4128ae6455c4912845850cc8189691",
      "parents": [
        "52cbfd7f629358f7bb37a880dbbcc5d7c453ea3c",
        "47a71226c2e99da2ae03d6baf0a22b69859ae572"
      ],
      "author": {
        "name": "Nathan Mulcahey",
        "email": "nmulcahey@google.com",
        "time": "Fri Dec 10 19:50:09 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 10 19:50:09 2021 +0000"
      },
      "message": "Merge \"Revert \"[tsan] Suppress TSan\"\" into main"
    },
    {
      "commit": "47a71226c2e99da2ae03d6baf0a22b69859ae572",
      "tree": "b0dca335809de04e0d420a613f1dce4924ebd6f7",
      "parents": [
        "8ccc527fe563ae77e5c7d80b4a4b2c1c132dc9cb"
      ],
      "author": {
        "name": "Nathan Mulcahey",
        "email": "nmulcahey@google.com",
        "time": "Fri Dec 10 19:49:39 2021 +0000"
      },
      "committer": {
        "name": "Nathan Mulcahey",
        "email": "nmulcahey@google.com",
        "time": "Fri Dec 10 19:49:39 2021 +0000"
      },
      "message": "Revert \"[tsan] Suppress TSan\"\n\nThis reverts commit 8ccc527fe563ae77e5c7d80b4a4b2c1c132dc9cb.\n\nReason for revert: Not liking how this repo is doing things, backing out so I can start over.\n\nOriginal change\u0027s description:\n\u003e [tsan] Suppress TSan\n\u003e\n\u003e Quiche is resulting in a large number of data races within BoringSSL,\n\u003e this is all unique to Quiche so dep out of the variant toolchain when we\n\u003e are building with TSan instead of suppressing TSan for all users of\n\u003e BoringSSL.\n\u003e\n\u003e Bug: 90208\n\u003e Change-Id: If4054e15394184e174b26f079b1c94e885640851\n\nBug: 90208\nChange-Id: Ia17a3b014cec46666bd0e7ec220417ea9b6bf567\nNo-Presubmit: true\nNo-Tree-Checks: true\nNo-Try: true\n"
    },
    {
      "commit": "52cbfd7f629358f7bb37a880dbbcc5d7c453ea3c",
      "tree": "3f3584c5a939ce1837712f305fee97a70f391793",
      "parents": [
        "de3143f3eac60eb5087d1d76ac84bdcb0d001253",
        "8ccc527fe563ae77e5c7d80b4a4b2c1c132dc9cb"
      ],
      "author": {
        "name": "Nathan Mulcahey",
        "email": "nmulcahey@google.com",
        "time": "Fri Dec 10 19:37:09 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 10 19:37:09 2021 +0000"
      },
      "message": "Merge \"[tsan] Suppress TSan\" into main"
    },
    {
      "commit": "8ccc527fe563ae77e5c7d80b4a4b2c1c132dc9cb",
      "tree": "24f050e2c60a936ef56013d824dce7da2e6b90e5",
      "parents": [
        "259e6a03755690199620b63eba868a3eb4de50d4"
      ],
      "author": {
        "name": "Nathan Mulcahey",
        "email": "nmulcahey@google.com",
        "time": "Fri Dec 10 10:20:29 2021 -0800"
      },
      "committer": {
        "name": "Nathan Mulcahey",
        "email": "nmulcahey@google.com",
        "time": "Fri Dec 10 10:20:29 2021 -0800"
      },
      "message": "[tsan] Suppress TSan\n\nQuiche is resulting in a large number of data races within BoringSSL,\nthis is all unique to Quiche so dep out of the variant toolchain when we\nare building with TSan instead of suppressing TSan for all users of\nBoringSSL.\n\nBug: 90208\nChange-Id: If4054e15394184e174b26f079b1c94e885640851\n"
    },
    {
      "commit": "af678919d35d7ea4068b4af5156128d6c88fed68",
      "tree": "7c2171f050974dacd0d706b3deea16191521f6d1",
      "parents": [
        "ba87786836ab4ecfadf9f80a95e3da34ef0e1886"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Dec 10 10:11:36 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Dec 10 17:54:14 2021 +0000"
      },
      "message": "Revert \"cubic: limit cwnd growth based on max bytes-in-flight\"\n\nThe original change seems to be causing some connection timeouts. Don\u0027t\nhave time to debug it right now, so just revert for now.\n\nThis reverts commit f6b3d0f55967300845b7bcfcdd150743aed3f7fb.\n"
    },
    {
      "commit": "ba87786836ab4ecfadf9f80a95e3da34ef0e1886",
      "tree": "646d4bcb9edcba6658cdc1605a75c2f029f80c0c",
      "parents": [
        "ec5cd6558d03a59f03c2e4a312736265bd14d2df"
      ],
      "author": {
        "name": "François Michel",
        "email": "francois.michel@uclouvain.be",
        "time": "Thu Nov 25 13:41:46 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Dec 06 17:26:32 2021 +0000"
      },
      "message": "ensure stream_send returns Ok(0) only when an empty buffer was submitted\n"
    },
    {
      "commit": "ec5cd6558d03a59f03c2e4a312736265bd14d2df",
      "tree": "c15808301f3a70d180e9cf4315023de2dc8a56e9",
      "parents": [
        "8676eb2e1d8769bb0cedcbd6d88b678337e14759"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Mon Dec 06 13:28:11 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Dec 06 14:14:42 2021 +0000"
      },
      "message": "h3: fix headers_blocked_on_conn() test\n\nThis test didn\u0027t function as fully intended. With this change we ensure\nthe connection-level flow control gets filled before the request\nattempt. Then ensure it is adequately increased by the server draining\nsome data out of the connection and emitting back MAX_DATA.\n"
    },
    {
      "commit": "8676eb2e1d8769bb0cedcbd6d88b678337e14759",
      "tree": "3ff8b743994d354c39de5b75dab3164a4f0a1c7c",
      "parents": [
        "52dded96700eb3bc29126e88dbe45c18cda4d46b"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Sun Dec 05 11:46:49 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Dec 06 10:11:14 2021 +0000"
      },
      "message": "use Duration::ZERO constant\n\nWe already use Duration::MAX in some places, so this doesn\u0027t add any new\nrequirements.\n"
    },
    {
      "commit": "52dded96700eb3bc29126e88dbe45c18cda4d46b",
      "tree": "ab0ab111482cb759465cc7f2f426d9107c3fcbe5",
      "parents": [
        "232807cf011af409ea9bfbe6081afa12868acef5"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Sun Dec 05 11:50:30 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Dec 06 10:11:14 2021 +0000"
      },
      "message": "qlog: fmt\n"
    },
    {
      "commit": "232807cf011af409ea9bfbe6081afa12868acef5",
      "tree": "128f49bd8d575378454238013e9a396bce24f6b7",
      "parents": [
        "6eb052eb536e3cb71360b4b78a1fff7b42794b1d"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 23:37:35 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Wed Dec 01 10:33:04 2021 +0000"
      },
      "message": "link files from parent crate so they are included in package\n\nThere doesn\u0027t seem to be a nicer way to include files in the package\nfrom the parent workspace, so just add symlinks.\n\nAlso remove outdated entries.\n"
    },
    {
      "commit": "de3143f3eac60eb5087d1d76ac84bdcb0d001253",
      "tree": "445da1ab1e4128ae6455c4912845850cc8189691",
      "parents": [
        "30ebdbce05a7fb3c9b108cdcf0f596550da87499"
      ],
      "author": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Tue Nov 30 10:46:05 2021 -0800"
      },
      "committer": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Tue Nov 30 16:31:29 2021 -0800"
      },
      "message": "[quiche] Update signature of InvalidStreamState\n\nChange-Id: I3fa4f59674c8f33fbf736408751645c5c41aee04\n"
    },
    {
      "commit": "30ebdbce05a7fb3c9b108cdcf0f596550da87499",
      "tree": "224fffe79c12766dd579f5e363c6bcaa5cb62871",
      "parents": [
        "8233e6ca9536790a9c07931872997b5e316e91c4"
      ],
      "author": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Tue Nov 30 10:44:58 2021 -0800"
      },
      "committer": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Tue Nov 30 16:31:29 2021 -0800"
      },
      "message": "[quiche] Update BUILD file\n\nChange-Id: I5667e936090ef2a53c8f36007c7a34574b0fe717\n"
    },
    {
      "commit": "8233e6ca9536790a9c07931872997b5e316e91c4",
      "tree": "1dfe0771bcab51dec0ab619bb129d916d55447ab",
      "parents": [
        "03e14475d1e093a4f17c3fb4b947879d06b30492",
        "92dcc500462ac22bb72e822d3f4e99039d29acfd"
      ],
      "author": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Tue Nov 30 16:30:30 2021 -0800"
      },
      "committer": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Tue Nov 30 16:31:10 2021 -0800"
      },
      "message": "Merge 0.10.0\n\nChange-Id: I87e824531d265f15bd671254d22c929b0d48c106\n"
    },
    {
      "commit": "03e14475d1e093a4f17c3fb4b947879d06b30492",
      "tree": "b0dca335809de04e0d420a613f1dce4924ebd6f7",
      "parents": [
        "101dbc7cace94fde9091f694243f09e4db0578cd"
      ],
      "author": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Tue Nov 30 23:49:09 2021 +0000"
      },
      "committer": {
        "name": "Casey Dahlin",
        "email": "sadmac@google.com",
        "time": "Tue Nov 30 23:49:09 2021 +0000"
      },
      "message": "Revert \"Merge remote-tracking branch \u0027github/master\u0027 into roll\"\n\nThis reverts commit 101dbc7cace94fde9091f694243f09e4db0578cd.\n\nReason for revert: Need 0.10 not master\n\nOriginal change\u0027s description:\n\u003e Merge remote-tracking branch \u0027github/master\u0027 into roll\n\u003e\n\u003e * github/master: (295 commits)\n\u003e   README: update link to examples dir\n\u003e   build: fix pkg-config target dir\n\u003e   quiche.h: include missing sys/time.h header\n\u003e   quiche.h: resolve undefined struct errors on Windows\n\u003e   clean-up clippy warnings\n\u003e   convert repo to cargo workspace\n\u003e   quiche.h: remove stray 3-slash comment lines\n\u003e   h3: ensure StreamBlocked if send_request() blocked\n\u003e   frame: prefer arrays for small fixed-size fields\n\u003e   fix typo *unidirectional\n\u003e   cc: add debug_fmt() hook\n\u003e   examples: fix MacOS X C examples and add to CI\n\u003e   cc: add on_init() hook\n\u003e   qlog: ensure LossTimerEventType is cased properly\n\u003e   qlog: protocol_type is an array of values\n\u003e   qlog: AckedRanges can be a single or double range\n\u003e   qlog: add time_format to CommonFields\n\u003e   qlog: stream fin is optional, only record if true\n\u003e   qlog: KeyUpdated new field is optional\n\u003e   qlog: fix invalid auto snake case of KeyType\n\u003e   ...\n\u003e\n\u003e Change-Id: Ic2cb38ce5f9cda8e4a836f74b45a1d17116f87d7\n\nChange-Id: I2ee4ce2ca6066be1f361dfbbbcd89dd8651a7337\nNo-Presubmit: true\nNo-Tree-Checks: true\nNo-Try: true\n"
    },
    {
      "commit": "101dbc7cace94fde9091f694243f09e4db0578cd",
      "tree": "517bc98845f2e3e92e82488ba15d7b4b79a5388d",
      "parents": [
        "259e6a03755690199620b63eba868a3eb4de50d4",
        "6eb052eb536e3cb71360b4b78a1fff7b42794b1d"
      ],
      "author": {
        "name": "James Tucker",
        "email": "raggi@google.com",
        "time": "Tue Nov 30 15:35:15 2021 -0800"
      },
      "committer": {
        "name": "James Tucker",
        "email": "raggi@google.com",
        "time": "Tue Nov 30 15:35:15 2021 -0800"
      },
      "message": "Merge remote-tracking branch \u0027github/master\u0027 into roll\n\n* github/master: (295 commits)\n  README: update link to examples dir\n  build: fix pkg-config target dir\n  quiche.h: include missing sys/time.h header\n  quiche.h: resolve undefined struct errors on Windows\n  clean-up clippy warnings\n  convert repo to cargo workspace\n  quiche.h: remove stray 3-slash comment lines\n  h3: ensure StreamBlocked if send_request() blocked\n  frame: prefer arrays for small fixed-size fields\n  fix typo *unidirectional\n  cc: add debug_fmt() hook\n  examples: fix MacOS X C examples and add to CI\n  cc: add on_init() hook\n  qlog: ensure LossTimerEventType is cased properly\n  qlog: protocol_type is an array of values\n  qlog: AckedRanges can be a single or double range\n  qlog: add time_format to CommonFields\n  qlog: stream fin is optional, only record if true\n  qlog: KeyUpdated new field is optional\n  qlog: fix invalid auto snake case of KeyType\n  ...\n\nChange-Id: Ic2cb38ce5f9cda8e4a836f74b45a1d17116f87d7\n"
    },
    {
      "commit": "6eb052eb536e3cb71360b4b78a1fff7b42794b1d",
      "tree": "fc6fdef3732f87a0bb97b285088f9ef70f72073e",
      "parents": [
        "6204539c016ca7c5bfbf910dabedc09e5013ddec"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 13:44:39 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 15:14:13 2021 +0000"
      },
      "message": "README: update link to examples dir\n"
    },
    {
      "commit": "6204539c016ca7c5bfbf910dabedc09e5013ddec",
      "tree": "2205514d897b8e38cf1471f87d4de4a512b5dd2a",
      "parents": [
        "3ab88cad6e67bb08307d02e19adb01f54e9dd334"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 13:28:31 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 14:54:53 2021 +0000"
      },
      "message": "build: fix pkg-config target dir\n\nFollow-up to bbe6e2ab, which changed the target dir.\n"
    },
    {
      "commit": "3ab88cad6e67bb08307d02e19adb01f54e9dd334",
      "tree": "7cb42e5423c2330165be7f60496e0456d6631198",
      "parents": [
        "88a9d3e41898a990ee6275c910129daaf958a9e7"
      ],
      "author": {
        "name": "Norman Maurer",
        "email": "norman_maurer@apple.com",
        "time": "Fri Nov 05 09:25:19 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 13:14:28 2021 +0000"
      },
      "message": "quiche.h: include missing sys/time.h header\n\nMotivation:\n\nAs the quiche_recv_info and quiche_send_info structs use timespec we need to also include the time header.\n\nModifications:\n\nInclude the missing header\n\nResult:\n\nquiche.h can be used on windows / linux / macOS without the need of the user to include the time header\n"
    },
    {
      "commit": "88a9d3e41898a990ee6275c910129daaf958a9e7",
      "tree": "70fa1ab4ff860a683b30e73016d95d2bb7c5419e",
      "parents": [
        "c4412b8431da2b78a475b62bbf176c6913c24980"
      ],
      "author": {
        "name": "leo",
        "email": "leo@krashanoff.com",
        "time": "Sun Nov 14 19:37:46 2021 -0800"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 13:11:31 2021 +0000"
      },
      "message": "quiche.h: resolve undefined struct errors on Windows\n\n* Includes ws2tcpip.h to provide socklen_t on Windows machines.\n* Includes time.h to provide timespec struct on Windows machines.\n"
    },
    {
      "commit": "c4412b8431da2b78a475b62bbf176c6913c24980",
      "tree": "20f974312f0c83581cc08684b5d8a43963dd4eed",
      "parents": [
        "bbe6e2ab22126773bb63e4605ac4c8e7594f002a"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 12:00:29 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 12:46:10 2021 +0000"
      },
      "message": "clean-up clippy warnings\n\nMany of the warnings that we explicitly allow have been disabled by\ndefault. In addition, we weren\u0027t running clippy with the \"ffi\" and\n\"qlog\" features enabled.\n"
    },
    {
      "commit": "bbe6e2ab22126773bb63e4605ac4c8e7594f002a",
      "tree": "a959dc49d414472913dbe24a83cb7760e9a8e446",
      "parents": [
        "2649457a566e320bbb4edc74d5a26fd8f6a22547"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Nov 29 15:33:27 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Tue Nov 30 11:37:01 2021 +0000"
      },
      "message": "convert repo to cargo workspace\n\nThis should make it easier to add new crates to the repo (e.g. no need\nto add CI jobs for each one), and just generally makes more sense than\nstuffing everything that is not quiche itself under tools/.\n\nPretty much all the changes are related to build scripts and related\nthings. All the actual code is just moved around.\n"
    },
    {
      "commit": "2649457a566e320bbb4edc74d5a26fd8f6a22547",
      "tree": "5adc559fbb0b927f4f2a7bbac547606814ddd45c",
      "parents": [
        "aee19ab9abaaab2811a4f4c258b291bee1c0b636"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Wed Nov 24 21:42:46 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Nov 25 16:25:18 2021 +0000"
      },
      "message": "quiche.h: remove stray 3-slash comment lines\n"
    },
    {
      "commit": "aee19ab9abaaab2811a4f4c258b291bee1c0b636",
      "tree": "63b4b50745644e460156233eb79f4abe77a403e3",
      "parents": [
        "39d2e5fd98d4c13f0406caf7e68891ff18e605d5"
      ],
      "author": {
        "name": "Lucas Pardue",
        "email": "lucas@cloudflare.com",
        "time": "Wed Nov 24 11:29:07 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 24 11:29:07 2021 +0000"
      },
      "message": "h3: ensure StreamBlocked if send_request() blocked\n\nPreviously, if the connection-level flow control was 0 when we attempted\r\nto create a new request stream via send_request() we would return the\r\nresult of stream_send() directly. This would cause an Error::Done to\r\nbe returned, which is not documented in the API.\r\n\r\nRather than have two different error types for a similar class of error,\r\nwith this change we ensure that Error::StreamBlocked is returned\r\nconsistently.\r\n\r\nFixes #1082."
    },
    {
      "commit": "39d2e5fd98d4c13f0406caf7e68891ff18e605d5",
      "tree": "63d9e573504a4bb816c76db91c37c1ac8f5732d7",
      "parents": [
        "0bf4adf5cf2b4887e3df69f456b6e0220ac6ed19"
      ],
      "author": {
        "name": "Eric Rosenberg",
        "email": "ehaydenr@users.noreply.github.com",
        "time": "Wed Nov 24 06:23:32 2021 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 24 11:23:32 2021 +0000"
      },
      "message": "frame: prefer arrays for small fixed-size fields\n\n"
    },
    {
      "commit": "0bf4adf5cf2b4887e3df69f456b6e0220ac6ed19",
      "tree": "2f9ad991e86a14ed9d408c39ac81fa297751d052",
      "parents": [
        "26fcf79713f4b2de86f8219a3ce83f679768e53d"
      ],
      "author": {
        "name": "市川恭佑 (ebi)",
        "email": "44393661+ebi-yade@users.noreply.github.com",
        "time": "Wed Nov 17 01:49:20 2021 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 16 16:49:20 2021 +0000"
      },
      "message": "fix typo *unidirectional\n\n"
    },
    {
      "commit": "26fcf79713f4b2de86f8219a3ce83f679768e53d",
      "tree": "ca94fa33ba31ebc09684961aafc2983729acf83c",
      "parents": [
        "f007df110616cd5788e825feaae11bde06ce5d80"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "1229714+junhochoi@users.noreply.github.com",
        "time": "Tue Nov 16 00:49:03 2021 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 15 15:49:03 2021 +0000"
      },
      "message": "cc: add debug_fmt() hook\n\nFor congestion control specific debug log, add debug_fmt()\r\nhook to the congestion control operations which can be used similar to\r\nwrite!()."
    },
    {
      "commit": "f007df110616cd5788e825feaae11bde06ce5d80",
      "tree": "efa3ccfa04c0e363ae61e0b3756eb37d6f8f3f36",
      "parents": [
        "a00f4e99796f4868d32ae92dd58e7005c44ce868"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "junho.choi@gmail.com",
        "time": "Sat Nov 13 02:24:21 2021 +0900"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 18:26:25 2021 +0000"
      },
      "message": "examples: fix MacOS X C examples and add to CI\n\nFix a build error (not caught in linux) and add C example build\nto macOS X CI.\n"
    },
    {
      "commit": "a00f4e99796f4868d32ae92dd58e7005c44ce868",
      "tree": "1eaa2ffe89696096862af2c88c09dc19d8d39165",
      "parents": [
        "1eb596f99b501be457e97fcef6a5caa2d381b199"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "junho@cloudflare.com",
        "time": "Mon May 17 17:37:52 2021 -0700"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 13:43:59 2021 +0000"
      },
      "message": "cc: add on_init() hook\n\non_init() congestion control hook can be used for a custom\ninitialization of the congestion control states.\n"
    },
    {
      "commit": "1eb596f99b501be457e97fcef6a5caa2d381b199",
      "tree": "cea6d07cec5aed9b039b441bd5bd732901f14f3e",
      "parents": [
        "c45c58dadda0b45f5df9e208b13563fdebfb35dd"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Sat Nov 06 12:43:11 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 13:36:30 2021 +0000"
      },
      "message": "qlog: ensure LossTimerEventType is cased properly\n"
    },
    {
      "commit": "c45c58dadda0b45f5df9e208b13563fdebfb35dd",
      "tree": "ed34196bb79533f0b78354003587f859f8170c15",
      "parents": [
        "b84e9ebf4c46b4bbb1e3cb60f35dc69e52afbb1a"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Sat Nov 06 12:11:07 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 13:36:30 2021 +0000"
      },
      "message": "qlog: protocol_type is an array of values\n"
    },
    {
      "commit": "b84e9ebf4c46b4bbb1e3cb60f35dc69e52afbb1a",
      "tree": "3d932f6291cabbcb6096ce3a6521af7c01df3428",
      "parents": [
        "51d2c2155ef76ce91bf9216d78c33951eb8dd5b7"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Fri Nov 05 07:21:19 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 13:36:30 2021 +0000"
      },
      "message": "qlog: AckedRanges can be a single or double range\n"
    },
    {
      "commit": "51d2c2155ef76ce91bf9216d78c33951eb8dd5b7",
      "tree": "eff4a796138e529b14356339184bd243cb99cf5d",
      "parents": [
        "a529d22363e946417381da46f6464de840b4e1c7"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Fri Nov 05 07:10:12 2021 +0000"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 13:36:30 2021 +0000"
      },
      "message": "qlog: add time_format to CommonFields\n"
    },
    {
      "commit": "a529d22363e946417381da46f6464de840b4e1c7",
      "tree": "53bc36bd8c828b43a06ffaf4efaa22fc2a233ef5",
      "parents": [
        "69135e29987803bbe4089c0be18030f30c7f89e3"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Wed Oct 27 21:12:02 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 13:36:30 2021 +0000"
      },
      "message": "qlog: stream fin is optional, only record if true\n"
    },
    {
      "commit": "69135e29987803bbe4089c0be18030f30c7f89e3",
      "tree": "93f81bdfcd19cf46ce637d6c0910bf37f2574bad",
      "parents": [
        "5c5b96c8d7211d21729a241f5f1cdd7bdfb79f2a"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Wed Oct 27 09:46:10 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 13:36:30 2021 +0000"
      },
      "message": "qlog: KeyUpdated new field is optional\n"
    },
    {
      "commit": "5c5b96c8d7211d21729a241f5f1cdd7bdfb79f2a",
      "tree": "176a2dd0a4c3bccd77f2cbb90563d7716120c6a3",
      "parents": [
        "9b4ad6483d19e6e64dc2caa5363f171ffef32ca3"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Wed Oct 27 09:43:49 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 13:36:30 2021 +0000"
      },
      "message": "qlog: fix invalid auto snake case of KeyType\n"
    },
    {
      "commit": "9b4ad6483d19e6e64dc2caa5363f171ffef32ca3",
      "tree": "e775075de62410b1ee0b36e2ae8ab3281e69b662",
      "parents": [
        "3ea9bf4f9ae9bea61213f26a0f46d837ac95b207"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Wed Oct 27 09:41:21 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Nov 12 13:36:30 2021 +0000"
      },
      "message": "qlog: fix KeyUpdated / KeyRetired serde name\n"
    },
    {
      "commit": "3ea9bf4f9ae9bea61213f26a0f46d837ac95b207",
      "tree": "62112f62e93a2ab08de5fc568a171cd504eb4838",
      "parents": [
        "11949763d268d6688f02f2bdf4b41a78ed7f5d6f"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Sun Oct 10 04:43:33 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Nov 04 14:55:33 2021 +0000"
      },
      "message": "qlog: refactor events to events module\n\nAs part of qlog adoption into the QUIC WG, it was restructured into 3 documents:\n\n* a generic base schema for logs, trace, and events\n* a QUIC schema for transport and recovery events\n* an HTTP/3 and QPACK schema for application protocol events\n\nPrior to this change, the document was a bit more monolithic and had a supporting\ntypescript schema that was also monolithic.\n\nThe early qlog crate code use the TypeScript schema as a template for structuring\nthe code, resulting in one single hard-to-manage file. It is anticipated that\nthe WG will change the qlog schema format from TypeScript to something else\n(CDDL?) in the near future. So there is not much benefit sticking to that\ntemplate.\n\nThe recent changes to support qlog 02 in this crate have given us a lot more\nflexibility to refactor the code. This change continues the flexibility theme,\nbreaking apart the code monolith in order to support future changes to the spec\nand any additional qlog extensions that may get defined for other protocols\n(such as HTTP/2).\n"
    },
    {
      "commit": "11949763d268d6688f02f2bdf4b41a78ed7f5d6f",
      "tree": "f127b59d43501c8c6cb7ab65a72cffab1a09ed2b",
      "parents": [
        "fe56de9c7a1117621ea01edc165bc5635f37fe27"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Sun Oct 10 04:06:32 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Nov 04 14:55:33 2021 +0000"
      },
      "message": "qlog: move streaming code to streamer module\n"
    },
    {
      "commit": "fe56de9c7a1117621ea01edc165bc5635f37fe27",
      "tree": "df6d38b7e0c739c6a64fe3a662bd0f50e34934ad",
      "parents": [
        "4f8fa2ede28041e43d3e3ca2510e75590216de1f"
      ],
      "author": {
        "name": "Norman Maurer",
        "email": "norman_maurer@apple.com",
        "time": "Tue Oct 26 15:50:50 2021 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 26 14:50:50 2021 +0100"
      },
      "message": "quiche.h: include correct header on Windows\n\nMotivation:\r\n\r\nhttps://github.com/cloudflare/quiche/commit/93c1970b2b1d2c4b0f684210bc7253befec72091 added the sys/socket.h header to quiche.h which does break things on windows.\r\n\r\nModifications:\r\n\r\nOnly use sys/socket.h if not build on windows, if on windows include winsock2.h\r\n\r\nResult:\r\n\r\nquiche.h can be used on windows again as well"
    },
    {
      "commit": "4f8fa2ede28041e43d3e3ca2510e75590216de1f",
      "tree": "a90cde2c46503ceaa4312dae8161df78a0eaa617",
      "parents": [
        "f6b3d0f55967300845b7bcfcdd150743aed3f7fb"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "1229714+junhochoi@users.noreply.github.com",
        "time": "Tue Oct 26 06:49:25 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 26 14:49:25 2021 +0100"
      },
      "message": "fix Rust 1.56/nightly clippy warnings\n\n"
    },
    {
      "commit": "f6b3d0f55967300845b7bcfcdd150743aed3f7fb",
      "tree": "e6ed634cf25c441d344c7f415eb626f12388be0e",
      "parents": [
        "c885a71fd58c0c610e9e209f210b1951db81d6c5"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "junho.choi@gmail.com",
        "time": "Tue Oct 05 13:58:24 2021 -0700"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Oct 18 13:45:15 2021 +0100"
      },
      "message": "cubic: limit cwnd growth based on max bytes-in-flight\n\nWhen cwnd is updated in processing acks, limit its high\nbound to 2 x max_bytes_in_flight. max_bytes_in_flight is\nmax value of bytes_in_flight during the connection lifetime.\n\nThis makes cwnd not to exceed too much, roughly bounded\nby the receiver\u0027s flow control window.\n"
    },
    {
      "commit": "c885a71fd58c0c610e9e209f210b1951db81d6c5",
      "tree": "8a7e7ebd910144cbd3a6057dfc4fb9c83a8ca9c6",
      "parents": [
        "e79ea93bfd32a6fb4eb1cb55bbe28c55aa39eded"
      ],
      "author": {
        "name": "Lucas Pardue",
        "email": "lucas@cloudflare.com",
        "time": "Fri Oct 01 16:17:09 2021 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 01 16:17:09 2021 +0100"
      },
      "message": "h3: store all received SETTINGS parameters and expose them\n\nSETTINGS frames can contain parameters with unknown or reserved identifiers.\r\nquiche has no direct usage for these parameters and previously discarded them.\r\nWith this change we store all received parameters in the order that they were\r\nsent, and add a new `peer_settings_raw()` to access them,\r\n\r\nCo-authored-by: Babak AminAzad \u003cbabak@cloudflare.com\u003e"
    },
    {
      "commit": "e79ea93bfd32a6fb4eb1cb55bbe28c55aa39eded",
      "tree": "45f667bd89b818db5f453b46ebd32230ef5aeb71",
      "parents": [
        "93c1970b2b1d2c4b0f684210bc7253befec72091"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "1229714+junhochoi@users.noreply.github.com",
        "time": "Fri Oct 01 03:37:51 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 01 11:37:51 2021 +0100"
      },
      "message": "window-based flow control\n\nThis PR reimplments #529 which tried to implement a QUIC flow\r\ncontrol specified in https://docs.google.com/document/d/1F2YfdDXKpy20WVKJueEf4abn_LVZHhMUMS5gX6Pgjl4/edit?usp\u003dsharing\r\n\r\nIt\u0027s basically window-based approach where window size is determined\r\nby current receiving speed.\r\n\r\nSince lot of things changed from #529, I tried to minimize the\r\nchanges in the existing code. Most of the logic is in src/flowcontrol.rs\r\nand it will replace max_data and max_data_next logic.\r\n\r\nTo set up maximum window size, config.set_max_connection_window() and\r\nconfig.set_max_stream_window() API is added."
    },
    {
      "commit": "93c1970b2b1d2c4b0f684210bc7253befec72091",
      "tree": "e643f800d245eb018d02fc6c0fa7d29412c5ab80",
      "parents": [
        "d89515b1c4534bdffa5db851c25dc66f3e41b82e"
      ],
      "author": {
        "name": "Cory Benfield",
        "email": "lukasa@apple.com",
        "time": "Fri Oct 01 11:36:47 2021 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 01 11:36:47 2021 +0100"
      },
      "message": "quiche.h: include sys/socket.h as well\n\nThe quiche.h header file uses struct sockaddr extensively, meaning that\r\nit relies on having sys/socket.h types defined. This include is missing\r\nin the quiche.h header file, sadly.\r\n\r\nThis patch adds that include, so that the quiche.h header file stands\r\nalone."
    },
    {
      "commit": "d89515b1c4534bdffa5db851c25dc66f3e41b82e",
      "tree": "08871c279cbb84d83462ffaabeb9eb3261ea5665",
      "parents": [
        "24b24b74984c324c3205792c4843a8e4485f245c"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Mon Sep 06 11:34:23 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Oct 01 11:33:04 2021 +0100"
      },
      "message": "h3: when frames are too large, generate H3_EXCESSIVE_LOAD\n\nquiche applies a limit to the size of some HTTP/3 frames. Previously, if the\nlimit was exceeded we emitted a CONNECTION_CLOSE with H3_INTERNAL_ERROR code.\nInstead use H3_EXCESSIVE_LOAD code.\n"
    },
    {
      "commit": "24b24b74984c324c3205792c4843a8e4485f245c",
      "tree": "219621de19ff9468bf1c83b7276fd57564204a97",
      "parents": [
        "683797ac309c3989426747f364ada62f04e01dad"
      ],
      "author": {
        "name": "Lucas Pardue",
        "email": "lucas@cloudflare.com",
        "time": "Fri Oct 01 11:31:53 2021 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 01 11:31:53 2021 +0100"
      },
      "message": "qlog: count tag length in QUIC packet length\n\n"
    },
    {
      "commit": "683797ac309c3989426747f364ada62f04e01dad",
      "tree": "c0edcd1cc45eabcc783f53c6b354d2d837916c0d",
      "parents": [
        "9cd7b1de7cb6cc2c131e8cd053eb248e0e6553c8"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "junho.choi@gmail.com",
        "time": "Sun Sep 26 14:04:51 2021 -0700"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Wed Sep 29 17:22:55 2021 +0100"
      },
      "message": "cubic: proportional rollback threshold\n\nCurrently a fixed 10 packets threshold is used for detecting a small\nloss. When cwnd is very high (more than 1000 packets, for example),\nthis makes the detection less sensitive. New approach is to make a\nrollback threshold relative to cwnd (currently 20%) to make it work\nwith various size of cwnd in real time. Minimum threshold is 2.\n"
    },
    {
      "commit": "9cd7b1de7cb6cc2c131e8cd053eb248e0e6553c8",
      "tree": "6076df938ea2715e3766f89441cb18394c116fee",
      "parents": [
        "92dcc500462ac22bb72e822d3f4e99039d29acfd"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "junho.choi@gmail.com",
        "time": "Sun Sep 26 14:05:49 2021 -0700"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Wed Sep 29 16:54:26 2021 +0100"
      },
      "message": "cubic: no rollback to slow start\n\nWhile the stored cwnd/ssthresh is in slow start state, don\u0027t try\nrollback. This is not to delay to exit slow start when there is a loss.\n"
    },
    {
      "commit": "92dcc500462ac22bb72e822d3f4e99039d29acfd",
      "tree": "8bf7aaf2db8b568f72c326f81a927fc90bc2772f",
      "parents": [
        "a96c98113303c07f00471844d529d7ae1c34eba8"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 23 15:38:30 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 23 15:38:30 2021 +0100"
      },
      "message": "0.10.0\n"
    },
    {
      "commit": "a96c98113303c07f00471844d529d7ae1c34eba8",
      "tree": "4af309d2942e409fc17028f6aa819388332428c6",
      "parents": [
        "b63c3e5b382ff2e6507a01e099c4d9bbd947a33d"
      ],
      "author": {
        "name": "lucas",
        "email": "lucas@cloudflare.com",
        "time": "Thu Sep 23 15:04:03 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 23 15:35:32 2021 +0100"
      },
      "message": "qlog: update docs and bump to 0.5.0\n"
    },
    {
      "commit": "b63c3e5b382ff2e6507a01e099c4d9bbd947a33d",
      "tree": "2c062ec1475ba3a22f8971a26912be1508f6defc",
      "parents": [
        "cc1f8a28929679b2aae0d2b8e8cfe672849bfcf5"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 23 10:39:03 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 23 14:38:18 2021 +0100"
      },
      "message": "recovery: introduce pacing rate multiplier\n\nFrom RFC9002, section 7.7:\n\n    Using a value for N that is small, but at least 1 (for example,\n    1.25) ensures that variations in RTT do not result in\n    underutilization of the congestion window.\n"
    },
    {
      "commit": "cc1f8a28929679b2aae0d2b8e8cfe672849bfcf5",
      "tree": "84835d109b588e28468a67853ff93ee1392fc301",
      "parents": [
        "4091d3c33a2202a10dbcf00598a8092e3b13d6b9"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 23 10:29:57 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 23 14:38:18 2021 +0100"
      },
      "message": "recovery: name time conversion constant\n\nJust for clarity.\n"
    },
    {
      "commit": "4091d3c33a2202a10dbcf00598a8092e3b13d6b9",
      "tree": "78c7835078b47bc0e0a2623be9f8736e8c2f9b18",
      "parents": [
        "af1bbc03e9992bae516d0b692a481de64bd4e8d9"
      ],
      "author": {
        "name": "Lucas Pardue",
        "email": "lucas@cloudflare.com",
        "time": "Thu Sep 23 14:15:56 2021 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 23 14:15:56 2021 +0100"
      },
      "message": "frame: parse ACKs with ECN counts\n\nThis change adds support for parsing received ACK frames of type 0x03 that\r\ninclude ECN Counts. These are not used by quiche for anything, so are effectively\r\ndiscarded. No support for sending ECN Counts is added to quiche with this commit.\r\n\r\nFixes #1051."
    },
    {
      "commit": "af1bbc03e9992bae516d0b692a481de64bd4e8d9",
      "tree": "b0ed715940069877d0470502408835e13558dada",
      "parents": [
        "0e9501fecd285e2600c2d654fa96d94180a509ff"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Wed Sep 22 10:16:29 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Wed Sep 22 11:18:19 2021 +0100"
      },
      "message": "Revert \"zero-copy emit scatter API\"\n\nLet\u0027s just revert for now, we\u0027ll figure it out later (also see\nhttps://github.com/cloudflare/quiche/pull/1049).\n\nThis reverts commit 6ee77a1f690f2a58d3c6a1c6e6b1e9aa09ac0790.\n"
    },
    {
      "commit": "0e9501fecd285e2600c2d654fa96d94180a509ff",
      "tree": "3a382f128659a6d82ccfc35ea316a0ed4c30e5bd",
      "parents": [
        "35ec1454a4b691b4cc92934e65f5d6802de75566"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 16 10:44:44 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 16 12:32:45 2021 +0100"
      },
      "message": "avoid counting reset streams\u0027 unsent data towards flow control limit\n\nCurrently the send-side flow control allowance is enforced and reduced\nwhenever stream data is buffered in the corresponding stream\u0027s send\nbuffer (i.e. when the application calls `stream_send()`). This is to\nlimit the amount of buffered data to what the connection can actually\ntake and avoid over-buffering.\n\nHowever whenever a stream is reset (e.g. `STOP_SENDING` is received, or\n`stream_shutdown()` is called), the stream\u0027s final size will include all\ndata that was previously buffered, even if not all of it was actually\nsent on the wire yet.\n\nTo aovid that, we can make the final size be the offset of the first\nunsent byte, and then \"claw back\" the remaining data from the flow\ncontrol allowance when a stream is reset.\n"
    },
    {
      "commit": "35ec1454a4b691b4cc92934e65f5d6802de75566",
      "tree": "7ec0b59e51bc0189fadf283e6774cc4b13986f57",
      "parents": [
        "1297a0dcc85e95e1055cd6ff4d8b30de070f07bc"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Wed Sep 15 09:01:23 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 16 11:08:24 2021 +0100"
      },
      "message": "add method to check if stream can hold more data\n"
    },
    {
      "commit": "1297a0dcc85e95e1055cd6ff4d8b30de070f07bc",
      "tree": "f1d11ac1918029c97d362400d1fa17fe3af43314",
      "parents": [
        "e05719a36bdc63c2618a582a55856e6ce0452cc1"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Sep 13 14:24:39 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Sep 13 14:34:37 2021 +0100"
      },
      "message": "http3_test: silence unused field warnings\n\nThey make builds with latest Rust nightly sad.\n"
    },
    {
      "commit": "e05719a36bdc63c2618a582a55856e6ce0452cc1",
      "tree": "c065da4e141fbc66435edf32297a0655ffe04dc4",
      "parents": [
        "1c881359a1106c52827f7acbba1eb33b773a6aac"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "1229714+junhochoi@users.noreply.github.com",
        "time": "Mon Sep 13 04:59:58 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 13 12:59:58 2021 +0100"
      },
      "message": "nginx: link to libm to fix build failure\n\nTo fix the following nginx build error:\r\n```\r\n/usr/bin/ld: ../target/debug/libquiche.a(std-008055cc7d873802.std.cf1c8f7e-cgu.0.rcgu.o): in function `std::f32::\u003cimpl f32\u003e::lerp\u0027:\r\n/rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b//library/std/src/f32.rs:914: undefined reference to `fmaf\u0027\r\n/usr/bin/ld: ../target/debug/libquiche.a(std-008055cc7d873802.std.cf1c8f7e-cgu.0.rcgu.o): in function `std::f64::\u003cimpl f64\u003e::lerp\u0027:\r\n/rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b//library/std/src/f64.rs:916: undefined reference to `fma\u0027\r\ncollect2: error: ld returned 1 exit status\r\n```\r\n\r\nIt seems like related with recent rust (1.55) release."
    },
    {
      "commit": "1c881359a1106c52827f7acbba1eb33b773a6aac",
      "tree": "5dbfe6f971e021f78210747f0e6566b8d8e90dd3",
      "parents": [
        "40ab29f10c5ca8607246b1298495ec3d932e30f4"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Aug 26 12:01:48 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Sep 03 17:07:49 2021 +0100"
      },
      "message": "deps: bump BoringSSL submodule\n\nJust to get fixes for CVE-2021-3712.\n"
    },
    {
      "commit": "40ab29f10c5ca8607246b1298495ec3d932e30f4",
      "tree": "d1f0c18baa09448372b8c0af216aa441d6f79afa",
      "parents": [
        "bb2453f4490e296cbcb05902bf50a82fc8667e54"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Sep 03 16:40:58 2021 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 03 16:40:58 2021 +0100"
      },
      "message": "build: drop support for building with Android NDK \u003c 19\n\nIt looks like newer versions of BoringSSL need a more recent version of\r\nthe toolchain (https://github.com/cloudflare/quiche/pull/1028), and\r\nbeing able to update BoringSSL is more important than supporting ancient\r\nAndroid versions."
    },
    {
      "commit": "bb2453f4490e296cbcb05902bf50a82fc8667e54",
      "tree": "206779350c8a6a0018981305d55b130242c384da",
      "parents": [
        "6ee77a1f690f2a58d3c6a1c6e6b1e9aa09ac0790"
      ],
      "author": {
        "name": "Junho Choi",
        "email": "junho.choi@gmail.com",
        "time": "Wed Sep 01 18:46:21 2021 -0700"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Fri Sep 03 10:08:00 2021 +0100"
      },
      "message": "recovery: hystart++ draft 03\n\n- Implement hystart++ draft 03 for cubic and reno\n- A new mode Conservative Slow Start (CSS) introduced instead of\n  Limited Slow Start (LSS). The difference is CSS is still under\n  slow start (cwnd \u003c ssthresh)\n- Add hystart.reset() hook to be called in collapse_cwnd() CC\n  hook to start in a clean state.\n- Update hystart test in cubic and test 2 mode transitions:\n  SS -\u003e CSS -\u003e SS and SS -\u003e CSS -\u003e CA.\n- For various rtt, simply use Duration.\n- Bump minimum rust version to 1.53 due to the use of Duration::MAX.\n"
    },
    {
      "commit": "6ee77a1f690f2a58d3c6a1c6e6b1e9aa09ac0790",
      "tree": "17e43f20052d88fd928b8e9c006670e733832409",
      "parents": [
        "6ce93fd51a533015da666dedbc090770fed96ddb"
      ],
      "author": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Mon Jul 05 18:24:24 2021 +0100"
      },
      "committer": {
        "name": "Alessandro Ghedini",
        "email": "alessandro@ghedini.me",
        "time": "Thu Sep 02 12:07:20 2021 +0100"
      },
      "message": "zero-copy emit scatter API\n\nInstead of copying application data (stream / DATAGRAM) into the output\npacket buffer, and then encrypting that in-place, we can use the seal\nscatter API exposed by BoringCrypto to avoid the additional data copy,\nby passing the data buffer directly to the crypto API.\n\nThe limitation is that the \"scattered\" payload buffer must be at the end\nof the packet, so no additional frames can be queued after that. In the\nSTREAM case this is not a problem as only a single STREAM frame is\nqueued anyway, but in the DATAGRAM case we need to avoid pushing more\nthan one. In addition, PADDING frames can\u0027t be added either.\n"
    }
  ],
  "next": "6ce93fd51a533015da666dedbc090770fed96ddb"
}
