{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/8745","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/8745/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/8745/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/8745/events","html_url":"https://github.com/JuliaLang/julia/pull/8745","id":46349288,"number":8745,"title":"WIP: static compile part 4 (user-interface)","user":{"login":"vtjnash","id":330950,"avatar_url":"https://avatars.githubusercontent.com/u/330950?v=3","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":"open","locked":false,"assignee":null,"milestone":null,"comments":77,"created_at":"2014-10-21T02:50:47Z","updated_at":"2015-05-13T01:17:17Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/8745","html_url":"https://github.com/JuliaLang/julia/pull/8745","diff_url":"https://github.com/JuliaLang/julia/pull/8745.diff","patch_url":"https://github.com/JuliaLang/julia/pull/8745.patch"},"body":"(continuation of #8656 – as I make progress towards incremental module compilation, I'll push the code to this branch for comments and API discussion)\r\n\r\nsince Julia already has a strong tradition that file != module, I think the primary implementation of this needs to embrace that and use a `*.jlc` file independent of the filesystem. this unifies the behavior `using` and everything in `Base` across restarts. Therefore, a session could look something like the following:\r\n\r\n```\r\njulia> using A\r\nnote: cache file ~/.julia/v0.4/.lib/A.jlc cannot be used with this Julia image, ignoring file\r\nnote: regenerating cache file for module A with code from /home/user/.julia/v0.4/A/src/A.jl\r\n\r\njulia> using B\r\nnote: cache file ~/.julia/v0.4/.lib/B.jlc cannot be used with this Julia image, ignoring file\r\nnote: could not find `B.jl` in PATH to satisfy requested module dependency\r\nERROR: B not found\r\n in require at ./loading.jl:49\r\n in require at /Volumes/Lion/Users/jameson/Documents/julia/usr/lib/julia/sys.dylib\r\n\r\njulia> using C\r\nnote: regenerating cache file for module C with code from /home/user/.julia/v0.4/C/src/C.jl\r\n\r\njulia> using D\r\nnote: could not find `D.jl` in PATH to satisfy requested module dependency\r\nERROR: B not found\r\n in require at ./loading.jl:49\r\n in require at /Volumes/Lion/Users/jameson/Documents/julia/usr/lib/julia/sys.dylib\r\n\r\njulia> using D # this one is already in the session\r\n\r\njulia> using E # this one is already in the cache (`~/.julia/v0.4/E.jlc`)\r\n\r\njulia>\r\n```\r\n\r\nAnd invoking the cache file engine would look something like the following:\r\n```julia\r\n$ ./julia -f --build $HOME/.julia/v$(cut -d . -f 1,2 VERSION)\\\r\n    -J sys.ji -L LOAD_PATH.jl\r\n    ~/.julia/v0.4/FixedPointNumbers/src/FixedPointNumbers.jl\r\n```\r\nor via stdin:\r\n```julia\r\n$ ./julia -f --build $HOME/.julia/v$(cut -d . -f 1,2 VERSION)\\\r\n    -J sys.ji -\r\nempty!(LOAD_PATH)\r\npush!(LOAD_PATH, \"path1\")\r\npush!(LOAD_PATH, \"path2\")\r\ninclude(\"~/.julia/v0.4/FixedPointNumbers/src/FixedPointNumbers.jl\")\r\n^D\r\n```\r\n\r\nany logic to handle dependencies differently would be handled externally, e.g. https://github.com/malmaud/Autoreload.jl"},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/101475035","html_url":"https://github.com/JuliaLang/julia/pull/8745#issuecomment-101475035","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/8745","id":101475035,"user":{"login":"timholy","id":1525481,"avatar_url":"https://avatars.githubusercontent.com/u/1525481?v=3","gravatar_id":"","url":"https://api.github.com/users/timholy","html_url":"https://github.com/timholy","followers_url":"https://api.github.com/users/timholy/followers","following_url":"https://api.github.com/users/timholy/following{/other_user}","gists_url":"https://api.github.com/users/timholy/gists{/gist_id}","starred_url":"https://api.github.com/users/timholy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timholy/subscriptions","organizations_url":"https://api.github.com/users/timholy/orgs","repos_url":"https://api.github.com/users/timholy/repos","events_url":"https://api.github.com/users/timholy/events{/privacy}","received_events_url":"https://api.github.com/users/timholy/received_events","type":"User","site_admin":false},"created_at":"2015-05-13T01:17:17Z","updated_at":"2015-05-13T01:17:17Z","body":"Sounds good; I was wondering about rebasing this myself, but you'd be much better at that than me.\r\n\r\nTime permitting I'm going to look into a few of the blockers for this---really excited to get this merged, and now that I've gone as far as I can on array-related stuff this has risen to the top of my priority list.\r\n"}}