Releases: foldright/cffu
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.ktM*extension methodsallSuccess*extension methodsdefaultExecutorextension method
CffuExtensions.ktM*extension methodsallSuccess*extension methods
🛠 Refactor/Improvements
⚠️ rename methods: use termfail fastinstead offast fail⚛️ (by @linzee1)⚠️ renameTuple-Multi-Actions(tupleM*)methods 🌟- make their naming more consistant with
all*Ofmethods
- make their naming more consistant with
- fix(
CFU): convert executor forasyncoperations byscreenExecutor(), consistent withCF🧵 - refactor(
CFU):allResultsFastFailOf/allResultsOfboth call internal methodallResultsOf0, simpler and more consistent 🌟 - refactor: update generic parameters of methods 🧬
join/resultNowmethods 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.ktfromTestUtils.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.shtoCI - 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 expressioninstead ofif statementwhen more readable and concise 👓 - improve instance method
defaultExecutor- rename argument to
cfThis ⚠️ change exception toUnsupportedOperationExceptionfromIllegalArgumentException- add null check for argument
- revise its javadoc
- rename argument to
🧪 Tests
apply*methods should useFunctionargument- 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
CFUinstance methods of typeCompletableFuture/CompletionStageusesdefaultExecutorinstance 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
orTimeoutandcompleteOnTimeout⏰📚 (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
incompleteCF 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_allSuccessTupleOf0mostSuccessTupleOf0->f_mostSuccessTupleOf0f_toNonMinCf0->toNonMinCf0f_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
overviewproperty ofmaven javadoc plugininstead 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
finalmodifier for classes ⛄️ - rename internal methods 🔠
Cffu.reset0->resetCfCFU.wrap*->wrap*0CFU.fill->fill0CFU.toNonMinCf->f_toNonMinCfArrayCFU.allTupleOf0->f_allTupleOf0CFU.tupleOf0->f_tupleOf0CFU.toCfArray->_toCfArrayCFU._asyncPool0->_asyncPool
📚 Documentation
- add Implementation Note about the name conventions of
CFUinternal methods- methods with
f_prefix means not type-safe, e.g.- return type
CompletableFuturethat may be a minimal-stage - force cast to
CompletableFuture<T>from anyCompletableFuture<?> - return generic type T but constrained type TupleX
- return type
- methods with
0suffix 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 bugfix
JDK-8303742inJava 21toJava 9~20⏰🐞- more info about the JDK bug "
CompletableFuture.orTimeoutleaks 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 toreportUncaughtExceptionand 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>v1.0.0-Alpha19 🦝 ⏰
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
CompletableFutureUtilsmerges the JDK bugfix "CompletableFuture.orTimeoutleaks if the future completes exceptionally" forJava 8⏰🐞 (by @linzee1)- more info about the JDK bug:
- the JDK bug issue: https://bugs.openjdk.org/browse/JDK-8303742
- PR review: openjdk/jdk#13059
- JDK bugfix commit: openjdk/jdk@ded6a81
- perf(
CompletableFutureUtils): remove unnecessary copy for SINGLE cf input, because there is a subsequentthenApplyoperation which returns a new cf - refactor(
ListenableFutureUtils): simplifycancelofCompletableFutureAdapter, just return cancel result ofCompletableFutureAdapter
🧪 Tests
- add test case of thread interruption check to
ListenableFutureUtils#toCompletableFuture🧵 (by @linzee1) - rename var with short name in test codes, short code line is more readable in tedious test codes
🚜 Build/Chore
- upgrade dependencies/plugins 🛠️
- upgrade
KotlintoK2🍩 💕
- upgrade
🔌 API Doc
cffu Java API doc: https://foldright.io/api-docs/cffu/1.0.0-Alpha19/cffu Kotlin API doc: https://foldright.io/api-docs/cffu-kotlin/1.0.0-Alpha19/
🍪 Maven dependencies
cffu core lib, including cffu enhancement for Java CompletableFuture:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha19</version>
</dependency>cffu Kotlin support lib:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-kotlin</artifactId>
<version>1.0.0-Alpha19</version>
</dependency>cffu bom:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-bom</artifactId>
<version>1.0.0-Alpha19</version>
<type>pom</type>
<scope>import</scope>
</dependency>cffu executor wrapper SPI implementation for 📌 TransmittableThreadLocal(TTL):
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha19</version>
<scope>runtime</scope>
</dependency>v1.0.0-Alpha18 🦝 📚
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
- reorder methods of
CffuFactoryBuilder- revise README and javadoc
🧪 Tests
- test: rewrite
TupleTesttoJava, increase test coverage - clean test codes 🧹💕
📚 Documentation
- add
README_EN.md(WIP) 📚 🌟 (by @linzee1) - revise README
🚜 Build/Chore
- update
extra-enforcer-rulesmaven plugin config, and improve profile config - upgrade dependencies/plugins 🛠️
🔌 API Doc
cffu Java API doc: https://foldright.io/api-docs/cffu/1.0.0-Alpha18/cffu Kotlin API doc: https://foldright.io/api-docs/cffu-kotlin/1.0.0-Alpha18/
🍪 Maven dependencies
cffu core lib, including cffu enhancement for Java CompletableFuture:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha18</version>
</dependency>cffu Kotlin support lib:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-kotlin</artifactId>
<version>1.0.0-Alpha18</version>
</dependency>cffu bom:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-bom</artifactId>
<version>1.0.0-Alpha18</version>
<type>pom</type>
<scope>import</scope>
</dependency>cffu executor wrapper SPI implementation for 📌 TransmittableThreadLocal(TTL):
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha18</version>
<scope>runtime</scope>
</dependency>v1.0.0-Alpha17 🦝 🏛️
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
- delegate
resetDefaultExecutor()toCffuFactoryBuilder, and avoid re-wrapping 👷 - add missing
requireNonNull(exceptionType)ofcatching*methods 🫴
🧪 Tests
- add
ArchUnitto enforce "Accessing CffuFactory constructor is only allowed by class CffuFactoryBuilder" 🏛️
📚 Documentation
- revise README
🔌 API Doc
cffu Java API doc: https://foldright.io/api-docs/cffu/1.0.0-Alpha17/cffu Kotlin API doc: https://foldright.io/api-docs/cffu-kotlin/1.0.0-Alpha17/
🍪 Maven dependencies
cffu core lib, including cffu enhancement for Java CompletableFuture:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha17</version>
</dependency>cffu Kotlin support lib:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-kotlin</artifactId>
<version>1.0.0-Alpha17</version>
</dependency>cffu bom:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-bom</artifactId>
<version>1.0.0-Alpha17</version>
<type>pom</type>
<scope>import</scope>
</dependency>cffu executor wrapper SPI implementation for 📌 TransmittableThreadLocal(TTL):
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha17</version>
<scope>runtime</scope>
</dependency>v1.0.0-Alpha16 🦝 🚦
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"~ 😆
Welcome new cffu team member @linzee1 👏 💕
☘️ Features
⚠️ add interruption parameter and revise javadoc to methodListenableFutureUtils#toCompletableFuture🚦(by @linzee1)- and fix
ListenableFutureUtils#toCompletableFuturecancellation propagation
- and fix
- add
resetDefaultExecutormethod toCffuFactory/Cffu🏭
🛠 Refactor/Improvements
⚠️ remove convenient util methodscffuArrayUnwrapfor uncommon/dangerousCffu#cffuUnwrapmethod 🧹- reorder
Cffu.cffuUnwrapand revise its javadoc - add QA annotations(
@Contract/@Nuallable) to methodCompletableFutureUtils.unwrapCfException - uniform local var name
🚜 Build/Chore
- upgrade dependencies/plugins 🛠️
🔌 API Doc
cffu Java API doc: https://foldright.io/api-docs/cffu/1.0.0-Alpha16/cffu Kotlin API doc: https://foldright.io/api-docs/cffu-kotlin/1.0.0-Alpha16/
🍪 Maven dependencies
cffu core lib, including cffu enhancement for Java CompletableFuture:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu</artifactId>
<version>1.0.0-Alpha16</version>
</dependency>cffu Kotlin support lib:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-kotlin</artifactId>
<version>1.0.0-Alpha16</version>
</dependency>cffu bom:
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-bom</artifactId>
<version>1.0.0-Alpha16</version>
<type>pom</type>
<scope>import</scope>
</dependency>cffu executor wrapper SPI implementation for 📌 TransmittableThreadLocal(TTL):
<dependency>
<groupId>io.foldright</groupId>
<artifactId>cffu-ttl-executor-wrapper</artifactId>
<version>1.0.0-Alpha16</version>
<scope>runtime</scope>
</dependency>