- Better macro hygiene (e.g. for better support in Pluto.jl)
- (breaking) Support for proper Julia scoping of variables inside of resumable functions.
- Add
length
support by allowing@resumable length=ex function [...]
- Adjust to an internal changes in Julia 1.12 (see julia#54341).
- Self-referencing functionals (callable structs) are now supported as resumable functions, e.g.
@resumable (f::A)() @yield f.property end
.
- Redeploy the improved performance from v0.6.6 without the issues that caused them to be reverted in v0.6.7. The issue stemmed from lack of support for recursive resumable functions in the v0.6.6 improvements.
- Significant additions to the CI and testing of the package to avoid such issues in the future.
- Fix stack overflow errors by reverting the changes introduced in v0.6.6.
- Significantly improved performance on Julia 1.10 and newer by more precise inference of slot types.
- Fix to a performance regression originally introduced by
@yieldfrom
.
- Docstrings now work with
@resumable
functions. - Generated types in
@resumable
functions have clearer names for better debugging. - Line-number nodes are preserved in
@resumable
functions for better debugging and code coverage.
-
2023: v0.6.3
- Julia 1.6 or newer is required
- introduction of
@yieldfrom
to delegate to another resumable function or iterator (similar to Python'syield from
) - resumable functions are now allowed to return values, so that
r = @yieldfrom f
also stores the return value off
inr
-
2023: v0.6.2
- Julia v1.10 compatibility fix
- resumable functions can now dispatch on types
-
2021: v0.6.1
continue
in loop works
-
2021: v0.6.0
- introduction of
@nosave
to keep a variable out of the saved structure. - optimized
for
loop.
- introduction of
-
2020: v0.5.2 is Julia v1.6 compatible.
-
2019: v0.5.1
- inference problem solved: force iterator next value to be of type
Union
ofTuple
andNothing
.
- inference problem solved: force iterator next value to be of type
-
2019: v0.5.0 is Julia v1.2 compatible.
-
2018: v0.4.2 prepare for Julia v1.1
- better inference caused a problem;).
- iterator with a specified
rtype
is fixed.
-
2018: v0.4.0 is Julia v1.0 compatible.
-
2018: v0.3.1 uses the new iteration protocol.
- the new iteration protocol is used for a
@resumable function
based iterator. - the
for
loop transformation implements also the new iteration protocol.
- the new iteration protocol is used for a
-
2018: v0.3 is Julia v0.7 compatible.
- introduction of
let
block to allow variables not te be persisted between@resumable function
calls (EXPERIMENTAL). - the
eltype
of a@resumable function
based iterator is its return type if specified, otherwiseAny
.
- introduction of
-
2018: v0.2 the iterator now behaves as a Python generator: only values that are explicitly yielded are generated; the return value is ignored and a warning is generated.
-
2017: v0.1 initial release that is Julia v0.6 compatible:
- Introduction of the
@resumable
and the@yield
macros. - A
@resumable function
generates a type that implements the iterator interface. - Parametric
@resumable functions
are supported.
- Introduction of the