{"action":"opened","issue":{"url":"https://api.github.com/repos/monixio/monix/issues/160","repository_url":"https://api.github.com/repos/monixio/monix","labels_url":"https://api.github.com/repos/monixio/monix/issues/160/labels{/name}","comments_url":"https://api.github.com/repos/monixio/monix/issues/160/comments","events_url":"https://api.github.com/repos/monixio/monix/issues/160/events","html_url":"https://github.com/monixio/monix/issues/160","id":160230435,"number":160,"title":"Revamp the buffer operators","user":{"login":"alexandru","id":11753,"avatar_url":"https://avatars.githubusercontent.com/u/11753?v=3","gravatar_id":"","url":"https://api.github.com/users/alexandru","html_url":"https://github.com/alexandru","followers_url":"https://api.github.com/users/alexandru/followers","following_url":"https://api.github.com/users/alexandru/following{/other_user}","gists_url":"https://api.github.com/users/alexandru/gists{/gist_id}","starred_url":"https://api.github.com/users/alexandru/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexandru/subscriptions","organizations_url":"https://api.github.com/users/alexandru/orgs","repos_url":"https://api.github.com/users/alexandru/repos","events_url":"https://api.github.com/users/alexandru/events{/privacy}","received_events_url":"https://api.github.com/users/alexandru/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/monixio/monix/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"alexandru","id":11753,"avatar_url":"https://avatars.githubusercontent.com/u/11753?v=3","gravatar_id":"","url":"https://api.github.com/users/alexandru","html_url":"https://github.com/alexandru","followers_url":"https://api.github.com/users/alexandru/followers","following_url":"https://api.github.com/users/alexandru/following{/other_user}","gists_url":"https://api.github.com/users/alexandru/gists{/gist_id}","starred_url":"https://api.github.com/users/alexandru/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexandru/subscriptions","organizations_url":"https://api.github.com/users/alexandru/orgs","repos_url":"https://api.github.com/users/alexandru/repos","events_url":"https://api.github.com/users/alexandru/events{/privacy}","received_events_url":"https://api.github.com/users/alexandru/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/monixio/monix/milestones/6","html_url":"https://github.com/monixio/monix/milestones/2.0","labels_url":"https://api.github.com/repos/monixio/monix/milestones/6/labels","id":1472067,"number":6,"title":"2.0","description":"Version 2.0 involves breaking API changes.","creator":{"login":"alexandru","id":11753,"avatar_url":"https://avatars.githubusercontent.com/u/11753?v=3","gravatar_id":"","url":"https://api.github.com/users/alexandru","html_url":"https://github.com/alexandru","followers_url":"https://api.github.com/users/alexandru/followers","following_url":"https://api.github.com/users/alexandru/following{/other_user}","gists_url":"https://api.github.com/users/alexandru/gists{/gist_id}","starred_url":"https://api.github.com/users/alexandru/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexandru/subscriptions","organizations_url":"https://api.github.com/users/alexandru/orgs","repos_url":"https://api.github.com/users/alexandru/repos","events_url":"https://api.github.com/users/alexandru/events{/privacy}","received_events_url":"https://api.github.com/users/alexandru/received_events","type":"User","site_admin":false},"open_issues":14,"closed_issues":32,"state":"open","created_at":"2015-12-23T00:39:26Z","updated_at":"2016-06-14T16:50:02Z","due_on":"2016-06-30T21:00:00Z","closed_at":null},"comments":0,"created_at":"2016-06-14T16:50:01Z","updated_at":"2016-06-14T16:50:01Z","closed_at":null,"body":"Identified problems that need to be solved:\r\n\r\n- The `bufferTimed` operator currently does not have the same behavior as its ReactiveX equivalent and that's unfortunate because it's less useful and not intuitive\r\n- We also need a `bufferWithSelector` that emits bundles whenever a `selector` observable emits items\r\n- The `bufferWithSelector` also needs a variant with a `maxSize` that back-pressures the source when the buffer is full\r\n- The plain `buffer(count, skip)` operation in normal Scala parlance is called `sliding` and we should indicate that in the name, such that people can find it by using auto-complete or when searching in the API documentation\r\n\r\n**Breaking Changes:**\r\n\r\n- `buffer(count)` gets renamed to `bufferTumbling` (similar with RxScala)\r\n- `buffer(count,skip)` gets renamed to `bufferSliding` (similar with Scala and RxScala)\r\n- `bufferTimed(timespan)` gets refactored to have similar to ReactiveX\r\n- `bufferTimed(timespan, maxSize)` gets renamed to `bufferTimedAndCounted(timespan, maxCount)`\r\n- new `bufferTimedWithPressure(timespan, maxSize)` operator, that is like `bufferTimed` but applies back-pressure on the source when the buffer is full\r\n- new `bufferWithSelector(selector)` operator that emits bundles whenever the `selector` observable emits events\r\n- new `bufferWithSelector(selector, maxSize)` operator that emits bundles whenever the `selector` observable emits events and that back-pressures the source when the buffer size reaches `maxSize`\r\n"}}
{"actor":{"display_login":"alexandru"}}