{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/30534","repository_url":"https://api.github.com/repos/JuliaLang/julia","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/30534/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/30534/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/30534/events","html_url":"https://github.com/JuliaLang/julia/pull/30534","id":394856691,"node_id":"MDExOlB1bGxSZXF1ZXN0MjQxNDgxODcz","number":30534,"title":"Add an option to build without libuv","user":{"login":"Keno","id":1291671,"node_id":"MDQ6VXNlcjEyOTE2NzE=","avatar_url":"https://avatars1.githubusercontent.com/u/1291671?v=4","gravatar_id":"","url":"https://api.github.com/users/Keno","html_url":"https://github.com/Keno","followers_url":"https://api.github.com/users/Keno/followers","following_url":"https://api.github.com/users/Keno/following{/other_user}","gists_url":"https://api.github.com/users/Keno/gists{/gist_id}","starred_url":"https://api.github.com/users/Keno/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keno/subscriptions","organizations_url":"https://api.github.com/users/Keno/orgs","repos_url":"https://api.github.com/users/Keno/repos","events_url":"https://api.github.com/users/Keno/events{/privacy}","received_events_url":"https://api.github.com/users/Keno/received_events","type":"User","site_admin":false},"labels":[{"id":32110827,"node_id":"MDU6TGFiZWwzMjExMDgyNw==","url":"https://api.github.com/repos/JuliaLang/julia/labels/I/O","name":"I/O","color":"baff00","default":false},{"id":210703,"node_id":"MDU6TGFiZWwyMTA3MDM=","url":"https://api.github.com/repos/JuliaLang/julia/labels/build","name":"build","color":"444444","default":false},{"id":1174913692,"node_id":"MDU6TGFiZWwxMTc0OTEzNjky","url":"https://api.github.com/repos/JuliaLang/julia/labels/wasm","name":"wasm","color":"7ff27b","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2018-12-30T08:48:59Z","updated_at":"2019-01-04T19:50:59Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/30534","html_url":"https://github.com/JuliaLang/julia/pull/30534","diff_url":"https://github.com/JuliaLang/julia/pull/30534.diff","patch_url":"https://github.com/JuliaLang/julia/pull/30534.patch"},"body":"There is increasing interest in running Julia in environments where\r\nlibuv is not available (JSVM, baremetal library OSes, etc). This adds\r\na make file option to disable building libuv entirely and fixes up\r\nthe bootstrap process to go through despite libuv not being available.\r\nThere is of course a question of whether instead of this it makes sense\r\nto just port libuv to those platforms, but I suspect the answer is no,\r\nbecause the most core part of libuv (async sockets, the event loop,\r\nspawning processes), must either have a completely different implementation\r\nor is unavailable entirely. Particularly for JSVM it is also unlikely\r\nthat libuv upstream is particularly interested, because JavaScript already\r\nruns natively in JSVM. One slightly weird part is that these platforms\r\ndo generally implement POSIX where possible, so in a number of instances,\r\nI had to replace the libuv calls (which wrap POSIX calls on non-Windows\r\nplatforms) by the corresponding POSIX calls.\r\n\r\nLong term I see a few options:\r\n - Expand libuv support for these new platforms\r\n - Seperate libuv into two libraries, one for async IO, process spawning, event\r\n   loop etc, and one for the POSIX-compat layer on Windows.\r\n - Use POSIX calls everywhere on platforms that support it and use libuv\r\n   for windows support where necessary (since windows does also implement\r\n   POSIX for some things).\r\n\r\nHowever, until then, this build flag is useful as a basis for rebuilding\r\nthese abstraction on top of the JSVM APIs and for simplifying boostrap\r\non other platforms. However, I don't envision this to be a supported or\r\ntested configuration on platforms where libuv is otherwise available."},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/451550121","html_url":"https://github.com/JuliaLang/julia/pull/30534#issuecomment-451550121","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/30534","id":451550121,"node_id":"MDEyOklzc3VlQ29tbWVudDQ1MTU1MDEyMQ==","user":{"login":"Keno","id":1291671,"node_id":"MDQ6VXNlcjEyOTE2NzE=","avatar_url":"https://avatars1.githubusercontent.com/u/1291671?v=4","gravatar_id":"","url":"https://api.github.com/users/Keno","html_url":"https://github.com/Keno","followers_url":"https://api.github.com/users/Keno/followers","following_url":"https://api.github.com/users/Keno/following{/other_user}","gists_url":"https://api.github.com/users/Keno/gists{/gist_id}","starred_url":"https://api.github.com/users/Keno/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Keno/subscriptions","organizations_url":"https://api.github.com/users/Keno/orgs","repos_url":"https://api.github.com/users/Keno/repos","events_url":"https://api.github.com/users/Keno/events{/privacy}","received_events_url":"https://api.github.com/users/Keno/received_events","type":"User","site_admin":false},"created_at":"2019-01-04T19:50:59Z","updated_at":"2019-01-04T19:50:59Z","author_association":"MEMBER","body":"Looking into this some more, it looks like Go just doesn't use the webassembly stack and instead spills everything into its own explicitly managed linear stack. That's a possibility I suppose, but I don't know if LLVM can emit that for us."}}
{"actor":{"display_login":"Keno"}}