{"action":"created","issue":{"url":"https://api.github.com/repos/nessos/Streams/issues/39","labels_url":"https://api.github.com/repos/nessos/Streams/issues/39/labels{/name}","comments_url":"https://api.github.com/repos/nessos/Streams/issues/39/comments","events_url":"https://api.github.com/repos/nessos/Streams/issues/39/events","html_url":"https://github.com/nessos/Streams/pull/39","id":87753701,"number":39,"title":"hide parallel stream representations (tentative)","user":{"login":"dsyme","id":7204669,"avatar_url":"https://avatars.githubusercontent.com/u/7204669?v=3","gravatar_id":"","url":"https://api.github.com/users/dsyme","html_url":"https://github.com/dsyme","followers_url":"https://api.github.com/users/dsyme/followers","following_url":"https://api.github.com/users/dsyme/following{/other_user}","gists_url":"https://api.github.com/users/dsyme/gists{/gist_id}","starred_url":"https://api.github.com/users/dsyme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dsyme/subscriptions","organizations_url":"https://api.github.com/users/dsyme/orgs","repos_url":"https://api.github.com/users/dsyme/repos","events_url":"https://api.github.com/users/dsyme/events{/privacy}","received_events_url":"https://api.github.com/users/dsyme/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/nessos/Streams/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/nessos/Streams/labels/performance","name":"performance","color":"bfe5bf"},{"url":"https://api.github.com/repos/nessos/Streams/labels/tests","name":"tests","color":"f7c6c7"}],"state":"open","locked":false,"assignee":{"login":"palladin","id":917467,"avatar_url":"https://avatars.githubusercontent.com/u/917467?v=3","gravatar_id":"","url":"https://api.github.com/users/palladin","html_url":"https://github.com/palladin","followers_url":"https://api.github.com/users/palladin/followers","following_url":"https://api.github.com/users/palladin/following{/other_user}","gists_url":"https://api.github.com/users/palladin/gists{/gist_id}","starred_url":"https://api.github.com/users/palladin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palladin/subscriptions","organizations_url":"https://api.github.com/users/palladin/orgs","repos_url":"https://api.github.com/users/palladin/repos","events_url":"https://api.github.com/users/palladin/events{/privacy}","received_events_url":"https://api.github.com/users/palladin/received_events","type":"User","site_admin":false},"milestone":null,"comments":6,"created_at":"2015-06-12T14:57:59Z","updated_at":"2015-06-12T15:38:10Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/nessos/Streams/pulls/39","html_url":"https://github.com/nessos/Streams/pull/39","diff_url":"https://github.com/nessos/Streams/pull/39.diff","patch_url":"https://github.com/nessos/Streams/pull/39.patch"},"body":"This hides the types used to implement parallel streams (at the cost of having an Internals.* module used in inlined compiled code). Performance should not be lost but we need to check ( @palladin do you have a performance test suite?)\r\n\r\nThis will allow us to progress the implementation of ParStream in quite novel ways without breaking source compatibility. It would also allow binary compatibility in some situations (though some of the Internals.* functions are a bit baroque and may not have stable signatures when using alternative implementations)\r\n\r\nThere's one open issue:\r\n\r\n* MBrace.Flow uses the representations of ParStream, we need to work out whether it needs to or not and what's incomplete about the ParStream library\r\n\r\nThere are now no dot-notation members on ParStream besides the C#-facing ones.  I think that's OK for now. I actually feel both Streams and ParStreams should probably just add fluent notation to both the types (in the style of FSharp.Core.Fluent-3.1), since the ``Streams.map`` and ``ParStreams.map`` notations involve longer names which are getting a little clumsy.\r\n\r\nThere's no rush with this - I did it as much to understand what's internal and what's public in the API.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/nessos/Streams/issues/comments/111530727","html_url":"https://github.com/nessos/Streams/pull/39#issuecomment-111530727","issue_url":"https://api.github.com/repos/nessos/Streams/issues/39","id":111530727,"user":{"login":"dsyme","id":7204669,"avatar_url":"https://avatars.githubusercontent.com/u/7204669?v=3","gravatar_id":"","url":"https://api.github.com/users/dsyme","html_url":"https://github.com/dsyme","followers_url":"https://api.github.com/users/dsyme/followers","following_url":"https://api.github.com/users/dsyme/following{/other_user}","gists_url":"https://api.github.com/users/dsyme/gists{/gist_id}","starred_url":"https://api.github.com/users/dsyme/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dsyme/subscriptions","organizations_url":"https://api.github.com/users/dsyme/orgs","repos_url":"https://api.github.com/users/dsyme/repos","events_url":"https://api.github.com/users/dsyme/events{/privacy}","received_events_url":"https://api.github.com/users/dsyme/received_events","type":"User","site_admin":false},"created_at":"2015-06-12T15:38:10Z","updated_at":"2015-06-12T15:38:10Z","body":"I suppose we would eventually want to do similar things with CloudFlow, making it a fully abstract type.  It would help if F# supported abstract internal members of course."}}