Releases: foldright/cffu
v1.0.0-Alpha29 🦝 🏗️
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development tries to keep the compatibility for main API.
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
🛠 Refactor/Improvements
- extract
LLCF
(Low Level CompletableFuture Utils) fromCFU
🏗️ - split
cffu-listenable-future
module fromcffu-core
📦 - add
@ApiStatus.OverrideOnly
for SPIExecutorWrapperProvider
🚜 Build/Chore
- upgrade dependencies/plugins 🛠️
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha29/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha29</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha29</version>
<scope>runtime</scope>
</dependency>
v1.0.0-Alpha28 🦝 👁️🗨️
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development tries to keep the compatibility for main API.
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
🐞 Bug Fixes
- add missing
requires
directives tomodule-info.java
📦
🛠 Refactor/Improvements
- refactor(
DelayExecutionHelpers.java
): review the codes by reference toCompletableFuture
, and cleanup 🧹
🧪 Tests
- test(
Cffu
): addCheckMinStageRuntimeTypeTests
forCffuFactory
/Cffu
👁️🗨️ - test(CI): test usage
ThreadPerTaskExecutor
as screen executor ofCompletableFuture
🚜 Build/Chore
- upgrade dependencies/plugins 🛠️
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha28/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha28</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha28</version>
<scope>runtime</scope>
</dependency>
v1.0.0-Alpha27 🦝 📚
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development tries to keep the compatibility for main API.
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
🛠 Refactor/Improvements
- refactor(
CFU
): simplify thescreenExecutor
translation logic, and add Implementation Note 🧵
📚 Documentation
- add
LambdaCompilationErrorSolutionOfMultipleActionsMethodsDemo
👨🏫 - revise api docs 📚 💕
- reword and simplify the api docs of
M*
/thenM*
methods, link to their*Of
methods - add the solution to compilation error caused by lambda arguments 🚨
- reword the api doc of methods
mostSuccessResultsOf
- add the equivalent Guava method links 💕
allFailFastOf
->Futures#whenAllSucceed
allOf
->Futures#whenAllComplete
- reword and simplify the api docs of
🚜 Build/Chore
- upgrade dependencies/plugins 🛠️
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha27/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha27</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha27</version>
<scope>runtime</scope>
</dependency>
v1.0.0-Alpha26 🦝 💕
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development tries to keep the compatibility for main API.
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
🛠 Refactor/Improvements
- fix(
CFU
): convert executor forasync
operations byscreenExecutor
fortimeout*
methods, consistent withCF
🧵
🧪 Tests
- add
ListenableFutureUsageStudyCaseTest
👨🏫
📚 Documentation
revise api docs:
- reword api docs of methods 💕
all*Of
methodsany*Of
methodstimeout*
methods
- fix wrong exception description of
AnySuccess
methods - unify term usage
- use
complete normally
instead ofcomplete successfully
/is successful
/do not success
, etc.
- use
- remove uninformative/duplicate words
- duplicate
@return
to javadoc body, etc
- duplicate
- fix wording,
multiply
->multiple
🔠
🚜 Build/Chore
- chore(deps): bump org.jetbrains:annotations from 26.0.0 to 26.0.1 (#262)
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha26/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha26</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha26</version>
<scope>runtime</scope>
</dependency>
v1.0.0-Alpha25 🦝 ⚛️
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development tries to keep the compatibility for main API.
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
☘️ Features
- [
cffu-kotlin
] add new kotlin extension methods 🍩CompletableFutureExtensions.kt
M*
extension methodsallSuccess*
extension methodsdefaultExecutor
extension method
CffuExtensions.kt
M*
extension methodsallSuccess*
extension methods
🛠 Refactor/Improvements
⚠️ rename methods: use termfail fast
instead offast fail
⚛️ (by @linzee1)⚠️ renameTuple-Multi-Actions(tupleM*)
methods 🌟- make their naming more consistant with
all*Of
methods
- make their naming more consistant with
- fix(
CFU
): convert executor forasync
operations byscreenExecutor()
, consistent withCF
🧵 - refactor(
CFU
):allResultsFastFailOf
/allResultsOf
both call internal methodallResultsOf0
, simpler and more consistent 🌟 - refactor: update generic parameters of methods 🧬
join/resultNow
methods ofCFU
- add covariance to express the only use as input
join/resultNow/orTimeout*
methods ofCompletableFutureExtensions.kt
- make
orTimeout*
generic parameters consistent withCFU
- make
- refactor(
CFU
): extract internal array util methods into fileInternalCommonUtils
🔧 - refactor(
CFU
): use static initializer instead of one-shot internal method - refactor(
CffuExtensionsTest.kt
): extract internal helper methodsresolveFac
, and add test cases 🔧
🧪 Tests
- test(
CFU
): improve test cases for write methods ofCFU
🧪 - test(
CFU
): addCheckMinStageRuntimeTypeTests
🧪- split
MinStageTestUtils.kt
fromTestUtils.kt
- split
📚 Documentation
- add
MultiplyActionsDemo
👨🏫 - revise/improve javadoc of
peek*
methods 📚 - keep api docs of
timeout*
kotlin extension methods consistent withCFU
📚 - revise README 📚
🚜 Build/Chore
- add
update_md_toc.sh
toCI
- upgraded non-LTS CI JDK to 23 from 22 🤖
- upgrade dependencies/plugins 🛠️
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha25/cffu Kotlin API doc
: https://foldright.io/api-docs/cffu-kotlin/1.0.0-Alpha25/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha25</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha25</version>
<scope>runtime</scope>
</dependency>
v1.0.0-Alpha24 🦝 👓
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development tries to keep the compatibility for main API.
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
🛠 Refactor/Improvements
- use
conditional expression
instead ofif statement
when more readable and concise 👓 - improve instance method
defaultExecutor
- rename argument to
cfThis
⚠️ change exception toUnsupportedOperationException
fromIllegalArgumentException
- add null check for argument
- revise its javadoc
- rename argument to
🧪 Tests
apply*
methods should useFunction
argument- simplify test codes by
kotlin delegation
📚 Documentation
- revise javadoc of
tuple*
/allSuccess*
/mostSuccess*
methods: 📚- simplify
tuple*
methods, just refer to their non-tuple methods - add "indistinguishable" note for
allSuccess*
/mostSuccess*
methods
- simplify
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha24/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha24</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha24</version>
<scope>runtime</scope>
</dependency>
v1.0.0-Alpha23 🦝 🧵
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development will try to keep the compatibility for main API. 🐾
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
☘️ Features
- add missing instance method
CFU#defaultExecutor
🧵 (by @linzee1)⚠️ and remove the wrong non-instance methodCFU#defaultExecutor
- improve instance method
CFU#defaultExecutor
, support runtime typeCffu
🐞 Bug Fixes
CFU
instance methods of typeCompletableFuture
/CompletionStage
usesdefaultExecutor
instance method instead of wrong non-instance method🧵 (by @linzee1)
🛠 Refactor/Improvements
- perf: check min stage by class instead of class name, more efficient 🚀
📚 Documentation
- improve javadoc of methods
orTimeout
andcompleteOnTimeout
⏰📚 (by @linzee1) - add
IncompleteCfMemoryLeakDemo
👨🏫 - improve
CfDelayDysfunctionDemo
, warmup pools 👨🏫
🚜 Build/Chore
- upgrade dependencies/plugins 🛠️
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha23/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha23</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha23</version>
<scope>runtime</scope>
</dependency>
v1.0.0-Alpha22 🦝 🤖
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development will try to keep the compatibility for main API. 🐾
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
🛠 Refactor/Improvements
- perf: do NOT reuse
incomplete
CF instance in methodCompletableFutureUtils#fill0
, less instance dependencies more GC friendly 🤖 (by @linzee1) - improve QA annotations for methods
allOf
🍬 - rename internal methods to conform to conventions:
allSuccessTupleOf0
->f_allSuccessTupleOf0
mostSuccessTupleOf0
->f_mostSuccessTupleOf0
f_toNonMinCf0
->toNonMinCf0
f_toNonMinCfArray0
->toNonMinCfArray0
- add poison object of type
CffuFactory
, and use it inCffuExtensions.kt
☠️
📚 Documentation
- add
CfDelayDysfunctionDemo.java
👨🏫
🧪 Tests
- adjust wait time for more stable testing 🐘
- update thread count/pool size, more stable
🚜 Build/Chore
- upgrade dependencies/plugins 🛠️
- use
overview
property ofmaven javadoc plugin
instead of configuration
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha22/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha22</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha22</version>
<scope>runtime</scope>
</dependency>
v1.0.0-Alpha21 🦝 ⛄️
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development will try to keep the compatibility for main API. 🐾
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
🛠 Refactor/Improvements
- add
final
modifier for classes ⛄️ - rename internal methods 🔠
Cffu.reset0
->resetCf
CFU.wrap*
->wrap*0
CFU.fill
->fill0
CFU.toNonMinCf
->f_toNonMinCfArray
CFU.allTupleOf0
->f_allTupleOf0
CFU.tupleOf0
->f_tupleOf0
CFU.toCfArray
->_toCfArray
CFU._asyncPool0
->_asyncPool
📚 Documentation
- add Implementation Note about the name conventions of
CFU
internal methods- methods with
f_
prefix means not type-safe, e.g.- return type
CompletableFuture
that may be a minimal-stage - force cast to
CompletableFuture<T>
from anyCompletableFuture<?>
- return generic type T but constrained type TupleX
- return type
- methods with
0
suffix means no parameter validation, e.g.- no null check
- methods with
🚜 Build/Chore
- add CI job on
macOS
💻 - upgrade dependencies/plugins 🛠️
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha21/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha21</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha21</version>
<scope>runtime</scope>
</dependency>
v1.0.0-Alpha20 🦝 💣
Note
🦝 Cffu
has arrived at v1.0 Alpha
series~ 🎉
- Development will try to keep the compatibility for main API. 🐾
- The incompatible changes are marked with
⚠️ .
Welcome to try out cffu
. 💕
💗 Happy with cffu
! 🦝 and be a "shifu"~ 😆
🛠 Refactor/Improvements
- backport the JDK bugfix
JDK-8303742
forJava 9~20
⏰🐞- more info about the JDK bug "
CompletableFuture.orTimeout
leaks if the future completes exceptionally": - the JDK bug issue: https://bugs.openjdk.org/browse/JDK-8303742
- PR review: openjdk/jdk#13059
- JDK bugfix commit: openjdk/jdk@ded6a81
- more info about the JDK bug "
- perf: simplify
hopExecutorIfAtCfDelayerThread
, submit completion action to executor directly 🧵 - refactor(
CompletableFutureUtils
): simplify java version check logic by extracting internal methodmethodExists
- add naive black hole to prevent code elimination of Java version check logic
- refactor(
ExceptionReporter
): rename method toreportUncaughtException
and adjust argument meaning 💣
📚 Documentation
- docs: improve javadoc of
exceptionally*
methods, recommendcatching*
methods for best practice 💣📚
🚜 Build/Chore
- CI tests the compatibility with the low version dependencies
Guava(29)
/slf4j(1.7)
🤖📦 - upgrade dependencies/plugins 🛠️
- upgrade maven wrapper to
3.9.9
🪶
🔌 API Doc
cffu Java API doc
: https://foldright.io/api-docs/cffu/1.0.0-Alpha20/
🍪 Maven dependencies
cffu
core lib, including cffu
enhancement for Java CompletableFuture
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha20</version>
</dependency>
cffu executor wrapper SPI implementation
for 📌 TransmittableThreadLocal(TTL)
:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha20</version>
<scope>runtime</scope>
</dependency>