{"action":"created","issue":{"url":"https://api.github.com/repos/aspnet/HttpAbstractions/issues/411","labels_url":"https://api.github.com/repos/aspnet/HttpAbstractions/issues/411/labels{/name}","comments_url":"https://api.github.com/repos/aspnet/HttpAbstractions/issues/411/comments","events_url":"https://api.github.com/repos/aspnet/HttpAbstractions/issues/411/events","html_url":"https://github.com/aspnet/HttpAbstractions/pull/411","id":107423344,"number":411,"title":"Less alloc/wrapping/boxing for Query, Forms, Cookies","user":{"login":"benaadams","id":1142958,"avatar_url":"https://avatars.githubusercontent.com/u/1142958?v=3","gravatar_id":"","url":"https://api.github.com/users/benaadams","html_url":"https://github.com/benaadams","followers_url":"https://api.github.com/users/benaadams/followers","following_url":"https://api.github.com/users/benaadams/following{/other_user}","gists_url":"https://api.github.com/users/benaadams/gists{/gist_id}","starred_url":"https://api.github.com/users/benaadams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benaadams/subscriptions","organizations_url":"https://api.github.com/users/benaadams/orgs","repos_url":"https://api.github.com/users/benaadams/repos","events_url":"https://api.github.com/users/benaadams/events{/privacy}","received_events_url":"https://api.github.com/users/benaadams/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/aspnet/HttpAbstractions/labels/cla-already-signed","name":"cla-already-signed","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":28,"created_at":"2015-09-20T23:08:11Z","updated_at":"2015-10-30T02:00:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/aspnet/HttpAbstractions/pulls/411","html_url":"https://github.com/aspnet/HttpAbstractions/pull/411","diff_url":"https://github.com/aspnet/HttpAbstractions/pull/411.diff","patch_url":"https://github.com/aspnet/HttpAbstractions/pull/411.patch"},"body":"* Lower allocation for empty dictionaries of types ```HeaderDictionary```, ```QueryCollection```, ```FormCollection```, ```RequestCookies```\r\n* No allocation for empty Form parsing or Query parsing\r\n* Read/Write request data for middleware editing/processing (e.g. 3rd party auth that removes its data; or data transforms along the pipeline)\r\n* Removed ```IReadableStringCollection```, ```ReadableStringCollection``` -> ```IQueryCollection```, ```IRequestCookies```,  ```IFormCollection``` each implementing ```IDictionary<string, StringValues>``` \r\n* Added ```IQueryCollection```, ```IRequestCookies```,  ```IFormCollection``` doesn't throw on get contract, non-boxing enumerator in Empty paths.\r\n* ```KeyValueAccumulator``` from ```class``` to ```struct```\r\n* Removed a bunch of boxing paths\r\n* Reduced allocs in some paths (e.g. [```ToUriComponent```](https://github.com/aspnet/HttpAbstractions/pull/411/files#diff-acd9903bfe4362b3b8480b33de592c20L66) or [```ParseQuery```](https://github.com/aspnet/HttpAbstractions/pull/411/files#diff-cb271f343ac8ee259123a6e42be32e89L114))\r\n* Changes to support non-boxing ```Equality``` for ```StringValues``` (see PR https://github.com/aspnet/Common/pull/55)\r\n\r\nAlso cleaned up and added some intellisense code comments; but they still need work, so this is not \"done\""},"comment":{"url":"https://api.github.com/repos/aspnet/HttpAbstractions/issues/comments/152383254","html_url":"https://github.com/aspnet/HttpAbstractions/pull/411#issuecomment-152383254","issue_url":"https://api.github.com/repos/aspnet/HttpAbstractions/issues/411","id":152383254,"user":{"login":"benaadams","id":1142958,"avatar_url":"https://avatars.githubusercontent.com/u/1142958?v=3","gravatar_id":"","url":"https://api.github.com/users/benaadams","html_url":"https://github.com/benaadams","followers_url":"https://api.github.com/users/benaadams/followers","following_url":"https://api.github.com/users/benaadams/following{/other_user}","gists_url":"https://api.github.com/users/benaadams/gists{/gist_id}","starred_url":"https://api.github.com/users/benaadams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benaadams/subscriptions","organizations_url":"https://api.github.com/users/benaadams/orgs","repos_url":"https://api.github.com/users/benaadams/repos","events_url":"https://api.github.com/users/benaadams/events{/privacy}","received_events_url":"https://api.github.com/users/benaadams/received_events","type":"User","site_admin":false},"created_at":"2015-10-30T02:00:51Z","updated_at":"2015-10-30T02:00:51Z","body":"Changes done; only outstanding is whether to remove the Form POST optimization for no values?"}}