[[whatsnew]]
= What's New

== In 1.1

Spring Statemachine 1.1 focuses on security and better
interoperability with web applications. It includes the following:

* Comprehensive support for Spring Security has been added. See <<sm-security>>.
* Context integration with `@WithStateMachine' has been greatly
  enhanced. See <<sm-context>>.
* `StateContext` is now a first class citizen, letting you
  interact with a State Machine. See <<sm-statecontext>>.
* Features around persistence have been enhanced with built-in
  support for redis. See <<sm-persist-redis>>.
* A new feature helps with persist operations. See
  <<sm-persist-statemachinepersister>>.
* Configuration model classes are now in a public API.
* New features in timer-based events.
* New `Junction` pseudostate. See <<statemachine-config-states-junction>>.
* New Exit Point and Entry Point pseudostates. See <<statemachine-config-states-exitentry>>.
* Configuration model verifier.
* New samples. See <<statemachine-examples-security>> and <<statemachine-examples-eventservice>>.
* UI modeling support using Eclipse Papyrus. See <<sm-papyrus>>.

== In 1.2

Spring Statemachine 1.2 focuses on generic enhancements, better
UML support, and integrations with external config repositories.
It includes the following:

* Support for UML sub-machines. See <<sm-papyrus-submachineref>>.
* A new repository abstraction that keeps machine configuration in an
  external repository. See <<sm-repository>>.
* New support for state actions. See <<state-actions>>.
* New transition error action concepts. See <<statemachine-config-transition-actions-errorhandling>>.
* New action error concepts. See <<statemachine-config-state-actions-errorhandling>>.
* Initial work for Spring Boot support. See <<sm-boot>>.
* Support for tracing and monitoring. See <<sm-monitoring>>.

=== In 1.2.8

Spring Statemachine 1.2.8 contains a bit more functionality than normally
not seen in a point release, but these changes did not merit a fork of
Spring Statemachine 1.3. It includes the following:

* JPA entity classes have changed table names. See <<sm-repository-config-jpa>>.
* A new sample. See <<statemachine-examples-datapersist>>.
* New entity classes for persistence. See <<sm-repository-persistence>>.
* Transition conflict policy. See
  <<statemachine-config-commonsettings>>

== In 2.0

Spring Statemachine 2.0 focuses on Spring Boot 2.x support.


=== In 2.0.0

Spring Statemachine 2.0.0 includes the following:

* The format of monitoring and tracing has been changed. See <<sm-boot-monitoring>>.
* The `spring-statemachine-boot` module has been renamed to `spring-statemachine-autoconfigure`.

== In 3.0

Spring Statemachine 3.0.0 focuses on adding a Reactive support. Moving from `2.x` to `3.x` is
introducing some breaking changes which are detailed in <<appendix-reactormigrationguide>>.

With `3.0.x` we have deprecated all blocking methods which will get removed at some point
in a future releases.

[IMPORTANT]
====
Please read an appendix <<appendix-reactormigrationguide>> carefully as it will steer you
through a process of migrating into `3.x` for cases we're not handling internallyl.
====

At this point most of a documentation has been changed to showcase reactive interfaces
while we still keep some notes around to users still using old blocking methods.
