Skip to content

v3.5.0

Compare
Choose a tag to compare
@idugalic idugalic released this 14 Jul 10:45
· 155 commits to main since this release

Version 3.5.0 is a reactive and a multiplatform version of fmodel libraries optimized for Event sourcing, CQRS, and Domain Modeling.

Maven coordinates

 <dependency>
    <groupId>com.fraktalio.fmodel</groupId>
    <artifactId>domain</artifactId>
    <version>3.5.0</version>
 </dependency>

 <dependency>
    <groupId>com.fraktalio.fmodel</groupId>
    <artifactId>application-vanilla</artifactId>
    <version>3.5.0</version>
 </dependency>
 
 <dependency>
    <groupId>com.fraktalio.fmodel</groupId>
    <artifactId>application-arrow</artifactId>
    <version>3.5.0</version>
 </dependency>

In this release, we have upgraded the Kotlin Arrow library to 1.2.0. It is a breaking change for the application-arrow module/extension.

We have introduced and configured a binary compatibility validator into our build process.

The tool allows dumping binary API of a JVM part of a Kotlin library that is public in the sense of Kotlin visibilities and ensures that the public binary API wasn't changed in a way that makes this change binary incompatible.

We extended the case of using actor functions to parallelize the message handling processes. (available on JVM target only)

/**
 * Extension function - Handles the flow of command messages of type [C] by concurrently distributing the load across finite number of actors/handlers
 *
 * @param commands [Flow] of Command messages of type [C]
 * @param numberOfActors total number of actors/workers available for distributing the load. Minimum one.
 * @param actorsCapacity capacity of the actors channel's buffer
 * @param actorsStart actors coroutine start option
 * @param actorsContext additional to [CoroutineScope.coroutineContext] context of the actor coroutines.
 * @param partitionKey a function that calculates the partition key/routing key of command - commands with the same partition key will be handled with the same 'actor' to keep the ordering
 * @return [Flow] of stored Events of type [E]
 *
 */
fun <C, S, E> EventSourcingAggregate<C, S, E>.handleConcurrently(
    commands: Flow<C>,
    numberOfActors: Int = 100,
    actorsCapacity: Int = Channel.BUFFERED,
    actorsStart: CoroutineStart = CoroutineStart.LAZY,
    actorsContext: CoroutineContext = EmptyCoroutineContext,
    partitionKey: (C) -> Int
): Flow<E>

Deprecating factory functions in favor of constructor-like functions.

What's Changed

  • Update actions/checkout action to v3.5.0 by @renovate in #181
  • Update actions/setup-java action to v3.11.0 by @renovate in #182
  • Arrow KT upgraded to 1.2.0 - a step closer to 2.0.0 by @idugalic in #184
  • Kotlin upgraded to 1.8.20 by @idugalic in #185
  • Update dependency gradle to v8.1 by @renovate in #187
  • Update actions/checkout action to v3.5.1 by @renovate in #186
  • Update gradle/gradle-build-action action to v2.4.1 by @renovate in #188
  • Update actions/checkout action to v3.5.2 by @renovate in #189
  • Update gradle/gradle-build-action action to v2.4.2 by @renovate in #190
  • Update dependency gradle to v8.1.1 by @renovate in #193
  • Update kotest to v5.6.1 by @renovate in #192
  • Update dependency org.jetbrains.kotlin.multiplatform to v1.8.21 by @renovate in #194
  • Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.7.0 by @renovate in #195
  • Deprecating factory functions in favour of constructor-like functions. by @idugalic in #196
  • Update kotest to v5.6.2 by @renovate in #198
  • Update dependency io.kotest.multiplatform to v5.6.2 by @renovate in #197
  • Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.7.1 by @renovate in #199
  • Properly propagating ExperimentalCoroutinesApi by @idugalic in #200
  • Promote ``@FlowPreview` API to stable/experimental by @idugalic in #201
  • Update dependency org.jetbrains.dokka to v1.8.20 by @renovate in #203
  • Update dependency org.jetbrains.kotlin.multiplatform to v1.8.22 by @renovate in #204
  • Update actions/checkout action to v3.5.3 by @renovate in #205
  • Update gradle/gradle-build-action action to v2.5.1 by @renovate in #206
  • Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.7.2 by @renovate in #207
  • Update dependency gradle to v8.2 by @renovate in #208
  • Update dependency org.jetbrains.kotlin.multiplatform to v1.9.0 by @renovate in #209
  • handling the messages concurrently and in parallel - actors by @idugalic in #210
  • Update dependency gradle to v8.2.1 by @renovate in #211
  • Update dependency io.arrow-kt:arrow-core to v1.2.0 by @renovate in #213
  • Binary compatibility validator configured by @idugalic in #214

Full Changelog: v3.4.0...v3.5.0