{"action":"created","issue":{"url":"https://api.github.com/repos/scodec/scodec-akka/issues/1","labels_url":"https://api.github.com/repos/scodec/scodec-akka/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/scodec/scodec-akka/issues/1/comments","events_url":"https://api.github.com/repos/scodec/scodec-akka/issues/1/events","html_url":"https://github.com/scodec/scodec-akka/issues/1","id":105223622,"number":1,"title":"Implement zero-copy ByteString <=> ByteVector conversions","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},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":12,"created_at":"2015-09-07T14:17:46Z","updated_at":"2015-10-01T20:10:58Z","closed_at":null,"body":""},"comment":{"url":"https://api.github.com/repos/scodec/scodec-akka/issues/comments/144834181","html_url":"https://github.com/scodec/scodec-akka/issues/1#issuecomment-144834181","issue_url":"https://api.github.com/repos/scodec/scodec-akka/issues/1","id":144834181,"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":"2015-10-01T20:10:58Z","updated_at":"2015-10-01T20:10:58Z","body":"@rkuhn Strangely, I feel that the ideal is that we'd just use `ByteVector`... :)\r\n\r\nIn all seriousness though, you are correct that we don't want scodec depending on akka-actor. Also, `BitVector` is much more important to scodec than `ByteVector`, and we get quite a bit of convenience by having these two types defined together. Further, `ByteVector` has been optimized for the types of code paths that occur frequently when encoding/decoding binary. `ByteString` hasn't been optimized for those code paths (you can see micro benchmark results that compare the two implementations in the scodec-bits/benchmark project).\r\n\r\nInternally, the `ByteVector` structure is a balanced tree, with a mutable scratch buffer at the end, which allows referentially transparent copying in to the scratch buffer (where concurrent writes are raced, with the loser having to copy).\r\n\r\nAs a result, I think an interop layer is our best bet for the foreseeable future. If folks were interested in SLIP-ing something based on `BitVector`/`ByteVector`/`ByteString`, I'd be interested in moving to a standard library type, but only if the performance and convenience of that type was on par with the existing scodec-bits types."}}