Skip to content

Releases: foldright/cffu

v1.0.0-Alpha9 🦝 🦺

10 Jun 17:14
Compare
Choose a tag to compare

shifu

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

  • safe timeout* methods keep the direct TimeoutException instead of CompletionException wrapper 🦺 ✨
  • report exception info of hop handle, errors should never pass silently 💣 👀

🐞 Bug Fixes

  • ensure type safety of Cffu; if return type of API is Cffu, the result MUST not be a minimal stage 🦺 🧬
  • methods unsafeOrTimeout/unsafeCompleteOnTimeout of Cffu should return this 🐞

🛠 Refactor/Improvements

  • fix/simplify internal help method hopExecutorIfAtCfDelayerThread 👁️ 🧬
    • ⚠️ fix wrong visibility modifier, public -> private
    • simplify generic type declare, CompletionStage -> CompletableFuture
  • perf: use cffuCompleteOnTimeout instead of cffuOrTimeout in mostOf* methods for multiply input cfs ⚡️
  • delegate Cffu.peek() methods to CompletableFutureUtils.peek() which has report function 🫣
    • and improve related @CheckReturnValue 📝

📚 Documentation

  • improve docs in README and javadoc 📚
    • mostOf* method, default executor

🧪 Tests

  • test/refactor: use JUnit assertThrows method instead of try-fail-catch old test pattern 🧪

🚜 Build/Chore

  • upgrade dependencies/plugins 🛠️

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>1.0.0-Alpha9</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>1.0.0-Alpha9</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>1.0.0-Alpha9</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-Alpha9</version>
  <scope>runtime</scope>
</dependency>

v1.0.0-Alpha8 🦝 ⏳

03 Jun 18:33
Compare
Choose a tag to compare

shifu

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

  • report exception info of peek action, errors should never pass silently 💣 👀

🐞 Bug Fixes

  • fix the safe behavior of timeout* methods ⏳ ✨

🛠 Refactor/Improvements

  • ⚠️ change the type declaration in CompletableFutureExtensions.kt to be consistent with CompletableFutureUtils 🧬
  • add missing the minimal stage check 👀
  • complement the null check logic 👻
  • change parameter type to CompletableFuture of internal helper method isMinStageCf 🧬

🧪 Test

  • add test cases for the safe behavior of new safe timeout* methods ⏳ 💥
  • add CancellationException throw test case for CompletableFutureUtils.join() method
  • enable Kotest project level config with project listener

🚜 Build/Chore

  • upgrade dependencies/plugins 🛠️
  • upgrade maven wrapper to 3.9.7 🪶

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>1.0.0-Alpha8</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>1.0.0-Alpha8</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>1.0.0-Alpha8</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-Alpha8</version>
  <scope>runtime</scope>
</dependency>

v1.0.0-Alpha7 🦝 ✨

25 May 19:28
Compare
Choose a tag to compare

shifu

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

  • implement new safe methods cffuOrTimeout/cffuCompleteOnTimeout ⏳ ✨
  • implement new mostTupleOfSuccess methods 🚀 ✨
  • implement new completeExceptionallyAsync methods 💣 ☘️
  • the mostOf* methods use the new safe orTimeout method with parameter executorWhenTimeout 🚀 ✨

🐞 Bug Fixes

  • fix UnsupportedOperationException for the single minimal stage input 💣

🛠 Refactor/Improvements

  • ⚠️ change getSuccessNow method parameter type to CompletableFuture from CompletionStage
  • ⚠️ change resultNow/exceptionNow/state methods to more generic parameter type(Future) in CompletableFutureUtils 🧬
  • ⚠️ remove tuple* methods in Cffu/CompletableFutureExtensions.kt 🧹
  • fix: add missing minimal stage check for Cffu#getSuccessNow() method 👀
  • the factory methods of CffuFactory use new0() instead of dummy(), less instance creation and delegation ⚡️
  • add internal helper method hopAsyncIf
  • add internal helper methods toNonMinCfCopy/isMinStageCf
  • rename internal factory method names of CffuFactory to create* from new* 🔠

