-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Completely Refactor #179
base: main
Are you sure you want to change the base?
Completely Refactor #179
Conversation
I've been thinking a bit further about this, and I wonder whether we ought just to use the new e.g. if we add a variable to const task_cache = ScopedValue{Any}(nothing) # maybe change types for stability then the implementation of function consume(t::TapedTask)
with(task_cache => t.cache) do
return t.mc(t.args...)
end
end Then if you want to use something stored in the edit: this feature only officially landed in Julia 1.11, but this is based on an implementation which supports 1.8+, so we should be able to use one or the other selectively. edit2: alternatively, we only apply the upgrade in this PR to 1.11 and up. |
Status Update: nested calls now basically work, I just need to tidy up the implementation a bit. I've also tidied up the whole implementation and documented it much more thoroughly. There's more that needs doing, but it's almost at he point that we can try and get it to work with AdvancedPS + Turing, to make sure that we do indeed have all of the features that we think we need. |
Per #177 this is an attempt to significantly refactor the internals for robustness.
Todo:
task
field of aTapedTask
ought actually to be part of the public interface -- issue to discussion open at Accessingtask
field of Libtask TapedTask AdvancedPS.jl#113PhiNode
s are handled more thoroughly (include a worked example)Linked Issues:
task
field of Libtask TapedTask AdvancedPS.jl#113Closes #165
Closes #167
Closes #171
Closes #176