This is a history of changes to k13labs/futurama
- replace uses of Reify with JavaFunction and JavaBiConsumer types
- upgrade clojure version to 1.11.4
- upgrade clojure version to 1.11.2
- minimize use of weak references, only pushing one to the global state when an async item is cancelled
- synchronize global state for cancellations using a reentrant readwrite lock instead of default lock
- enhance reader and writer impl to better support nested async values
- shorten class names for async reader and rethrow fns used inside macro
- separate ReadPort and WritePort impl into its own namespace
- initial major release of library with updated protocols impl and same API
- fix not calling realized? when not IPending
- fix arity problem with async-reduce reducer
- change default thread pool to ForkJoinPool/commonPool
- Create <! <!! and <!* version of take macros which do not recursive read.
- Only !<!, !<!! and !<!* explicitly recursive read from channels now, to optimize things.
- Simplified ReadPort implementations so they do not recursive read, only specific macros do that now.
- Simplify reading macros !<! and !<!! using new AsyncReader type
- Refactor async reader functions into util reusable reading fn
- Add
async-cancellable?
fn to easily test if something can be cancelled
- Change default async output to channel of size 1 to more easily support async merge and other ops
- Add purpose-built
async-future
and async-deferred
macros to more easily create either.
- Add some no-doc tags to extra namespaces
- Rename
cancel!
and cancelled?
to async-cancel!
and async-cancelled?
- Add custom state to keep track of async items
- Add custom cancel strategy which combines bound state, global weak state, and custom protocol impl
- Add
fixed-threadpool
method to create a FixedThreadPool - The default
*thread-pool*
is now a FixedThreadPool which can be interrupted. - Allow
async
to be interrupted just like completable-future
, add tests.
- Add support for
Future
and IDeref
. - Rename and refactor internal
satisfies?
to instance-satisfies?
and class-satisfies?
- Add collection helpers for:
async-reduce
, async-some
, async-every?
, async-walk/prewalk/postwalk
- Refactored
async-for
so it uses less async macros and it is more flexible - Refactored
async-map
so it leverages async-for
behind the scenes. - Removed
async-some
and async-every?
and instead added some new helpers. - Added
async->
and async->>
threading macros to make it easier to thread async. - Replaced matching on Exception to Throwable to avoid leaving hanging promises due to errors.
- Add more async collection fns:
async-map
, async-some
, async-every?
- Simplify
async-for
by just executing each iteration inside an async block and then collect after
- Add
async-for
comprehension which implicitly runs inside an async block
- Ensure Deferred is handled correctly on put! when realized
- Add new
async?
helper function which is useful
- Add better identity-like raw value handling for
!<!
and !<!!
- Update exception handling to better deal with ExecutionException and CompletionException
- Add support for Manifold Deferred