{"action":"created","issue":{"url":"https://api.github.com/repos/root-project/root/issues/1547","repository_url":"https://api.github.com/repos/root-project/root","labels_url":"https://api.github.com/repos/root-project/root/issues/1547/labels{/name}","comments_url":"https://api.github.com/repos/root-project/root/issues/1547/comments","events_url":"https://api.github.com/repos/root-project/root/issues/1547/events","html_url":"https://github.com/root-project/root/pull/1547","id":290615614,"number":1547,"title":"Autoload canonical namespaces","user":{"login":"vgvassilev","id":6516307,"avatar_url":"https://avatars1.githubusercontent.com/u/6516307?v=4","gravatar_id":"","url":"https://api.github.com/users/vgvassilev","html_url":"https://github.com/vgvassilev","followers_url":"https://api.github.com/users/vgvassilev/followers","following_url":"https://api.github.com/users/vgvassilev/following{/other_user}","gists_url":"https://api.github.com/users/vgvassilev/gists{/gist_id}","starred_url":"https://api.github.com/users/vgvassilev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vgvassilev/subscriptions","organizations_url":"https://api.github.com/users/vgvassilev/orgs","repos_url":"https://api.github.com/users/vgvassilev/repos","events_url":"https://api.github.com/users/vgvassilev/events{/privacy}","received_events_url":"https://api.github.com/users/vgvassilev/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"vgvassilev","id":6516307,"avatar_url":"https://avatars1.githubusercontent.com/u/6516307?v=4","gravatar_id":"","url":"https://api.github.com/users/vgvassilev","html_url":"https://github.com/vgvassilev","followers_url":"https://api.github.com/users/vgvassilev/followers","following_url":"https://api.github.com/users/vgvassilev/following{/other_user}","gists_url":"https://api.github.com/users/vgvassilev/gists{/gist_id}","starred_url":"https://api.github.com/users/vgvassilev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vgvassilev/subscriptions","organizations_url":"https://api.github.com/users/vgvassilev/orgs","repos_url":"https://api.github.com/users/vgvassilev/repos","events_url":"https://api.github.com/users/vgvassilev/events{/privacy}","received_events_url":"https://api.github.com/users/vgvassilev/received_events","type":"User","site_admin":false},"assignees":[{"login":"vgvassilev","id":6516307,"avatar_url":"https://avatars1.githubusercontent.com/u/6516307?v=4","gravatar_id":"","url":"https://api.github.com/users/vgvassilev","html_url":"https://github.com/vgvassilev","followers_url":"https://api.github.com/users/vgvassilev/followers","following_url":"https://api.github.com/users/vgvassilev/following{/other_user}","gists_url":"https://api.github.com/users/vgvassilev/gists{/gist_id}","starred_url":"https://api.github.com/users/vgvassilev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vgvassilev/subscriptions","organizations_url":"https://api.github.com/users/vgvassilev/orgs","repos_url":"https://api.github.com/users/vgvassilev/repos","events_url":"https://api.github.com/users/vgvassilev/events{/privacy}","received_events_url":"https://api.github.com/users/vgvassilev/received_events","type":"User","site_admin":false}],"milestone":null,"comments":111,"created_at":"2018-01-22T21:08:17Z","updated_at":"2018-04-28T07:54:13Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/root-project/root/pulls/1547","html_url":"https://github.com/root-project/root/pull/1547","diff_url":"https://github.com/root-project/root/pull/1547.diff","patch_url":"https://github.com/root-project/root/pull/1547.patch"},"body":"ROOT injects forward declarations of entities as trampolines to resolve the full definitions and load the corresponding library. This allows the ROOT users to 'just' type a name and the interpreter will resolve its definition and dlopen the library describing it.\r\n\r\nThere is a well-known (not well understood until now) limitation with this system: we cannot load entities in namespaces. Namely, if we type `ROOT::TDF::TDataFrame;` the system won't be able to resolve it. This is because we enable the system to load only the contents of namespaces from the forward declarations. For example,\r\n```cpp\r\n// rootmap file\r\nnamespace ROOT{ namespace Experimental { class TDataFrame; } } // #1\r\n\r\n// real code\r\nnamespace ROOT{ namespace Experimental { class TDataFrame {}; } } // #2\r\n\r\n[root] ROOT::Experimental::TDataFrame d; // #3\r\n```\r\n`#1` is piped at root/interpreter start up; we find the DeclContext and flag it. `#3` triggers a lookup and `#includes #2`. The problem is that we do not issue a lookup in `#2`. The effect is that we practically cannot autoload entities from namespaces.\r\n\r\nTurning it 'just' on breaks performance and starts loading irrelevant libraries. This is because clang eagerly deserializes template specialization declarations for the decl context in question when computing linkage information in CodeGen.\r\n\r\nAll heavy lifting is done in [D41416](https://reviews.llvm.org/D41416) and landed in e51a2b9de4. It enables finer-grained template specialization deserialization removing the effect of loading irrelevant libraries. The performance impact will be seen shortly after we land this PR.\r\n"},"comment":{"url":"https://api.github.com/repos/root-project/root/issues/comments/385150530","html_url":"https://github.com/root-project/root/pull/1547#issuecomment-385150530","issue_url":"https://api.github.com/repos/root-project/root/issues/1547","id":385150530,"user":{"login":"phsft-bot","id":25639015,"avatar_url":"https://avatars1.githubusercontent.com/u/25639015?v=4","gravatar_id":"","url":"https://api.github.com/users/phsft-bot","html_url":"https://github.com/phsft-bot","followers_url":"https://api.github.com/users/phsft-bot/followers","following_url":"https://api.github.com/users/phsft-bot/following{/other_user}","gists_url":"https://api.github.com/users/phsft-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/phsft-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phsft-bot/subscriptions","organizations_url":"https://api.github.com/users/phsft-bot/orgs","repos_url":"https://api.github.com/users/phsft-bot/repos","events_url":"https://api.github.com/users/phsft-bot/events{/privacy}","received_events_url":"https://api.github.com/users/phsft-bot/received_events","type":"User","site_admin":false},"created_at":"2018-04-28T07:54:12Z","updated_at":"2018-04-28T07:54:12Z","author_association":"COLLABORATOR","body":"Build failed on mac1013/native.\n[See console output](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/console).\n### Warnings:\n- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tree:1819:22: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings] \n- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tree:1819:22: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings] \n- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__tree:1819:22: warning: the specified comparator type does not provide a const call operator [-Wuser-defined-warnings] \n\n### Failing tests:\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_dataframe_alias](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_dataframe_alias/)\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_dataframe_friends](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_dataframe_friends/)\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_dataframe_cache](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_dataframe_cache/)\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_dataframe_regression](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_dataframe_regression/)\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_dataframe_leaves](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_dataframe_leaves/)\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_dataframe_vecops](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_dataframe_vecops/)\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_datasource_more](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_datasource_more/)\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_datasource_root](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_datasource_root/)\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_datasource_trivial](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_datasource_trivial/)\n- [projectroot.tree.treeplayer.test.gtest_tree_treeplayer_test_datasource_csv](https://epsft-jenkins.cern.ch/job/root-pullrequests-build/23806/testReport/projectroot.tree.treeplayer/test/gtest_tree_treeplayer_test_datasource_csv/)\n\nAnd 2 more\n"}}
{"actor":{"display_login":"phsft-bot"}}