Skip to content

Releases: foldright/cffu

v1.0.0-Alpha25 🦝 ⚛️

13 Oct 19:09
Compare
Choose a tag to compare

shifu

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 methods
      • allSuccess* extension methods
      • defaultExecutor extension methods
    • CffuExtensions.kt
      • M* extension methods
      • allSuccess* extension methods

🛠 Refactor/Improvements

  • ⚠️ rename methods: use term fail fast instead of fast fail ⚛️ (by @linzee1)
  • ⚠️ rename Tuple-Multi-Actions(tupleM*) methods 🌟
    • make their naming more consistant with all*Of methods
  • fix(CFU): convert executor for async operations by screenExecutor(), consistent with CF 🧵
  • refactor(CFU): allResultsFastFailOf/allResultsOf both call internal method allResultsOf0, simpler and more consistent 🌟
  • refactor: update generic parameters of methods 🧬
    • join/resultNow methods of CFU
      • add covariance to express the only use as input
    • join/resultNow/orTimeout* methods of CompletableFutureExtensions.kt
      • make orTimeout* generic parameters consistent with CFU
  • refactor(CFU): extract internal array util methods into file InternalCommonUtils 🔧
  • refactor(CFU): use static initializer instead of one-shot internal method
  • refactor(CffuExtensionsTest.kt): extract internal helper methods resolveFac, and add test cases 🔧

🧪 Tests

  • test(CFU): improve test cases for write methods of CFU 🧪
  • test(CFU): add CheckMinStageRuntimeTypeTests 🧪
    • split MinStageTestUtils.kt from TestUtils.kt

📚 Documentation

  • add MultiplyActionsDemo 👨‍🏫
  • revise/improve javadoc of peek* methods 📚
  • keep api docs of timeout* kotlin extension methods consistent with CFU 📚
  • revise README 📚

🚜 Build/Chore

  • add update_md_toc.sh to CI
  • upgraded non-LTS JDK to 23 from 22 🤖
  • upgrade dependencies/plugins 🛠️

🔌 API Doc

🍪 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 Kotlin support lib:

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

cffu bom:

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

v1.0.0-Alpha24 🦝 👓

21 Sep 17:40
Compare
Choose a tag to compare

shifu

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 of if statement when more readable and concise 👓
  • improve instance method defaultExecutor
    • rename argument to cfThis
    • ⚠️ change exception to UnsupportedOperationException from IllegalArgumentException
    • add null check for argument
    • revise its javadoc

🧪 Tests

  • apply* methods should use Function 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

🔌 API Doc

🍪 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 Kotlin support lib:

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

cffu bom:

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

v1.0.0-Alpha23 🦝 🧵

17 Sep 19:06
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 missing instance method CFU#defaultExecutor 🧵 (by @linzee1)
    • ⚠️ and remove the wrong non-instance method CFU#defaultExecutor
  • improve instance method CFU#defaultExecutor, support runtime type Cffu

🐞 BugFix

  • CFU instance methods of type CompletableFuture/CompletionStage uses defaultExecutor 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 and completeOnTimeout ⏰📚 (by @linzee1)
  • add IncompleteCfMemoryLeakDemo 👨‍🏫
  • improve CfDelayDysfunctionDemo, warmup pools 👨‍🏫

🚜 Build/Chore

  • upgrade dependencies/plugins 🛠️

🔌 API Doc

🍪 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 Kotlin support lib:

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

cffu bom:

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

v1.0.0-Alpha22 🦝 🤖

07 Sep 16:40
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

  • perf: do NOT reuse incomplete CF instance in method CompletableFutureUtils#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 in CffuExtensions.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 of maven javadoc plugin instead of configuration

🔌 API Doc

🍪 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 Kotlin support lib:

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

cffu bom:

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

v1.0.0-Alpha21 🦝 ⛄️

31 Aug 17:54
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

  • 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 any CompletableFuture<?>
      • return generic type T but constrained type TupleX
    • methods with 0 suffix means no parameter validation, e.g.
      • no null check

🚜 Build/Chore

  • add CI job on macOS 💻
  • upgrade dependencies/plugins 🛠️

🔌 API Doc

🍪 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 Kotlin support lib:

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

cffu bom:

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

v1.0.0-Alpha20 🦝 💣

23 Aug 13:43
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

  • backport the JDK bugfix JDK-8303742 for Java 9~20 ⏰🐞
  • perf: simplify hopExecutorIfAtCfDelayerThread, submit completion action to executor directly 🧵
  • refactor(CompletableFutureUtils): simplify java version check logic by extracting internal method methodExists
    • add naive black hole to prevent code elimination of Java version check logic
  • refactor(ExceptionReporter): rename method to reportUncaughtException and adjust argument meaning 💣

📚 Documentation

  • docs: improve javadoc of exceptionally* methods, recommend catching* 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

🍪 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 Kotlin support lib:

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

cffu bom:

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

v1.0.0-Alpha19 🦝 ⏰

17 Aug 15:35
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

  • CompletableFutureUtils merges the JDK bugfix "CompletableFuture.orTimeout leaks if the future completes exceptionally" for Java 8 ⏰🐞 (by @linzee1)
  • perf(CompletableFutureUtils): remove unnecessary copy for SINGLE cf input, because there is a subsequent thenApply operation which returns a new cf
  • refactor(ListenableFutureUtils): simplify cancel of CompletableFutureAdapter, just return cancel result of CompletableFutureAdapter

🧪 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 Kotlin to K2 🍩 💕

🔌 API Doc

🍪 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 🦝 📚

10 Aug 18:02
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

  • reorder methods of CffuFactoryBuilder
    • revise README and javadoc

🧪 Tests

  • test: rewrite TupleTest to Java, increase test coverage
  • clean test codes 🧹💕

📚 Documentation

  • add README_EN.md(WIP) 📚 🌟 (by @linzee1)
  • revise README

🚜 Build/Chore

  • update extra-enforcer-rules maven plugin config, and improve profile config
  • upgrade dependencies/plugins 🛠️

🔌 API Doc

🍪 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 🦝 🏛️

03 Aug 16:45
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

  • delegate resetDefaultExecutor() to CffuFactoryBuilder, and avoid re-wrapping 👷
  • add missing requireNonNull(exceptionType) of catching* methods 🫴

🧪 Tests

  • add ArchUnit to enforce "Accessing CffuFactory constructor is only allowed by class CffuFactoryBuilder" 🏛️

📚 Documentation

  • revise README

🔌 API Doc

🍪 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 🦝 🚦

27 Jul 16:47
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"~ 😆


Welcome new cffu team member @linzee1 👏 💕

☘️ Features

  • ⚠️ add interruption parameter and revise javadoc to method ListenableFutureUtils#toCompletableFuture 🚦(by @linzee1)
    • and fix ListenableFutureUtils#toCompletableFuture cancellation propagation
  • add resetDefaultExecutor method to CffuFactory/Cffu 🏭

🛠 Refactor/Improvements

  • ⚠️ remove convenient util methods cffuArrayUnwrap for uncommon/dangerous Cffu#cffuUnwrap method 🧹
  • reorder Cffu.cffuUnwrap and revise its javadoc
  • add QA annotations(@Contract/@Nuallable) to method CompletableFutureUtils.unwrapCfException
  • uniform local var name

🚜 Build/Chore

  • upgrade dependencies/plugins 🛠️

🔌 API Doc

🍪 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>