Releases: TuringLang/Libtask.jl
v0.9.10
v0.9.9
Libtask v0.9.9
Remove manual opaque closure optimisation functions in favour of setting the world age and letting the compiler do more work for us, and providing it with some more type information. This changes no functionality, and shouldn't change performance either, but simplifies code.
Merged pull requests:
v0.9.8
Libtask v0.9.8
Enables built docs for the current release version of Libtask.
Merged pull requests:
- Close triple backticks in
@might_producedocstring + fix docs CI (#206) (@penelopeysm)
Closed issues:
- Turing.jl model errors with "basic block does not dominate" (#200)
v0.9.7
Libtask v0.9.7
Fix a concurrency bug, where Libtask would sometimes crash with a "Multiple concurrent writes to Dict detected!" error when TapedTasks were being executed concurrently.
Merged pull requests:
Closed issues:
- Writing to
mc_cacheis not thread-safe (#202)
v0.9.6
Libtask v0.9.6
Add support for Julia v1.12.
Merged pull requests:
Closed issues:
- Supporting functions with keyword arguments (#197)
v0.9.5
Libtask v0.9.5
Added a new Libtask.@might_produce macro, which generates a superset of the Libtask.might_produce methods needed for a function f that might contain a call to Libtask.produce. For example, for a function
function f(x::Int, y::Int)
produce(x + y)
endinstead of writing
Libtask.might_produce(::Type{<:Tuple{typeof(f),Int,Int}}) = trueyou can just write
Libtask.@might_produce(f)The main benefit of this is that it applies to functions with multiple methods and keyword arguments. The drawback is performance: marking all methods of f as produceable may lead to performance degradation if there are some methods of f which do not need to be thus marked. In such cases, you should use the might_produce function directly.
Merged pull requests:
- Add
@might_producemacro (#198) (@penelopeysm)
v0.9.4
Libtask v0.9.4
Merged pull requests:
v0.9.3
v0.9.2
v0.9.1
Libtask v0.9.1
Merged pull requests: