{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/13099","repository_url":"https://api.github.com/repos/JuliaLang/julia","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/13099/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/13099/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/13099/events","html_url":"https://github.com/JuliaLang/julia/pull/13099","id":106195862,"node_id":"MDExOlB1bGxSZXF1ZXN0NDQ4NjU1NTA=","number":13099,"title":"no-copy stacks","user":{"login":"vtjnash","id":330950,"node_id":"MDQ6VXNlcjMzMDk1MA==","avatar_url":"https://avatars1.githubusercontent.com/u/330950?v=4","gravatar_id":"","url":"https://api.github.com/users/vtjnash","html_url":"https://github.com/vtjnash","followers_url":"https://api.github.com/users/vtjnash/followers","following_url":"https://api.github.com/users/vtjnash/following{/other_user}","gists_url":"https://api.github.com/users/vtjnash/gists{/gist_id}","starred_url":"https://api.github.com/users/vtjnash/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vtjnash/subscriptions","organizations_url":"https://api.github.com/users/vtjnash/orgs","repos_url":"https://api.github.com/users/vtjnash/repos","events_url":"https://api.github.com/users/vtjnash/events{/privacy}","received_events_url":"https://api.github.com/users/vtjnash/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":38,"created_at":"2015-09-13T02:34:28Z","updated_at":"2018-10-09T20:37:41Z","closed_at":"2018-10-02T12:41:42Z","author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/13099","html_url":"https://github.com/JuliaLang/julia/pull/13099","diff_url":"https://github.com/JuliaLang/julia/pull/13099.diff","patch_url":"https://github.com/JuliaLang/julia/pull/13099.patch"},"body":"~~this is a experimental exploration of the ramifications of the restoration of the `!COPY_STACKS` makefile option, for discussion and analysis.~~\n\n~~this changes thread state to be a unw_context_t instead of a jmp_buf. this would allow unwinding a moved stack (for temporary inspection / remote backtrace of an arbitrary task). however, this increases the size of a jl_task_t object, so I'm not sure this is worthwhile. plus, while it still shouldn't need to do a sigprocmask syscall, it still requires more code to do the context switch. it might be better to figure out how to just make due with the current~~\n\n~~this change removes all of the inline assembly code from this file, which is good for portability.~~\n\nthis change also makes it possible / makes use of the possibility of having more than 1 stack, but fewer than N (where N is the number of Tasks that have ever been created). This removes the need to guess jl_stackbase in julia_init and would makes it possible to create additional tasks with a \"permanent\" stack (for example, for better C-interop with the Gtk event loop to solve https://github.com/JuliaLang/Gtk.jl/issues/161), without needing to reserve a new stack for every Task. I believe this change may be beneficial for embedding julia into other contexts (not just Gtk), where modifying the primary stack may be undesirable. plus, since it allows julia_init to be called from anywhere, it may be easier to call it via an FFI (which might not be particularly near the top of the stack) or from the static initializer for a dll.\n\ni have compiled this, with and without !COPY_STACKS, on Ubuntu, Apple, and Windows (all x86_64). I don't have any more exotic machines like FreeBSD to test on, nor have I tried it on ARM or PPC yet.\n\nping @JeffBezanson @carnaval \n"},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/428342521","html_url":"https://github.com/JuliaLang/julia/pull/13099#issuecomment-428342521","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/13099","id":428342521,"node_id":"MDEyOklzc3VlQ29tbWVudDQyODM0MjUyMQ==","user":{"login":"StefanKarpinski","id":153596,"node_id":"MDQ6VXNlcjE1MzU5Ng==","avatar_url":"https://avatars2.githubusercontent.com/u/153596?v=4","gravatar_id":"","url":"https://api.github.com/users/StefanKarpinski","html_url":"https://github.com/StefanKarpinski","followers_url":"https://api.github.com/users/StefanKarpinski/followers","following_url":"https://api.github.com/users/StefanKarpinski/following{/other_user}","gists_url":"https://api.github.com/users/StefanKarpinski/gists{/gist_id}","starred_url":"https://api.github.com/users/StefanKarpinski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/StefanKarpinski/subscriptions","organizations_url":"https://api.github.com/users/StefanKarpinski/orgs","repos_url":"https://api.github.com/users/StefanKarpinski/repos","events_url":"https://api.github.com/users/StefanKarpinski/events{/privacy}","received_events_url":"https://api.github.com/users/StefanKarpinski/received_events","type":"User","site_admin":false},"created_at":"2018-10-09T20:37:41Z","updated_at":"2018-10-09T20:37:41Z","author_association":"MEMBER","body":"Running inference on its own large stack combined with static analysis of how much stack space a task could potentially need could potentially allow allocating very small \"stack\" objects. I'm not sure how common tasks where the maximum stack size is statically knowable would actually turn out to be."}}
{"actor":{"display_login":"StefanKarpinski"}}