{"action":"created","issue":{"url":"https://api.github.com/repos/kripken/emscripten/issues/3308","labels_url":"https://api.github.com/repos/kripken/emscripten/issues/3308/labels{/name}","comments_url":"https://api.github.com/repos/kripken/emscripten/issues/3308/comments","events_url":"https://api.github.com/repos/kripken/emscripten/issues/3308/events","html_url":"https://github.com/kripken/emscripten/pull/3308","id":66393389,"number":3308,"title":"Split libcxx into two parts","user":{"login":"gagern","id":190759,"avatar_url":"https://avatars.githubusercontent.com/u/190759?v=3","gravatar_id":"","url":"https://api.github.com/users/gagern","html_url":"https://github.com/gagern","followers_url":"https://api.github.com/users/gagern/followers","following_url":"https://api.github.com/users/gagern/following{/other_user}","gists_url":"https://api.github.com/users/gagern/gists{/gist_id}","starred_url":"https://api.github.com/users/gagern/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gagern/subscriptions","organizations_url":"https://api.github.com/users/gagern/orgs","repos_url":"https://api.github.com/users/gagern/repos","events_url":"https://api.github.com/users/gagern/events{/privacy}","received_events_url":"https://api.github.com/users/gagern/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-04-05T02:48:58Z","updated_at":"2015-04-07T06:41:36Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/kripken/emscripten/pulls/3308","html_url":"https://github.com/kripken/emscripten/pull/3308","diff_url":"https://github.com/kripken/emscripten/pull/3308.diff","patch_url":"https://github.com/kripken/emscripten/pull/3308.patch"},"body":"This is for ticket #2545, an attempt to reduce resulting file size for simple C++ programs.\r\n\r\nThe I/O subsystem, including locale management, accounts for a large portion of the resulting file size.  On the other hand, many projects will make little to no use of console text I/O or stringstream formatting.  Those projects can now benefit from the fact that they can omit one of the two parts, thereby massively decreasing the size of the generated code.\r\n\r\nI checked that according to `ld -r` the files contained in the “slim” part had no unresolved dependencies on the “ios” part, so the cut is assumed to be clean."},"comment":{"url":"https://api.github.com/repos/kripken/emscripten/issues/comments/90398301","html_url":"https://github.com/kripken/emscripten/pull/3308#issuecomment-90398301","issue_url":"https://api.github.com/repos/kripken/emscripten/issues/3308","id":90398301,"user":{"login":"gagern","id":190759,"avatar_url":"https://avatars.githubusercontent.com/u/190759?v=3","gravatar_id":"","url":"https://api.github.com/users/gagern","html_url":"https://github.com/gagern","followers_url":"https://api.github.com/users/gagern/followers","following_url":"https://api.github.com/users/gagern/following{/other_user}","gists_url":"https://api.github.com/users/gagern/gists{/gist_id}","starred_url":"https://api.github.com/users/gagern/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gagern/subscriptions","organizations_url":"https://api.github.com/users/gagern/orgs","repos_url":"https://api.github.com/users/gagern/repos","events_url":"https://api.github.com/users/gagern/events{/privacy}","received_events_url":"https://api.github.com/users/gagern/received_events","type":"User","site_admin":false},"created_at":"2015-04-07T06:41:36Z","updated_at":"2015-04-07T06:41:36Z","body":"That `.a` library approach sounds interesting, though I'd have to see it in action before I trust that it does the right thing regarding `ios_base::Init::Init()`. And it still would initialize the locale eagerly, so most of the code would be included the moment someone uses any stream at all.\r\n\r\nBasic `vector` usage only pulls in locale support because it pulls in the library with its global constructor call. There is nothing specific to `vector` here except for the fact that the ios part of the library apparently uses `vector`, which is fine, and the fact that for some reason that one vector symbol is actually resolved using the ios library instead of the current translation unit, which I still don't understand."}}