{"action":"created","comment":{"url":"https://api.github.com/repos/concretecloud/chirp/pulls/comments/149896833","pull_request_review_id":75362669,"id":149896833,"diff_hunk":"@@ -1,18 +1,171 @@\n-=====================\n-Concrete Clouds Chirp\n-=====================\n+========\n+libchirp\n+========\n \n-API Reference\n-=============\n+Message-passing for everyone\n \n-.. note::\n+Features\n+========\n \n-   The API is not thread-safe except where stated: Functions have \\*_ts suffix.\n-   uv_async_send() can be used.\n+* Fully automatic connection setup\n \n-   Only one thread per :c:type:`ch_chirp_t` object is possible, the\n-   :c:type:`uv_loop_t` has to run in that thread. \\*_ts functions can be called\n-   from any thread.\n+* TLS support\n+\n+  * Connections to 127.0.0.1 and ::1 aren't encrypted\n+  * We support and test with OpenSSL, but we prefer LibreSSL\n+\n+* Easy message routing\n+\n+* Robust\n+\n+  * No message can be lost without an error (or it is a bug)\n+\n+* Very thin API\n+\n+* Minimal code-base, all additional features will be implemented as modules in\n+  an upper layer\n+\n+* Fast\n+\n+  * Up to 50'000 msg/s on a single-connection (encrypted 35'000 msg/s)\n+  * Up to 100'000 msg/s in star-topology (encrypted same)\n+\n+    * Which shows that chirp is highly optimized, but still if the network delay\n+      is bigger star-topology is the way to go.\n+\n+Planned features\n+================\n+\n+* Flow control\n+\n+  * Chirp won't overload peers out-of-the box, if you work with long requests\n+    >2.5s adjust the timeout\n+  * Peer-load is reported so you can implement load-balancing easily\n+\n+* Retry\n+\n+Consequences\n+------------\n+\n+* Missing flow-control means you should not overload your peer. Let the peer\n+  send a completed-message and wait for it. If you overload your peer you will\n+  get timeout errors. It also means that chirp is not yet routing friendly.\n+\n+* Retry: There is a very rare edge-case: if a connections is\n+  garbage-collected just when the peer sends a message, you will get a\n+  disconnected error. With retry these errors will not appear.\n+\n+* Load is not reported\n+\n+We want to keep the interfaces, so the versions implementing these feature won't","path":"doc/index.rst","position":71,"original_position":71,"commit_id":"55f404f89fbc0fa9a2d1a88d19d18f75f7985cb8","original_commit_id":"55f404f89fbc0fa9a2d1a88d19d18f75f7985cb8","user":{"login":"winged","id":303759,"avatar_url":"https://avatars3.githubusercontent.com/u/303759?v=4","gravatar_id":"","url":"https://api.github.com/users/winged","html_url":"https://github.com/winged","followers_url":"https://api.github.com/users/winged/followers","following_url":"https://api.github.com/users/winged/following{/other_user}","gists_url":"https://api.github.com/users/winged/gists{/gist_id}","starred_url":"https://api.github.com/users/winged/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/winged/subscriptions","organizations_url":"https://api.github.com/users/winged/orgs","repos_url":"https://api.github.com/users/winged/repos","events_url":"https://api.github.com/users/winged/events{/privacy}","received_events_url":"https://api.github.com/users/winged/received_events","type":"User","site_admin":false},"body":"\"these feature\" -> should be plural","created_at":"2017-11-09T08:55:20Z","updated_at":"2017-11-09T08:58:20Z","html_url":"https://github.com/concretecloud/chirp/pull/201#discussion_r149896833","pull_request_url":"https://api.github.com/repos/concretecloud/chirp/pulls/201","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/concretecloud/chirp/pulls/comments/149896833"},"html":{"href":"https://github.com/concretecloud/chirp/pull/201#discussion_r149896833"},"pull_request":{"href":"https://api.github.com/repos/concretecloud/chirp/pulls/201"}}},"pull_request":{"url":"https://api.github.com/repos/concretecloud/chirp/pulls/201","id":151510415,"html_url":"https://github.com/concretecloud/chirp/pull/201","diff_url":"https://github.com/concretecloud/chirp/pull/201.diff","patch_url":"https://github.com/concretecloud/chirp/pull/201.patch","issue_url":"https://api.github.com/repos/concretecloud/chirp/issues/201","number":201,"state":"open","locked":false,"title":"Example, move rbtree to cc and update rbtree","user":{"login":"ganwell","id":1186530,"avatar_url":"https://avatars3.githubusercontent.com/u/1186530?v=4","gravatar_id":"","url":"https://api.github.com/users/ganwell","html_url":"https://github.com/ganwell","followers_url":"https://api.github.com/users/ganwell/followers","following_url":"https://api.github.com/users/ganwell/following{/other_user}","gists_url":"https://api.github.com/users/ganwell/gists{/gist_id}","starred_url":"https://api.github.com/users/ganwell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ganwell/subscriptions","organizations_url":"https://api.github.com/users/ganwell/orgs","repos_url":"https://api.github.com/users/ganwell/repos","events_url":"https://api.github.com/users/ganwell/events{/privacy}","received_events_url":"https://api.github.com/users/ganwell/received_events","type":"User","site_admin":false},"body":"@winged please review all commits at once","created_at":"2017-11-08T22:15:18Z","updated_at":"2017-11-09T08:58:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9f264502d2b9b22a294cdebd0ff3ac675c3ce1b1","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/concretecloud/chirp/pulls/201/commits","review_comments_url":"https://api.github.com/repos/concretecloud/chirp/pulls/201/comments","review_comment_url":"https://api.github.com/repos/concretecloud/chirp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/concretecloud/chirp/issues/201/comments","statuses_url":"https://api.github.com/repos/concretecloud/chirp/statuses/55f404f89fbc0fa9a2d1a88d19d18f75f7985cb8","head":{"label":"ganwell:example","ref":"example","sha":"55f404f89fbc0fa9a2d1a88d19d18f75f7985cb8","user":{"login":"ganwell","id":1186530,"avatar_url":"https://avatars3.githubusercontent.com/u/1186530?v=4","gravatar_id":"","url":"https://api.github.com/users/ganwell","html_url":"https://github.com/ganwell","followers_url":"https://api.github.com/users/ganwell/followers","following_url":"https://api.github.com/users/ganwell/following{/other_user}","gists_url":"https://api.github.com/users/ganwell/gists{/gist_id}","starred_url":"https://api.github.com/users/ganwell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ganwell/subscriptions","organizations_url":"https://api.github.com/users/ganwell/orgs","repos_url":"https://api.github.com/users/ganwell/repos","events_url":"https://api.github.com/users/ganwell/events{/privacy}","received_events_url":"https://api.github.com/users/ganwell/received_events","type":"User","site_admin":false},"repo":{"id":83028631,"name":"chirp","full_name":"ganwell/chirp","owner":{"login":"ganwell","id":1186530,"avatar_url":"https://avatars3.githubusercontent.com/u/1186530?v=4","gravatar_id":"","url":"https://api.github.com/users/ganwell","html_url":"https://github.com/ganwell","followers_url":"https://api.github.com/users/ganwell/followers","following_url":"https://api.github.com/users/ganwell/following{/other_user}","gists_url":"https://api.github.com/users/ganwell/gists{/gist_id}","starred_url":"https://api.github.com/users/ganwell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ganwell/subscriptions","organizations_url":"https://api.github.com/users/ganwell/orgs","repos_url":"https://api.github.com/users/ganwell/repos","events_url":"https://api.github.com/users/ganwell/events{/privacy}","received_events_url":"https://api.github.com/users/ganwell/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ganwell/chirp","description":"Message-passing and actor-based programming for everyone","fork":true,"url":"https://api.github.com/repos/ganwell/chirp","forks_url":"https://api.github.com/repos/ganwell/chirp/forks","keys_url":"https://api.github.com/repos/ganwell/chirp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ganwell/chirp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ganwell/chirp/teams","hooks_url":"https://api.github.com/repos/ganwell/chirp/hooks","issue_events_url":"https://api.github.com/repos/ganwell/chirp/issues/events{/number}","events_url":"https://api.github.com/repos/ganwell/chirp/events","assignees_url":"https://api.github.com/repos/ganwell/chirp/assignees{/user}","branches_url":"https://api.github.com/repos/ganwell/chirp/branches{/branch}","tags_url":"https://api.github.com/repos/ganwell/chirp/tags","blobs_url":"https://api.github.com/repos/ganwell/chirp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ganwell/chirp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ganwell/chirp/git/refs{/sha}","trees_url":"https://api.github.com/repos/ganwell/chirp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ganwell/chirp/statuses/{sha}","languages_url":"https://api.github.com/repos/ganwell/chirp/languages","stargazers_url":"https://api.github.com/repos/ganwell/chirp/stargazers","contributors_url":"https://api.github.com/repos/ganwell/chirp/contributors","subscribers_url":"https://api.github.com/repos/ganwell/chirp/subscribers","subscription_url":"https://api.github.com/repos/ganwell/chirp/subscription","commits_url":"https://api.github.com/repos/ganwell/chirp/commits{/sha}","git_commits_url":"https://api.github.com/repos/ganwell/chirp/git/commits{/sha}","comments_url":"https://api.github.com/repos/ganwell/chirp/comments{/number}","issue_comment_url":"https://api.github.com/repos/ganwell/chirp/issues/comments{/number}","contents_url":"https://api.github.com/repos/ganwell/chirp/contents/{+path}","compare_url":"https://api.github.com/repos/ganwell/chirp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ganwell/chirp/merges","archive_url":"https://api.github.com/repos/ganwell/chirp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ganwell/chirp/downloads","issues_url":"https://api.github.com/repos/ganwell/chirp/issues{/number}","pulls_url":"https://api.github.com/repos/ganwell/chirp/pulls{/number}","milestones_url":"https://api.github.com/repos/ganwell/chirp/milestones{/number}","notifications_url":"https://api.github.com/repos/ganwell/chirp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ganwell/chirp/labels{/name}","releases_url":"https://api.github.com/repos/ganwell/chirp/releases{/id}","deployments_url":"https://api.github.com/repos/ganwell/chirp/deployments","created_at":"2017-02-24T10:09:19Z","updated_at":"2017-02-24T10:09:20Z","pushed_at":"2017-11-08T23:49:32Z","git_url":"git://github.com/ganwell/chirp.git","ssh_url":"git@github.com:ganwell/chirp.git","clone_url":"https://github.com/ganwell/chirp.git","svn_url":"https://github.com/ganwell/chirp","homepage":"https://github.com/concretecloud/chirp","size":1594,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"concretecloud:master","ref":"master","sha":"6256cbb17a67681a629ebc90675bc5edc95bf0a6","user":{"login":"concretecloud","id":13970141,"avatar_url":"https://avatars3.githubusercontent.com/u/13970141?v=4","gravatar_id":"","url":"https://api.github.com/users/concretecloud","html_url":"https://github.com/concretecloud","followers_url":"https://api.github.com/users/concretecloud/followers","following_url":"https://api.github.com/users/concretecloud/following{/other_user}","gists_url":"https://api.github.com/users/concretecloud/gists{/gist_id}","starred_url":"https://api.github.com/users/concretecloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/concretecloud/subscriptions","organizations_url":"https://api.github.com/users/concretecloud/orgs","repos_url":"https://api.github.com/users/concretecloud/repos","events_url":"https://api.github.com/users/concretecloud/events{/privacy}","received_events_url":"https://api.github.com/users/concretecloud/received_events","type":"Organization","site_admin":false},"repo":{"id":81990316,"name":"chirp","full_name":"concretecloud/chirp","owner":{"login":"concretecloud","id":13970141,"avatar_url":"https://avatars3.githubusercontent.com/u/13970141?v=4","gravatar_id":"","url":"https://api.github.com/users/concretecloud","html_url":"https://github.com/concretecloud","followers_url":"https://api.github.com/users/concretecloud/followers","following_url":"https://api.github.com/users/concretecloud/following{/other_user}","gists_url":"https://api.github.com/users/concretecloud/gists{/gist_id}","starred_url":"https://api.github.com/users/concretecloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/concretecloud/subscriptions","organizations_url":"https://api.github.com/users/concretecloud/orgs","repos_url":"https://api.github.com/users/concretecloud/repos","events_url":"https://api.github.com/users/concretecloud/events{/privacy}","received_events_url":"https://api.github.com/users/concretecloud/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/concretecloud/chirp","description":"Message-passing for everyone","fork":false,"url":"https://api.github.com/repos/concretecloud/chirp","forks_url":"https://api.github.com/repos/concretecloud/chirp/forks","keys_url":"https://api.github.com/repos/concretecloud/chirp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/concretecloud/chirp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/concretecloud/chirp/teams","hooks_url":"https://api.github.com/repos/concretecloud/chirp/hooks","issue_events_url":"https://api.github.com/repos/concretecloud/chirp/issues/events{/number}","events_url":"https://api.github.com/repos/concretecloud/chirp/events","assignees_url":"https://api.github.com/repos/concretecloud/chirp/assignees{/user}","branches_url":"https://api.github.com/repos/concretecloud/chirp/branches{/branch}","tags_url":"https://api.github.com/repos/concretecloud/chirp/tags","blobs_url":"https://api.github.com/repos/concretecloud/chirp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/concretecloud/chirp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/concretecloud/chirp/git/refs{/sha}","trees_url":"https://api.github.com/repos/concretecloud/chirp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/concretecloud/chirp/statuses/{sha}","languages_url":"https://api.github.com/repos/concretecloud/chirp/languages","stargazers_url":"https://api.github.com/repos/concretecloud/chirp/stargazers","contributors_url":"https://api.github.com/repos/concretecloud/chirp/contributors","subscribers_url":"https://api.github.com/repos/concretecloud/chirp/subscribers","subscription_url":"https://api.github.com/repos/concretecloud/chirp/subscription","commits_url":"https://api.github.com/repos/concretecloud/chirp/commits{/sha}","git_commits_url":"https://api.github.com/repos/concretecloud/chirp/git/commits{/sha}","comments_url":"https://api.github.com/repos/concretecloud/chirp/comments{/number}","issue_comment_url":"https://api.github.com/repos/concretecloud/chirp/issues/comments{/number}","contents_url":"https://api.github.com/repos/concretecloud/chirp/contents/{+path}","compare_url":"https://api.github.com/repos/concretecloud/chirp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/concretecloud/chirp/merges","archive_url":"https://api.github.com/repos/concretecloud/chirp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/concretecloud/chirp/downloads","issues_url":"https://api.github.com/repos/concretecloud/chirp/issues{/number}","pulls_url":"https://api.github.com/repos/concretecloud/chirp/pulls{/number}","milestones_url":"https://api.github.com/repos/concretecloud/chirp/milestones{/number}","notifications_url":"https://api.github.com/repos/concretecloud/chirp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/concretecloud/chirp/labels{/name}","releases_url":"https://api.github.com/repos/concretecloud/chirp/releases{/id}","deployments_url":"https://api.github.com/repos/concretecloud/chirp/deployments","created_at":"2017-02-14T21:21:14Z","updated_at":"2017-11-08T22:46:09Z","pushed_at":"2017-11-08T23:49:33Z","git_url":"git://github.com/concretecloud/chirp.git","ssh_url":"git@github.com:concretecloud/chirp.git","clone_url":"https://github.com/concretecloud/chirp.git","svn_url":"https://github.com/concretecloud/chirp","homepage":"https://github.com/concretecloud/chirp","size":1611,"stargazers_count":4,"watchers_count":4,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":26,"forks":4,"open_issues":26,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/concretecloud/chirp/pulls/201"},"html":{"href":"https://github.com/concretecloud/chirp/pull/201"},"issue":{"href":"https://api.github.com/repos/concretecloud/chirp/issues/201"},"comments":{"href":"https://api.github.com/repos/concretecloud/chirp/issues/201/comments"},"review_comments":{"href":"https://api.github.com/repos/concretecloud/chirp/pulls/201/comments"},"review_comment":{"href":"https://api.github.com/repos/concretecloud/chirp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/concretecloud/chirp/pulls/201/commits"},"statuses":{"href":"https://api.github.com/repos/concretecloud/chirp/statuses/55f404f89fbc0fa9a2d1a88d19d18f75f7985cb8"}},"author_association":"OWNER"}}
{"actor":{"display_login":"winged"}}