🧪 Test

  • add minimal stage check test cases for allOf*/mostOf*/anyOf*/allTupleOf*/mostTupleOf* methods 👀

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>1.0.0-Alpha7</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>1.0.0-Alpha7</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>1.0.0-Alpha7</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-Alpha7</version>
  <scope>runtime</scope>
</dependency>

v1.0.0-Alpha6 🦝 🚀

18 May 19:05
Compare
Choose a tag to compare

shifu

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

  • implement new mostResultsOfSuccess methods 🚀
  • implement new getSuccessNow methods ☘️

🛠 Refactor/Improvements

  • perf: add private helper method toCf, reuse CF instances as many as possible ⚡️

🚜 Build/Chore

  • move TypeParameterDeclarationTest to module cffu-kotlin, so can test the compilation under java 8 🧬
  • add junit-jupiter dependency in order to run JUnit 5 test cases in IntelliJ IDEA 🧪

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>1.0.0-Alpha6</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>1.0.0-Alpha6</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>1.0.0-Alpha6</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-Alpha6</version>
  <scope>runtime</scope>
</dependency>

v1.0.0-Alpha5 🦝 🧬

12 May 19:12
Compare
Choose a tag to compare

shifu

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

  • ⚠️ change parameter type to more generic type(CompletionStage) of methods in CffuExtensions.kt 🧬 🍩
  • ⚠️ change exceptionallyAsync/exceptionallyCompose* methods with more generic parameter type(CompletionStage) in CompletableFutureUtils 🧬
  • move screenExecutor() check forward when user provides the executor 👀 🐞
  • use thenRunAsync instead of thenAcceptAsync if suitable, simplify codes
  • improve type parameter declare of CffuTupleExtensions.kt 🧬

📚 Documentation

  • improve wording and fix parameter type of api docs 📚

🚜 Build/Chore

  • add kotest.properties to disable Kotest autoscan 🍩
  • upgrade dependencies/plugins 🛠️

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>1.0.0-Alpha5</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>1.0.0-Alpha5</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>1.0.0-Alpha5</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-Alpha5</version>
  <scope>runtime</scope>
</dependency>

v1.0.0-Alpha4 🦝 🎭

05 May 19:03
Compare
Choose a tag to compare

shifu

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

  • ⚠️ move toCompletableFuture extension methods to CompletableFutureExtensions.kt from CffuExtensions.kt 🍩
  • add covariance/out modifier to allTupleOf* extension methods 🧬 🍩
  • extract private helper method allTupleOf0, reduce repeat codes 🔧 ✨
  • extract local var for f_cast invocation, explicit the force type cast 🎭
  • rename parameter names of extension methods in CompletableFutureExtensions.kt 🍩

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>1.0.0-Alpha4</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>1.0.0-Alpha4</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>1.0.0-Alpha4</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-Alpha4</version>
  <scope>runtime</scope>
</dependency>

v1.0.0-Alpha3 🦝 🏭

04 May 16:53
Compare
Choose a tag to compare

shifu

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

  • ⚠️ move/rename CffuFactoryBuilder#newCffuFactoryBuilder(Executor) method to CffuFactory#builder(Executor) 🏭
  • improve generic type declaration 🧬

🚜 Build/Chore

  • upgrade dependencies/plugins 🛠️

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>1.0.0-Alpha3</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>1.0.0-Alpha3</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>1.0.0-Alpha3</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-Alpha3</version>
  <scope>runtime</scope>
</dependency>

v1.0.0-Alpha2 🦝 🧬

28 Apr 19:09
Compare
Choose a tag to compare

shifu

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 new CompletableFutureUtils.allOf() method ⛓
    • with more generic parameter type(CompletionStage) comparing to CompletableFuture.allOf() method 🧬

