{"action":"created","issue":{"url":"https://api.github.com/repos/scala/slip/issues/30","labels_url":"https://api.github.com/repos/scala/slip/issues/30/labels{/name}","comments_url":"https://api.github.com/repos/scala/slip/issues/30/comments","events_url":"https://api.github.com/repos/scala/slip/issues/30/events","html_url":"https://github.com/scala/slip/pull/30","id":115841003,"number":30,"title":"Unsigned integer data types","user":{"login":"sjrd","id":535934,"avatar_url":"https://avatars.githubusercontent.com/u/535934?v=3","gravatar_id":"","url":"https://api.github.com/users/sjrd","html_url":"https://github.com/sjrd","followers_url":"https://api.github.com/users/sjrd/followers","following_url":"https://api.github.com/users/sjrd/following{/other_user}","gists_url":"https://api.github.com/users/sjrd/gists{/gist_id}","starred_url":"https://api.github.com/users/sjrd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjrd/subscriptions","organizations_url":"https://api.github.com/users/sjrd/orgs","repos_url":"https://api.github.com/users/sjrd/repos","events_url":"https://api.github.com/users/sjrd/events{/privacy}","received_events_url":"https://api.github.com/users/sjrd/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":47,"created_at":"2015-11-09T09:45:36Z","updated_at":"2015-11-10T17:53:15Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/scala/slip/pulls/30","html_url":"https://github.com/scala/slip/pull/30","diff_url":"https://github.com/scala/slip/pull/30.diff","patch_url":"https://github.com/scala/slip/pull/30.patch"},"body":"**By: Sébastien Doeraene @sjrd and Denys Shabalin @densh**\r\n\r\n**tl;dr**: We propose the addition of 4 \"primitive\" types to represent unsigned integers: UByte, UShort, UInt and ULong.\r\n\r\nA prototype implementation of this proposal, with unit tests and benchmarks, can be found at https://github.com/scala/scala/compare/2.12.x...sjrd:uints\r\n\r\nFor the non-tl;dr, read the complete text.\r\n\r\nNote that this is probably more a *SIP* rather than a SLIP, as we did have to touch the compiler one tiny bit (see the implementation), but we post it here anyway."},"comment":{"url":"https://api.github.com/repos/scala/slip/issues/comments/155512946","html_url":"https://github.com/scala/slip/pull/30#issuecomment-155512946","issue_url":"https://api.github.com/repos/scala/slip/issues/30","id":155512946,"user":{"login":"bvenners","id":120885,"avatar_url":"https://avatars.githubusercontent.com/u/120885?v=3","gravatar_id":"","url":"https://api.github.com/users/bvenners","html_url":"https://github.com/bvenners","followers_url":"https://api.github.com/users/bvenners/followers","following_url":"https://api.github.com/users/bvenners/following{/other_user}","gists_url":"https://api.github.com/users/bvenners/gists{/gist_id}","starred_url":"https://api.github.com/users/bvenners/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bvenners/subscriptions","organizations_url":"https://api.github.com/users/bvenners/orgs","repos_url":"https://api.github.com/users/bvenners/repos","events_url":"https://api.github.com/users/bvenners/events{/privacy}","received_events_url":"https://api.github.com/users/bvenners/received_events","type":"User","site_admin":false},"created_at":"2015-11-10T17:53:15Z","updated_at":"2015-11-10T17:53:15Z","body":"> I don't mind a multi-step process; I'd just make two different steps. The first one less far so that we\r\n> gain access to unsigned operations without having bolted-on quasi-primitive types. Then, assuming\r\n> that works out and more is desirable, go for the whole thing and add first-class primitive types with\r\n> everything that entails.\r\n\r\nIf this might be a two-step process than in step one I think you'd want to have the cooperative equality in step one, because you couldn't add that on in step two without breaking everyone's code. And it wouldn't feel like a first-class value type without that."}}