{"action":"created","issue":{"url":"https://api.github.com/repos/Valloric/ycmd/issues/925","repository_url":"https://api.github.com/repos/Valloric/ycmd","labels_url":"https://api.github.com/repos/Valloric/ycmd/issues/925/labels{/name}","comments_url":"https://api.github.com/repos/Valloric/ycmd/issues/925/comments","events_url":"https://api.github.com/repos/Valloric/ycmd/issues/925/events","html_url":"https://github.com/Valloric/ycmd/pull/925","id":296247212,"number":925,"title":"[WIP] Pybind11 as a replacement for Boost.Python","user":{"login":"bstaletic","id":7791699,"avatar_url":"https://avatars3.githubusercontent.com/u/7791699?v=4","gravatar_id":"","url":"https://api.github.com/users/bstaletic","html_url":"https://github.com/bstaletic","followers_url":"https://api.github.com/users/bstaletic/followers","following_url":"https://api.github.com/users/bstaletic/following{/other_user}","gists_url":"https://api.github.com/users/bstaletic/gists{/gist_id}","starred_url":"https://api.github.com/users/bstaletic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bstaletic/subscriptions","organizations_url":"https://api.github.com/users/bstaletic/orgs","repos_url":"https://api.github.com/users/bstaletic/repos","events_url":"https://api.github.com/users/bstaletic/events{/privacy}","received_events_url":"https://api.github.com/users/bstaletic/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":22,"created_at":"2018-02-12T01:35:56Z","updated_at":"2018-04-08T07:13:47Z","closed_at":null,"author_association":"COLLABORATOR","pull_request":{"url":"https://api.github.com/repos/Valloric/ycmd/pulls/925","html_url":"https://github.com/Valloric/ycmd/pull/925","diff_url":"https://github.com/Valloric/ycmd/pull/925.diff","patch_url":"https://github.com/Valloric/ycmd/pull/925.patch"},"body":"We have talked about pybind11 many times. I had even more failed attempts at replacing Boost.Python.\r\n\r\nPybind11's python API is quite similar to that of Boost.Python, so most of the stuff here is a namespace change. Even bigger part will be obvious for anyone who has seen Boost.Python API before.\r\n\r\nThe up sides of Pybind11:\r\n\r\n- ` 1274 files changed, 5 insertions(+), 188101 deletions(-)` on the account of removing Boost.Python from `cpp/BoostParts`\r\n- A few percents of performance boost.\r\n- Header only - for those who like that.\r\n- Perhaps biased, but I believe pybind11 has far better documentation.\r\n\r\nThe downsides:\r\n\r\n- We had to drop VS2013 and Clang < 3.5.\r\n  - VS2013 is just too old for new C++11 features.\r\n  - Clang 3.3 and 3.4 should work, but (not only) our code exploses an obscure pybind11 bug that isn't exposed by their tests. Hence the bug has no minimal reproducer and was never fixed.\r\n- There are a few things I wasn't able to solve. I'm hoping for the help of others.\r\n\r\nBoth [appveyor](https://ci.appveyor.com/project/bstaletic/ycmd-noh9b/build/90) amd [travis](https://travis-ci.org/bstaletic/ycmd/jobs/340294924) are passing.\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/valloric/ycmd/925)\n<!-- Reviewable:end -->\n"},"comment":{"url":"https://api.github.com/repos/Valloric/ycmd/issues/comments/379526837","html_url":"https://github.com/Valloric/ycmd/pull/925#issuecomment-379526837","issue_url":"https://api.github.com/repos/Valloric/ycmd/issues/925","id":379526837,"user":{"login":"bstaletic","id":7791699,"avatar_url":"https://avatars3.githubusercontent.com/u/7791699?v=4","gravatar_id":"","url":"https://api.github.com/users/bstaletic","html_url":"https://github.com/bstaletic","followers_url":"https://api.github.com/users/bstaletic/followers","following_url":"https://api.github.com/users/bstaletic/following{/other_user}","gists_url":"https://api.github.com/users/bstaletic/gists{/gist_id}","starred_url":"https://api.github.com/users/bstaletic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bstaletic/subscriptions","organizations_url":"https://api.github.com/users/bstaletic/orgs","repos_url":"https://api.github.com/users/bstaletic/repos","events_url":"https://api.github.com/users/bstaletic/events{/privacy}","received_events_url":"https://api.github.com/users/bstaletic/received_events","type":"User","site_admin":false},"created_at":"2018-04-08T07:13:47Z","updated_at":"2018-04-08T07:13:47Z","author_association":"COLLABORATOR","body":"Big thank you to @jagerman, who has fixed the tests and also significantly improved performance with pybind11.\n\nThe tests are passing as far as I can tell (appveyor has not yet finished).\n\n@micbou's profiling script on my laptop says the following:\n\nBindings library|Python2 GCC | Python3 GCC | Python2 Clang | Python3 Clang\n--------------------------|------------------|---|---|---\nboost::python|99ms|43ms|95ms|40ms\npybind11|36ms|36ms|35ms|30ms\n\nI'm going to mark this as `[READY]`.\n\n---\n\nReview status: 39 of 46 files reviewed at latest revision, 3 unresolved discussions.\n\n---\n\n\n\n*Comments from [Reviewable](https://beta.reviewable.io/reviews/valloric/ycmd/925#-:-L9Ywusc0rsiwEkFhQv3:b-xfdnds)*\n<!-- Sent from Reviewable.io -->\n"}}
{"actor":{"display_login":"bstaletic"}}