🛠 Refactor/Improvements

  • ⚠️ rename asCffu() methods to toCffu() 🦝
    • so the naming style is consistant with CompletionStage#toCompletableFuture()
  • ⚠️ move static util methods toCompletableFutureArray()/completableFutureListToArray() to class CompletableFutureUtils from CffuFactory
  • extract private method CompletableFutureUtils#createResultSetterCfs() 🔧 ✨
  • use private method CompletableFutureUtils#requireCfsAndEleNonNull() to capture varargs instead of hand rewriting the varargs 🔧 ✨
  • static import Function.identity function 💅

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>1.0.0-Alpha2</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>1.0.0-Alpha2</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>1.0.0-Alpha2</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-Alpha2</version>
  <scope>runtime</scope>
</dependency>

v1.0.0-Alpha1 🦝 🎉

27 Apr 17:44
Compare
Choose a tag to compare

shifu

Note

🦝 Cffu has arrived at v1.0 Alpha series~ 🎉

  • Development will try to keep the compatibility for main API. 🐾
  • The incompatible changes will be marked with ⚠️ in subsequent alpha releases.

Welcome to try out Cffu. 💕

💗 Happy with cffu! 🦝 and be a "shifu"~ 😆

☘️ Features

  • implement bothFastFail*/eitherSuccess* methods 👟
  • implement peek* methods 🫣

🛠 Refactor/Improvements

  • rename methods: combine*/cffuCombine* -> allTupleOf* 🚃
  • change parameter type to CompletionStage for methods allOf*/anyOf*/allTupleOf*
    • and use covariance 🧬 to reduce the count of API methods 💕
  • reorder methods 🚞

📚 Documentation

  • improve wording of api docs 📚

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>1.0.0-Alpha1</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>1.0.0-Alpha1</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>1.0.0-Alpha1</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-Alpha1</version>
  <scope>runtime</scope>
</dependency>

v0.9.9 🦝

25 Apr 05:45
Compare
Choose a tag to compare

shifu

Note

💗 Happy with cffu! 🦝 and be a "shifu"~ 😆

☘️ Features

  • add combineFastFail extension methods for CompletableFuture 🍩
  • add covariance to methods of CffuFactory/CompletableFutureUtils/CompletableFutureExtensions 🧬
  • rename methods of CompletableFutureUtils/CffuFactory/Cffu/CompletableFutureExtensions 🍬
    • allOfWithResult*methods -> allResultsOf* methods
    • remove anyOfWithType* methods, covariant anyof* methods is enough 🎉
    • remove prefix cffu
      • CompletableFutureUtils#cffuState -> state, cffuJoin -> join
      • Cffu#cffuState#cffuJoin -> join
      • CffuFactory#cffuAllOf* -> allResultsOf*
      • ...

🛠 Refactor/Improvements

  • use normal array list instead of immutable(Collections#emptyList) or fixed-size(Arrays#asList) list ⛑️
  • simplify the type parameter of CffuFactory.dummy() ⌨️
  • fix wrong element index in exception msg ℹ️

📚 Documentation

  • improve user guide/javadoc 📚
  • upgrade java link of javadoc to java 21

🚜 Build/Chore

  • check pom version format ✅
  • check bytecode version of dependencies ✅
    • add bytecode version verification plugin
  • update CI jdk: use java 21, add java 22 ☕️
  • use jdk 21 as default build jdk ☕️
  • upgrade kotlin support to 1.6+ 🍩
  • update .gitignore 🫷
  • upgrade dependencies/plugins 🛠️
  • upgrade maven wrapper to 3.9.6 🪶

🔌 API Doc

🍪 Maven dependency

cffu core lib, including cffu enhancement for Java CompletableFuture:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu</artifactId>
    <version>0.9.9</version>
</dependency>

cffu Kotlin support lib:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-kotlin</artifactId>
    <version>0.9.9</version>
</dependency>

cffu bom:

<dependency>
    <groupId>io.foldright</groupId>
    <artifactId>cffu-bom</artifactId>
    <version>0.9.9</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>0.9.9</version>
  <scope>runtime</scope>
</dependency>