{"action":"created","issue":{"url":"https://api.github.com/repos/functional-streams-for-scala/fs2/issues/657","repository_url":"https://api.github.com/repos/functional-streams-for-scala/fs2","labels_url":"https://api.github.com/repos/functional-streams-for-scala/fs2/issues/657/labels{/name}","comments_url":"https://api.github.com/repos/functional-streams-for-scala/fs2/issues/657/comments","events_url":"https://api.github.com/repos/functional-streams-for-scala/fs2/issues/657/events","html_url":"https://github.com/functional-streams-for-scala/fs2/pull/657","id":161047644,"number":657,"title":"Actually unboxed chunk transforms","user":{"login":"djspiewak","id":752,"avatar_url":"https://avatars.githubusercontent.com/u/752?v=3","gravatar_id":"","url":"https://api.github.com/users/djspiewak","html_url":"https://github.com/djspiewak","followers_url":"https://api.github.com/users/djspiewak/followers","following_url":"https://api.github.com/users/djspiewak/following{/other_user}","gists_url":"https://api.github.com/users/djspiewak/gists{/gist_id}","starred_url":"https://api.github.com/users/djspiewak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djspiewak/subscriptions","organizations_url":"https://api.github.com/users/djspiewak/orgs","repos_url":"https://api.github.com/users/djspiewak/repos","events_url":"https://api.github.com/users/djspiewak/events{/privacy}","received_events_url":"https://api.github.com/users/djspiewak/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2016-06-18T23:07:15Z","updated_at":"2016-07-02T13:39:44Z","closed_at":"2016-07-02T13:39:28Z","pull_request":{"url":"https://api.github.com/repos/functional-streams-for-scala/fs2/pulls/657","html_url":"https://github.com/functional-streams-for-scala/fs2/pull/657","diff_url":"https://github.com/functional-streams-for-scala/fs2/pull/657.diff","patch_url":"https://github.com/functional-streams-for-scala/fs2/pull/657.patch"},"body":"I feel bad about just email-whining about things and not actually pitching in, so here's my public apology to @mpilquist and @pchiusano for for privately being a jerk.  :-)\r\n\r\nIf I did things right, this should give us truly unboxed transformations on chunks where we already have an unboxed form (i.e. no longer annihilates primitives after a single operation).  I also fixed some low-hanging fruit elsewhere in `Chunk`.  Note that I couldn't figure out how to run the benchmarks (albeit with only about five minutes of trying) – and I'm on an airplane anyway, so the results wouldn't have been accurate – so we don't have objective metrics yet.  The bytecode seems to look good though.\r\n\r\nYes, it's ugly.  Sorry.  Manually specialized code is always very ugly.  Please do be careful about adjusting some of the encodings.  There are some relatively obvious ways to make the code suck less which actually harm performance.\r\n\r\nOh, I also tried (just for giggles) to apply `@specialized` to `Chunk.singleton`.  It sort of works (at least, it does based on reading the bytecode), but critically it doesn't pass that specialization down to inherited members (I doubted it would).  So if we want to specialize `singleton`, we need to do it manually, just like the others.  I left it alone for now, but it's a bit weird since it means you get unboxed primitives with multiples, but not with the single-element special case."},"comment":{"url":"https://api.github.com/repos/functional-streams-for-scala/fs2/issues/comments/230102177","html_url":"https://github.com/functional-streams-for-scala/fs2/pull/657#issuecomment-230102177","issue_url":"https://api.github.com/repos/functional-streams-for-scala/fs2/issues/657","id":230102177,"user":{"login":"mpilquist","id":118078,"avatar_url":"https://avatars.githubusercontent.com/u/118078?v=3","gravatar_id":"","url":"https://api.github.com/users/mpilquist","html_url":"https://github.com/mpilquist","followers_url":"https://api.github.com/users/mpilquist/followers","following_url":"https://api.github.com/users/mpilquist/following{/other_user}","gists_url":"https://api.github.com/users/mpilquist/gists{/gist_id}","starred_url":"https://api.github.com/users/mpilquist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpilquist/subscriptions","organizations_url":"https://api.github.com/users/mpilquist/orgs","repos_url":"https://api.github.com/users/mpilquist/repos","events_url":"https://api.github.com/users/mpilquist/events{/privacy}","received_events_url":"https://api.github.com/users/mpilquist/received_events","type":"User","site_admin":false},"created_at":"2016-07-02T13:39:44Z","updated_at":"2016-07-02T13:39:44Z","body":":+1: "}}
{"actor":{"display_login":"mpilquist"}}