Releases: KStateMachine/kstatemachine
KStateMachine v.0.36.0
Update development dependencies
Use Kotlin 2.3.0
Set kotlin languageVersion to 2.0
Add TransitionParams::isStartTransition extension to check if the transition is a result of StateMachine initialization or explicit outside event transition.
Check the Dispatcher type in createStateMachine method. Throw exception if detecting common multithreaded dispatcher.
This check can be muted by new CreationArguments::skipCoroutineScopeValidityCheck flag.
What's Changed
Full Changelog: v0.35.0...v0.36.0
KStateMachine v.0.35.0
KStateMachine v.0.34.2
What's Changed
- Fix: KMP dependency resolution for native and Wasm targets by @mmkolpakov in #120
New Contributors
- @mmkolpakov made their first contribution in #120
Full Changelog: v0.34.1...v0.34.2
KStateMachine v.0.34.1
Downgrade jdkVersion back to 17
Full Changelog: v0.34.0...v0.34.1
KStateMachine v.0.34.0
This release contains breaking ABI changes, API should remain compatible with older verisons.
What's Changed
- top-level DSL methods accepting lambdas were marked with
kotlin conracts
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
this allows to initialise variables in lambdas in some cases without using lateinit var.
For this change I had to split some of them (taking nullable lambda) to two separate methods (with non-nullable lambda and without it at all). I expect that you don't have to change your code or imports, but this is ABI breaking change.
-
DataExtractorforDataStatenow will be called in case of implicit state activation, allowing to intercept data from event in such case. SeeisImplicitActivationflag inDataExtractor::extractmethod.
This is also ABI breaking change. -
Added new
MutableDataStatestate type. It acts exactly the same way likeDataStatebefore, but allows to mutate thedatamanually withsetDatamethod. This is less strict, but more flexible thenDataStatewhich data can be updated only by transition. -
Add native platforms support. This adds new output artefacts for
linuxX64,mingwX64,macosX64andmacosarm64 -
Update all used libraries and tools to actual versions. Updated Kotlin to
2.2.0, JDK to build project to21. -
Updated publication process to
maven centralas the old one was deprecated bySonatype, please open an Issue if you having some problems with getting artefacts from maven repo.
Full Changelog: v.0.33.0...v0.34.0
KStateMachine v.0.33.0
Add ExportMetaInfo with ResolutionHint mechanism.
This change extends unsafe export feature capabilities. You can specify Event to perform unsafe conditional lambda calls, or specify targetStates without calling lambdas at all.
https://kstatemachine.github.io/kstatemachine/pages/export.html#export-with-unsafecallconditionallambdas-flag
Fix some bugs in export feature.
Top level transitions declared in StateMachine level were not exported.
Full Changelog: v0.32.0...v.0.33.0
KStateMachine v0.32.0
Add event recording mechanism implementation using Kotlinx.Serialization, allowing to serialize and restore state machines 💾.
The implementation is located in new separated artefact kstatemachine.serialization
Some DSL methods like addState, addInitialState etc became suspendable. This allows calling suspend functions in a moment of state machine creation if necessary, as all those DSL method has a trailing lambda as a last argument.
docs https://kstatemachine.github.io/kstatemachine/pages/persistence.html
Full Changelog: v0.31.1...v0.32.0
KStateMachine v0.31.1
Fix export output. Now it contains explicit StateMachine block (wrapping all output). This is necessary for machines with parallel child mode for instance.
Full Changelog: v0.31.0...v0.31.1
KStateMachine v0.31.0
Update Kotlin to 2.0.0
Minor fixes
Major documentation update
Full Changelog: v0.30.0...v0.31.0
KStateMachine v0.30.0
- This is a big release with several breaking changes (mostly you only have to update your imports or reorder method arguments)
- The biggest new feature of this release is an EventRecording mechanism allowing to serialise and deserialise StateMachine's configuration. See more info in docs and code comments.
- Added useful shortcut functions
processEventByAsync()andprocessEventByLaunch() - Add
JSandWasmJSplatforms support (those platforms does not support blocking APIs due to lack of runBlocking support) - Improve documentation
Full Changelog: v0.27.0...v0.30.0