This is a history of changes to k13labs/futurama
- replace uses of instance-satisfies? with clojure.core/satisfies?.
- 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