{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":12277452,"defaultBranch":"master","name":"cowlib","ownerLogin":"ninenines","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2013-08-21T18:02:24.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1166740?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1720097989.0","currentOid":""},"activityList":{"items":[{"before":"b64eb1f41fe7ff263489054e99bc6b594e63ac49","after":null,"ref":"refs/heads/optimise-urldecode","pushedAt":"2024-07-04T12:59:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"}},{"before":"941d408ea40022da3148b5b96483d5e8f95caaa4","after":"1c3d5defba28e92a88ce45c440d57e178ab1c514","ref":"refs/heads/master","pushedAt":"2024-07-04T12:59:26.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Optimise all cow_qs functions\n\nSee the previous commit [1] for details on the\noptimisations involved. The optimisation provides\nthe same type of performance gains for encoding,\ndecoding, building and parsing query strings.\n\n[1] cdaac4c907dbee90a91ad123b18dc6919a3835f6","shortMessageHtmlLink":"Optimise all cow_qs functions"}},{"before":"cdaac4c907dbee90a91ad123b18dc6919a3835f6","after":"b64eb1f41fe7ff263489054e99bc6b594e63ac49","ref":"refs/heads/optimise-urldecode","pushedAt":"2024-07-03T16:27:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Optimise cow_uri:urlencode\n\nSee the previous commit [1] for details on the\noptimisations involved. The optimisation provides\nthe same type of performance gains for encoding\nand decoding.\n\n[1] cdaac4c907dbee90a91ad123b18dc6919a3835f6","shortMessageHtmlLink":"Optimise cow_uri:urlencode"}},{"before":"f315f3215930d881c35d3240d116c2f404177771","after":"cdaac4c907dbee90a91ad123b18dc6919a3835f6","ref":"refs/heads/optimise-urldecode","pushedAt":"2024-07-02T15:32:04.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Optimise cow_uri:urldecode\n\nThe recently added `json` module in OTP demonstrated\nnew, better ways of optimising binary string manipulations.\nSome of which likely make better use of recent compiler\nor VM improvements.\n\nThe main improvement is returning as fast as possible\nwhen there's nothing to decode:\n\n cow_uri:urldecode in 0.053833s\n cow_uri:urldecode in 0.005991s\n\nWhen there's a little to decode, the performance is\nnicely improved, although not as much:\n\n cow_uri:urldecode_hex in 0.061018s\n cow_uri:urldecode_hex in 0.040028s\n\nWhen the input if fully/mostly encoded JP text, the\ndifference is remarkable:\n\n cow_uri:urldecode_jp_hex in 0.099333s\n cow_uri:urldecode_jp_hex in 0.039391s\n\n cow_uri:urldecode_jp_mixed_hex in 0.097653s\n cow_uri:urldecode_jp_mixed_hex in 0.046385s\n\nThe worst case scenario unfortunately is slower than\nbefore, but nothing too bad. The worst case is when\nthe input is a sequence of 3 encoded characters\nfollowed by 3 non-encoded characters:\n\n cow_uri:urldecode_worst_case_hex in 0.050017s\n cow_uri:urldecode_worst_case_hex in 0.061515s","shortMessageHtmlLink":"Optimise cow_uri:urldecode"}},{"before":"525f3abdb2b7f90666f71fc0fc2da32bb186f01d","after":"f315f3215930d881c35d3240d116c2f404177771","ref":"refs/heads/optimise-urldecode","pushedAt":"2024-07-02T14:37:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"More WIP","shortMessageHtmlLink":"More WIP"}},{"before":null,"after":"525f3abdb2b7f90666f71fc0fc2da32bb186f01d","ref":"refs/heads/optimise-urldecode","pushedAt":"2024-07-02T10:08:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"WIP, inspired by the json module optimisations","shortMessageHtmlLink":"WIP, inspired by the json module optimisations"}},{"before":"1eb7f4293a652adcfe43b1835d22c58d8def839f","after":"941d408ea40022da3148b5b96483d5e8f95caaa4","ref":"refs/heads/master","pushedAt":"2024-03-26T10:45:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Initial HTTP/3 and QPACK implementation\n\nCowlib now uses GitHub Actions for CI. As a result\nof this change, Cowlib is tested against OTP-24+.\n\nThis commit adds initial implementations of\ncow_http3, cow_http3_machine and cow_qpack.\n\nBecause QPACK is similar to HPACK, some encoding and\ndecoding functions were moved to a common include file,\nparticularly the huffman functions.\n\nThe cow_http module now contains the types and functions\ncommon to all or most versions of HTTP. The types and\nfunctions specific to HTTP/1 were moved to the new\ncow_http1 module.\n\nBecause HTTP/3 is similar to HTTP/2, part of the code\nprocessing headers is common and can be found in\ncow_http. Other functions common to both versions\nwere moved out of cow_http2_machine.\n\nThis commit updates comments indicating that the HTTP/2\nPRIORITY mechanism will no longer be implemented.","shortMessageHtmlLink":"Initial HTTP/3 and QPACK implementation"}},{"before":"bc472f48e2cf529e8b5cd271f8bea276aaeff504","after":"941d408ea40022da3148b5b96483d5e8f95caaa4","ref":"refs/heads/qpack","pushedAt":"2024-03-26T08:40:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Initial HTTP/3 and QPACK implementation\n\nCowlib now uses GitHub Actions for CI. As a result\nof this change, Cowlib is tested against OTP-24+.\n\nThis commit adds initial implementations of\ncow_http3, cow_http3_machine and cow_qpack.\n\nBecause QPACK is similar to HPACK, some encoding and\ndecoding functions were moved to a common include file,\nparticularly the huffman functions.\n\nThe cow_http module now contains the types and functions\ncommon to all or most versions of HTTP. The types and\nfunctions specific to HTTP/1 were moved to the new\ncow_http1 module.\n\nBecause HTTP/3 is similar to HTTP/2, part of the code\nprocessing headers is common and can be found in\ncow_http. Other functions common to both versions\nwere moved out of cow_http2_machine.\n\nThis commit updates comments indicating that the HTTP/2\nPRIORITY mechanism will no longer be implemented.","shortMessageHtmlLink":"Initial HTTP/3 and QPACK implementation"}},{"before":"c42ad797a2af137f57e6e7a539557bdf46e4111a","after":"bc472f48e2cf529e8b5cd271f8bea276aaeff504","ref":"refs/heads/qpack","pushedAt":"2024-03-20T10:20:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Update Erlang.mk","shortMessageHtmlLink":"Update Erlang.mk"}},{"before":"3a5a90ca141fa58c2f364837af7063069fdd9a82","after":"c42ad797a2af137f57e6e7a539557bdf46e4111a","ref":"refs/heads/qpack","pushedAt":"2024-03-20T09:11:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Tweak","shortMessageHtmlLink":"Tweak"}},{"before":"800beeb388c6b5d665f26fa6e3f22d2e4a227e3f","after":"3a5a90ca141fa58c2f364837af7063069fdd9a82","ref":"refs/heads/qpack","pushedAt":"2024-03-20T09:10:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Update the local state when preparing HTTP/3 headers","shortMessageHtmlLink":"Update the local state when preparing HTTP/3 headers"}},{"before":"3138f49fddebda86f5a4b8c98ce64dfcff314042","after":"800beeb388c6b5d665f26fa6e3f22d2e4a227e3f","ref":"refs/heads/qpack","pushedAt":"2024-03-19T14:14:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Update the local state when preparing HTTP/3 headers","shortMessageHtmlLink":"Update the local state when preparing HTTP/3 headers"}},{"before":"386ca324f552f41217e892ed77f88eca3a4f5713","after":"1eb7f4293a652adcfe43b1835d22c58d8def839f","ref":"refs/heads/master","pushedAt":"2024-03-14T11:46:59.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Cowlib 2.13.0","shortMessageHtmlLink":"Cowlib 2.13.0"}},{"before":"cc04201c1d0e1d5603cd1cde037ab729b192634c","after":"386ca324f552f41217e892ed77f88eca3a4f5713","ref":"refs/heads/master","pushedAt":"2024-03-14T11:16:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Add max_fragmented_header_block_size HTTP/2 option","shortMessageHtmlLink":"Add max_fragmented_header_block_size HTTP/2 option"}},{"before":"841bd9a9c2d907b7d928ca4a67e3892d2333e95a","after":"3138f49fddebda86f5a4b8c98ce64dfcff314042","ref":"refs/heads/qpack","pushedAt":"2024-03-05T14:41:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"More types shenanigans","shortMessageHtmlLink":"More types shenanigans"}},{"before":"14467ae871db9517c95e89958a39bf1344b3e42e","after":"841bd9a9c2d907b7d928ca4a67e3892d2333e95a","ref":"refs/heads/qpack","pushedAt":"2024-03-05T09:34:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Make Dialyzer green","shortMessageHtmlLink":"Make Dialyzer green"}},{"before":"113c26899ad4db58a8985321cf925ad6aabae480","after":"14467ae871db9517c95e89958a39bf1344b3e42e","ref":"refs/heads/qpack","pushedAt":"2024-03-01T14:54:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Last few important todos","shortMessageHtmlLink":"Last few important todos"}},{"before":"f99d8dccd2b4fc876543ea4371383850488732ef","after":"113c26899ad4db58a8985321cf925ad6aabae480","ref":"refs/heads/qpack","pushedAt":"2024-02-29T14:37:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"More todos done","shortMessageHtmlLink":"More todos done"}},{"before":"b44ccafcc02c52ec14337b1bf89fa4d99267b4bb","after":"f99d8dccd2b4fc876543ea4371383850488732ef","ref":"refs/heads/qpack","pushedAt":"2024-02-29T13:56:17.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"More todos done","shortMessageHtmlLink":"More todos done"}},{"before":"9f65a9a22f71b4ee576c9b93420b95bc3004a723","after":"b44ccafcc02c52ec14337b1bf89fa4d99267b4bb","ref":"refs/heads/qpack","pushedAt":"2024-02-16T11:48:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Update Erlang.mk","shortMessageHtmlLink":"Update Erlang.mk"}},{"before":"563f1d51d81b694ef5a42fb866b49150887d60ab","after":"9f65a9a22f71b4ee576c9b93420b95bc3004a723","ref":"refs/heads/qpack","pushedAt":"2024-02-16T11:42:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Debug!","shortMessageHtmlLink":"Debug!"}},{"before":"2cb5f5f151e5a77330ffa065a9fec3bc667ca39e","after":"563f1d51d81b694ef5a42fb866b49150887d60ab","ref":"refs/heads/qpack","pushedAt":"2024-02-16T11:36:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Debug!","shortMessageHtmlLink":"Debug!"}},{"before":"1216663adfc47c5ea2de69e892946306be074112","after":"2cb5f5f151e5a77330ffa065a9fec3bc667ca39e","ref":"refs/heads/qpack","pushedAt":"2024-02-16T11:23:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Debug!","shortMessageHtmlLink":"Debug!"}},{"before":"415b05d1a5a04ebe90ca565f3b6e373c5a3bbcd3","after":"1216663adfc47c5ea2de69e892946306be074112","ref":"refs/heads/qpack","pushedAt":"2024-02-16T11:13:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Debug!","shortMessageHtmlLink":"Debug!"}},{"before":"b44ccafcc02c52ec14337b1bf89fa4d99267b4bb","after":"415b05d1a5a04ebe90ca565f3b6e373c5a3bbcd3","ref":"refs/heads/qpack","pushedAt":"2024-02-16T11:03:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Debug!","shortMessageHtmlLink":"Debug!"}},{"before":"ccf2dfa80a00d5cba6d7377b67fa7c508a777e3b","after":"b44ccafcc02c52ec14337b1bf89fa4d99267b4bb","ref":"refs/heads/qpack","pushedAt":"2024-02-16T10:45:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Update Erlang.mk","shortMessageHtmlLink":"Update Erlang.mk"}},{"before":"8783b3fd84b5c66099af5e94e04ad6059b1cd27e","after":"ccf2dfa80a00d5cba6d7377b67fa7c508a777e3b","ref":"refs/heads/qpack","pushedAt":"2024-02-16T10:11:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Fix test compile error","shortMessageHtmlLink":"Fix test compile error"}},{"before":"b47ed1eb5010356c5ca9440d85ae1f1158108053","after":"8783b3fd84b5c66099af5e94e04ad6059b1cd27e","ref":"refs/heads/qpack","pushedAt":"2024-02-16T09:43:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Add perfs, cleanup hipe, use OTP-24+ latest","shortMessageHtmlLink":"Add perfs, cleanup hipe, use OTP-24+ latest"}},{"before":"45908babb32a4a21893660206b31905a0b46a10f","after":"b47ed1eb5010356c5ca9440d85ae1f1158108053","ref":"refs/heads/qpack","pushedAt":"2024-02-16T09:36:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Add Github Actions","shortMessageHtmlLink":"Add Github Actions"}},{"before":"b60349b0d14d8d03880907694b7add5d8444880f","after":"45908babb32a4a21893660206b31905a0b46a10f","ref":"refs/heads/qpack","pushedAt":"2024-02-15T14:26:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"essen","name":"Loïc Hoguin","path":"/essen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141739?s=80&v=4"},"commit":{"message":"Add a shorter qpack init for tests","shortMessageHtmlLink":"Add a shorter qpack init for tests"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEduz_vwA","startCursor":null,"endCursor":null}},"title":"Activity · ninenines/cowlib"}