From 37f42d3220c658fddf477bf415ec5abb6046c74f Mon Sep 17 00:00:00 2001 From: Christopher Batey Date: Wed, 29 May 2019 14:38:14 +0100 Subject: [PATCH] Remove API may change from akka typed (#27027) Note that it will become fully stable in 2.6.0 so this doesn't mean that there will be no more API changes. * Remove from event sourced behavior * Remove api may change settings from typed modules * Dont check mima for typed until 2.6 --- .../src/main/scala/akka/actor/typed/ActorSystem.scala | 3 +-- .../src/main/scala/akka/actor/typed/Behavior.scala | 3 +-- .../src/main/scala/akka/actor/typed/Props.scala | 2 -- .../scala/akka/actor/typed/TypedActorContext.scala | 2 -- .../scala/akka/actor/typed/javadsl/ActorContext.scala | 2 -- .../scala/akka/actor/typed/javadsl/Behaviors.scala | 2 -- .../scala/akka/actor/typed/scaladsl/ActorContext.scala | 3 +-- .../scala/akka/actor/typed/scaladsl/Behaviors.scala | 3 +-- akka-docs/src/main/paradox/typed/actors.md | 8 -------- akka-docs/src/main/paradox/typed/cluster-sharding.md | 8 -------- akka-docs/src/main/paradox/typed/cluster-singleton.md | 8 -------- akka-docs/src/main/paradox/typed/cluster.md | 8 -------- akka-docs/src/main/paradox/typed/distributed-data.md | 8 -------- akka-docs/src/main/paradox/typed/guide/actors-intro.md | 8 -------- .../src/main/paradox/typed/guide/actors-motivation.md | 8 -------- akka-docs/src/main/paradox/typed/guide/index.md | 8 -------- akka-docs/src/main/paradox/typed/guide/introduction.md | 8 -------- akka-docs/src/main/paradox/typed/guide/modules.md | 8 -------- akka-docs/src/main/paradox/typed/guide/tutorial.md | 8 -------- akka-docs/src/main/paradox/typed/guide/tutorial_1.md | 8 -------- akka-docs/src/main/paradox/typed/guide/tutorial_2.md | 8 -------- akka-docs/src/main/paradox/typed/guide/tutorial_3.md | 8 -------- akka-docs/src/main/paradox/typed/guide/tutorial_4.md | 8 -------- akka-docs/src/main/paradox/typed/guide/tutorial_5.md | 8 -------- akka-docs/src/main/paradox/typed/index.md | 8 -------- akka-docs/src/main/paradox/typed/persistence.md | 8 -------- akka-docs/src/main/paradox/typed/stream.md | 8 -------- akka-docs/src/main/paradox/typed/testing.md | 8 -------- .../typed/javadsl/EventSourcedBehavior.scala | 3 --- build.sbt | 10 ---------- project/MiMa.scala | 8 ++++++-- 31 files changed, 10 insertions(+), 191 deletions(-) diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/ActorSystem.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/ActorSystem.scala index 448ecc544b..b44467897b 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/ActorSystem.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/ActorSystem.scala @@ -11,7 +11,7 @@ import akka.actor.setup.ActorSystemSetup import akka.actor.typed.internal.{ EventStreamExtension, InternalRecipientRef } import akka.actor.typed.internal.adapter.{ ActorSystemAdapter, GuardianStartupBehavior, PropsAdapter } import akka.actor.typed.receptionist.Receptionist -import akka.annotation.{ ApiMayChange, DoNotInherit } +import akka.annotation.DoNotInherit import akka.util.Helpers.Requiring import akka.util.Timeout import akka.{ Done, actor => untyped } @@ -29,7 +29,6 @@ import scala.concurrent.{ ExecutionContextExecutor, Future } * Not for user extension. */ @DoNotInherit -@ApiMayChange abstract class ActorSystem[-T] extends ActorRef[T] with Extensions { this: InternalRecipientRef[T] => /** diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/Behavior.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/Behavior.scala index 3fed4c67df..ab4eb6c010 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/Behavior.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/Behavior.scala @@ -9,7 +9,7 @@ import akka.actor.InvalidMessageException import akka.actor.typed.internal.{ BehaviorImpl, InterceptorImpl } import akka.actor.typed.internal.BehaviorImpl.OrElseBehavior import akka.util.{ LineNumbers, OptionVal } -import akka.annotation.{ ApiMayChange, DoNotInherit, InternalApi } +import akka.annotation.{ DoNotInherit, InternalApi } import akka.actor.typed.scaladsl.{ ActorContext => SAC } import scala.annotation.switch @@ -54,7 +54,6 @@ private[akka] object BehaviorTags { * * Not for user extension. */ -@ApiMayChange @DoNotInherit abstract class Behavior[T](private[akka] val _tag: Int) { behavior => diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/Props.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/Props.scala index d07332c290..5aa3a862a1 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/Props.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/Props.scala @@ -4,7 +4,6 @@ package akka.actor.typed -import akka.annotation.ApiMayChange import akka.annotation.DoNotInherit import akka.annotation.InternalApi @@ -33,7 +32,6 @@ object Props { * Not for user extension. */ @DoNotInherit -@ApiMayChange abstract class Props private[akka] () extends Product with Serializable { /** diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/TypedActorContext.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/TypedActorContext.scala index 11c8f3cfda..4f288983da 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/TypedActorContext.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/TypedActorContext.scala @@ -5,7 +5,6 @@ package akka.actor.typed import akka.annotation.DoNotInherit -import akka.annotation.ApiMayChange /** * This trait is not meant to be extended by user code. If you do so, you may @@ -14,7 +13,6 @@ import akka.annotation.ApiMayChange * Not for user extension. */ @DoNotInherit -@ApiMayChange trait TypedActorContext[T] { // this should be a pure interface, i.e. only abstract methods diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/ActorContext.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/ActorContext.scala index 7c83e4d06e..9bef3c7292 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/ActorContext.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/ActorContext.scala @@ -8,7 +8,6 @@ import java.time.Duration import java.util.function.{ BiFunction, Function => JFunction } import akka.annotation.DoNotInherit -import akka.annotation.ApiMayChange import akka.actor.typed._ import java.util.Optional import java.util.concurrent.CompletionStage @@ -36,7 +35,6 @@ import scala.concurrent.ExecutionContextExecutor * Not for user extension. */ @DoNotInherit -@ApiMayChange trait ActorContext[T] extends TypedActorContext[T] { // this must be a pure interface, i.e. only abstract methods diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/Behaviors.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/Behaviors.scala index 5eb9ca6156..645a85b595 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/Behaviors.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/Behaviors.scala @@ -9,7 +9,6 @@ import java.util.function.{ Function => JFunction } import akka.actor.typed._ import akka.actor.typed.internal.{ BehaviorImpl, Supervisor, TimerSchedulerImpl, WithMdcBehaviorInterceptor } -import akka.annotation.ApiMayChange import akka.japi.function.{ Effect, Function2 => JapiFunction2 } import akka.japi.pf.PFBuilder import akka.util.unused @@ -20,7 +19,6 @@ import scala.reflect.ClassTag /** * Factories for [[akka.actor.typed.Behavior]]. */ -@ApiMayChange object Behaviors { private[this] val _two2same = new JapiFunction2[ActorContext[Any], Any, Behavior[Any]] { diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/ActorContext.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/ActorContext.scala index 61777c0c5c..ac4f6faf06 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/ActorContext.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/ActorContext.scala @@ -5,7 +5,7 @@ package akka.actor.typed.scaladsl import akka.actor.typed._ -import akka.annotation.{ ApiMayChange, DoNotInherit } +import akka.annotation.DoNotInherit import akka.util.Timeout import scala.concurrent.{ ExecutionContextExecutor, Future } @@ -35,7 +35,6 @@ import akka.annotation.InternalApi * Not for user extension. */ @DoNotInherit -@ApiMayChange trait ActorContext[T] extends TypedActorContext[T] { /** diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/Behaviors.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/Behaviors.scala index 54717e1794..f1e10fe4f5 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/Behaviors.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/Behaviors.scala @@ -5,7 +5,7 @@ package akka.actor.typed package scaladsl -import akka.annotation.{ ApiMayChange, DoNotInherit, InternalApi } +import akka.annotation.{ DoNotInherit, InternalApi } import akka.actor.typed.internal._ import scala.reflect.{ classTag, ClassTag } @@ -13,7 +13,6 @@ import scala.reflect.{ classTag, ClassTag } /** * Factories for [[akka.actor.typed.Behavior]]. */ -@ApiMayChange object Behaviors { /** diff --git a/akka-docs/src/main/paradox/typed/actors.md b/akka-docs/src/main/paradox/typed/actors.md index 660761dbb9..cb7fd017f5 100644 --- a/akka-docs/src/main/paradox/typed/actors.md +++ b/akka-docs/src/main/paradox/typed/actors.md @@ -12,14 +12,6 @@ To use Akka Actor Typed, you must add the following dependency in your project: ## Introduction -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - As discussed in @ref:[Actor Systems](../general/actor-systems.md) Actors are about sending messages between independent units of computation, but how does that look like? diff --git a/akka-docs/src/main/paradox/typed/cluster-sharding.md b/akka-docs/src/main/paradox/typed/cluster-sharding.md index 65bf48b186..5378b87601 100644 --- a/akka-docs/src/main/paradox/typed/cluster-sharding.md +++ b/akka-docs/src/main/paradox/typed/cluster-sharding.md @@ -15,14 +15,6 @@ To use Akka Cluster Sharding Typed, you must add the following dependency in you For an introduction to Sharding concepts see @ref:[Cluster Sharding](../cluster-sharding.md). This documentation shows how to use the typed Cluster Sharding API. -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - ## Basic example Sharding is accessed via the `ClusterSharding` extension diff --git a/akka-docs/src/main/paradox/typed/cluster-singleton.md b/akka-docs/src/main/paradox/typed/cluster-singleton.md index 842e15fdb9..3e780fbb3d 100644 --- a/akka-docs/src/main/paradox/typed/cluster-singleton.md +++ b/akka-docs/src/main/paradox/typed/cluster-singleton.md @@ -12,14 +12,6 @@ To use Cluster Singleton, you must add the following dependency in your project: ## Introduction -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - For some use cases it is convenient and sometimes also mandatory to ensure that you have exactly one actor of a certain type running somewhere in the cluster. diff --git a/akka-docs/src/main/paradox/typed/cluster.md b/akka-docs/src/main/paradox/typed/cluster.md index f0c28523a2..ab65946aa7 100644 --- a/akka-docs/src/main/paradox/typed/cluster.md +++ b/akka-docs/src/main/paradox/typed/cluster.md @@ -15,14 +15,6 @@ To use Akka Cluster Typed, you must add the following dependency in your project For an introduction to Akka Cluster concepts see @ref:[Cluster Specification](../common/cluster.md). This documentation shows how to use the typed Cluster API. -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - ## Examples All of the examples below assume the following imports: diff --git a/akka-docs/src/main/paradox/typed/distributed-data.md b/akka-docs/src/main/paradox/typed/distributed-data.md index fe128ebfc9..c1718ab795 100644 --- a/akka-docs/src/main/paradox/typed/distributed-data.md +++ b/akka-docs/src/main/paradox/typed/distributed-data.md @@ -12,14 +12,6 @@ To use Akka Cluster Distributed Data Typed, you must add the following dependenc ## Introduction -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - *Akka Distributed Data* is useful when you need to share data between nodes in an Akka Cluster. The data is accessed with an actor providing a key-value store like API. The keys are unique identifiers with type information of the data values. The values diff --git a/akka-docs/src/main/paradox/typed/guide/actors-intro.md b/akka-docs/src/main/paradox/typed/guide/actors-intro.md index 24f85952c8..1f1f4aa9c8 100644 --- a/akka-docs/src/main/paradox/typed/guide/actors-intro.md +++ b/akka-docs/src/main/paradox/typed/guide/actors-intro.md @@ -1,13 +1,5 @@ # How the Actor Model Meets the Needs of Modern, Distributed Systems -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - As described in the previous topic, common programming practices do not properly address the needs of demanding modern systems. Thankfully, we don't need to scrap everything we know. Instead, the actor model addresses these diff --git a/akka-docs/src/main/paradox/typed/guide/actors-motivation.md b/akka-docs/src/main/paradox/typed/guide/actors-motivation.md index aaf7bedbc2..395e583748 100644 --- a/akka-docs/src/main/paradox/typed/guide/actors-motivation.md +++ b/akka-docs/src/main/paradox/typed/guide/actors-motivation.md @@ -1,13 +1,5 @@ # Why modern systems need a new programming model -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - The actor model was proposed decades ago by @extref[Carl Hewitt](wikipedia:Carl_Hewitt#Actor_model) as a way to handle parallel processing in a high performance network — an environment that was not available at the time. Today, hardware and infrastructure capabilities have caught up with and exceeded Hewitt's vision. Consequently, organizations building distributed systems with demanding requirements encounter challenges that cannot fully be solved with a traditional object-oriented programming (OOP) model, but that can benefit from the actor model. Today, the actor model is not only recognized as a highly effective solution — it has been proven in production for some of the world's most demanding applications. To highlight issues that the actor model addresses, this topic discusses the following mismatches between traditional programming assumptions and the reality of modern multi-threaded, multi-CPU architectures: diff --git a/akka-docs/src/main/paradox/typed/guide/index.md b/akka-docs/src/main/paradox/typed/guide/index.md index e5e7776148..a56196fca9 100644 --- a/akka-docs/src/main/paradox/typed/guide/index.md +++ b/akka-docs/src/main/paradox/typed/guide/index.md @@ -1,13 +1,5 @@ # Getting Started Guide -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - @@toc { depth=2 } @@@ index diff --git a/akka-docs/src/main/paradox/typed/guide/introduction.md b/akka-docs/src/main/paradox/typed/guide/introduction.md index 362a007e5a..1ca7574497 100644 --- a/akka-docs/src/main/paradox/typed/guide/introduction.md +++ b/akka-docs/src/main/paradox/typed/guide/introduction.md @@ -1,13 +1,5 @@ # Introduction to Akka -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - Welcome to Akka, a set of open-source libraries for designing scalable, resilient systems that span processor cores and networks. Akka allows you to focus on meeting business needs instead of writing low-level code to provide reliable behavior, fault tolerance, and high performance. Many common practices and accepted programming models do not address important challenges diff --git a/akka-docs/src/main/paradox/typed/guide/modules.md b/akka-docs/src/main/paradox/typed/guide/modules.md index b0f5131d6b..9fe6fe61c0 100644 --- a/akka-docs/src/main/paradox/typed/guide/modules.md +++ b/akka-docs/src/main/paradox/typed/guide/modules.md @@ -1,13 +1,5 @@ # Overview of Akka libraries and modules -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - Before delving into some best practices for writing actors, it will be helpful to preview the most commonly used Akka libraries. This will help you start thinking about the functionality you want to use in your system. All core Akka functionality is available as Open Source Software (OSS). Lightbend sponsors Akka development but can also help you with [commercial offerings ](https://www.lightbend.com/platform/subscription) such as training, consulting, support, and [Enterprise Suite](https://www.lightbend.com/platform/production) — a comprehensive set of tools for managing Akka systems. The following capabilities are included with Akka OSS and are introduced later on this page: diff --git a/akka-docs/src/main/paradox/typed/guide/tutorial.md b/akka-docs/src/main/paradox/typed/guide/tutorial.md index 17228eaecf..c468cfd1c2 100644 --- a/akka-docs/src/main/paradox/typed/guide/tutorial.md +++ b/akka-docs/src/main/paradox/typed/guide/tutorial.md @@ -1,13 +1,5 @@ # Introduction to the Example -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - When writing prose, the hardest part is often composing the first few sentences. There is a similar "blank canvas" feeling when starting to build an Akka system. You might wonder: Which should be the first actor? Where should it live? What should it do? Fortunately — unlike with prose — established best practices can guide us through these initial steps. In the remainder of this guide, we examine the core logic of a simple Akka application to introduce you to actors and show you how to formulate solutions with them. The example demonstrates common patterns that will help you kickstart your Akka projects. diff --git a/akka-docs/src/main/paradox/typed/guide/tutorial_1.md b/akka-docs/src/main/paradox/typed/guide/tutorial_1.md index 1b5abfe234..f567155881 100644 --- a/akka-docs/src/main/paradox/typed/guide/tutorial_1.md +++ b/akka-docs/src/main/paradox/typed/guide/tutorial_1.md @@ -12,14 +12,6 @@ Add the following dependency in your project: ## Introduction -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - Use of Akka relieves you from creating the infrastructure for an actor system and from writing the low-level code necessary to control basic behavior. To appreciate this, let's look at the relationships between actors you create in your code and those that Akka creates and manages for you internally, the actor lifecycle, and failure handling. ## The Akka actor hierarchy diff --git a/akka-docs/src/main/paradox/typed/guide/tutorial_2.md b/akka-docs/src/main/paradox/typed/guide/tutorial_2.md index 9b631c9e48..41582916ae 100644 --- a/akka-docs/src/main/paradox/typed/guide/tutorial_2.md +++ b/akka-docs/src/main/paradox/typed/guide/tutorial_2.md @@ -2,14 +2,6 @@ ## Introduction -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - With an understanding of actor hierarchy and behavior, the remaining question is how to map the top-level components of our IoT system to actors. The _user guardian_ can be an actor that represents the whole application. In other words, we will have a single top-level actor in our IoT system. The components that create and manage devices and dashboards will be children of this actor. This allows us to refactor the example use case architecture diagram into a tree of actors: ![actor tree diagram of the architecture](diagrams/arch_tree_diagram.png) diff --git a/akka-docs/src/main/paradox/typed/guide/tutorial_3.md b/akka-docs/src/main/paradox/typed/guide/tutorial_3.md index 180964495f..95f7024a44 100644 --- a/akka-docs/src/main/paradox/typed/guide/tutorial_3.md +++ b/akka-docs/src/main/paradox/typed/guide/tutorial_3.md @@ -2,14 +2,6 @@ ## Introduction -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - In the previous topics we explained how to view actor systems _in the large_, that is, how components should be represented, how actors should be arranged in the hierarchy. In this part, we will look at actors _in the small_ by implementing the device actor. If we were working with objects, we would typically design the API as _interfaces_, a collection of abstract methods to be filled out by the actual implementation. In the world of actors, protocols take the place of interfaces. While it is not possible to formalize general protocols in the programming language, we can compose their most basic element, messages. So, we will start by identifying the messages we will want to send to device actors. diff --git a/akka-docs/src/main/paradox/typed/guide/tutorial_4.md b/akka-docs/src/main/paradox/typed/guide/tutorial_4.md index 406adbafd8..a30ea8814c 100644 --- a/akka-docs/src/main/paradox/typed/guide/tutorial_4.md +++ b/akka-docs/src/main/paradox/typed/guide/tutorial_4.md @@ -2,14 +2,6 @@ ## Introduction -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - Let's take a closer look at the main functionality required by our use case. In a complete IoT system for monitoring home temperatures, the steps for connecting a device sensor to our system might look like this: 1. A sensor device in the home connects through some protocol. diff --git a/akka-docs/src/main/paradox/typed/guide/tutorial_5.md b/akka-docs/src/main/paradox/typed/guide/tutorial_5.md index ea5333bee8..c8c937aeb8 100644 --- a/akka-docs/src/main/paradox/typed/guide/tutorial_5.md +++ b/akka-docs/src/main/paradox/typed/guide/tutorial_5.md @@ -2,14 +2,6 @@ ## Introduction -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - The conversational patterns that we have seen so far are simple in the sense that they require the actor to keep little or no state. Specifically: * Device actors return a reading, which requires no state change diff --git a/akka-docs/src/main/paradox/typed/index.md b/akka-docs/src/main/paradox/typed/index.md index b20a9e07dd..15d0ace7f4 100644 --- a/akka-docs/src/main/paradox/typed/index.md +++ b/akka-docs/src/main/paradox/typed/index.md @@ -1,13 +1,5 @@ # Akka Typed -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - @@toc { depth=2 } @@@ index diff --git a/akka-docs/src/main/paradox/typed/persistence.md b/akka-docs/src/main/paradox/typed/persistence.md index e4f56a9c76..1da871e4ba 100644 --- a/akka-docs/src/main/paradox/typed/persistence.md +++ b/akka-docs/src/main/paradox/typed/persistence.md @@ -23,14 +23,6 @@ Akka Persistence is a library for building event sourced actors. For background see the @ref:[untyped Akka Persistence section](../persistence.md). This documentation shows how the typed API for persistence works and assumes you know what is meant by `Command`, `Event` and `State`. -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - ## Example Let's start with a simple example. The minimum required for a `EventSourcedBehavior` is: diff --git a/akka-docs/src/main/paradox/typed/stream.md b/akka-docs/src/main/paradox/typed/stream.md index 52d4d6dab5..0f04481cfc 100644 --- a/akka-docs/src/main/paradox/typed/stream.md +++ b/akka-docs/src/main/paradox/typed/stream.md @@ -19,14 +19,6 @@ This module contains typed alternatives to the @ref:[already existing `ActorRef` The materializer created from these factory methods and sources together with sinks contained in this module can be mixed and matched with the original Akka Streams building blocks from the original module. -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - ## Actor Source A stream that is driven by messages sent to a particular actor can be started with @scala[@scaladoc[`ActorSource.actorRef`](akka.stream.typed.scaladsl.ActorSource#actorRef)]@java[@javadoc[`ActorSource.actorRef`](akka.stream.typed.javadsl.ActorSource#actorRef)]. This source materializes to a typed `ActorRef` which only accepts messages that are of the same type as the stream. diff --git a/akka-docs/src/main/paradox/typed/testing.md b/akka-docs/src/main/paradox/typed/testing.md index 729fb7de1c..f9516cc87e 100644 --- a/akka-docs/src/main/paradox/typed/testing.md +++ b/akka-docs/src/main/paradox/typed/testing.md @@ -35,14 +35,6 @@ Certain @apidoc[Behavior]s will be hard to test synchronously e.g. if they spawn before observing the effect you want to test. Further support for controlling the scheduler and execution context used will be added. -@@@ note - -This module is ready to be used in production, but it is still marked as @ref:[may change](../common/may-change.md). -This means that API or semantics can change without warning or deprecation period, but such changes will -be collected and be performed in Akka 2.6.0 rather than in 2.5.x patch releases. - -@@@ - ## Synchronous behavior testing The following demonstrates how to test: diff --git a/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/EventSourcedBehavior.scala b/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/EventSourcedBehavior.scala index 4b26f3926e..09de56e8f5 100644 --- a/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/EventSourcedBehavior.scala +++ b/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/EventSourcedBehavior.scala @@ -12,14 +12,12 @@ import akka.actor.typed.BackoffSupervisorStrategy import akka.actor.typed.Behavior import akka.actor.typed.Behavior.DeferredBehavior import akka.actor.typed.javadsl.ActorContext -import akka.annotation.ApiMayChange import akka.annotation.InternalApi import akka.persistence.typed.EventAdapter import akka.persistence.typed._ import akka.persistence.typed.internal._ import akka.util.unused -@ApiMayChange abstract class EventSourcedBehavior[Command, Event, State] private[akka] ( val persistenceId: PersistenceId, onPersistFailure: Optional[BackoffSupervisorStrategy]) @@ -205,7 +203,6 @@ abstract class EventSourcedBehavior[Command, Event, State] private[akka] ( * There will be compilation errors if the returned effect isn't a [[ReplyEffect]], which can be * created with `Effects().reply`, `Effects().noReply`, [[Effect.thenReply]], or [[Effect.thenNoReply]]. */ -@ApiMayChange abstract class EventSourcedBehaviorWithEnforcedReplies[Command, Event, State]( persistenceId: PersistenceId, backoffSupervisorStrategy: Optional[BackoffSupervisorStrategy]) diff --git a/build.sbt b/build.sbt index dd146a87f5..ec92322f87 100644 --- a/build.sbt +++ b/build.sbt @@ -368,7 +368,6 @@ lazy val testkit = akkaModule("akka-testkit") lazy val actorTyped = akkaModule("akka-actor-typed") .dependsOn(actor) - .settings(AkkaBuild.mayChangeSettings) .settings(AutomaticModuleName.settings("akka.actor.typed")) // fine for now, eventually new module name to become typed.actor .settings(OSGi.actorTyped) .settings(initialCommands := @@ -380,7 +379,6 @@ lazy val actorTyped = akkaModule("akka-actor-typed") import akka.util.Timeout implicit val timeout = Timeout(5.seconds) """) - .disablePlugins(MimaPlugin) lazy val persistenceTyped = akkaModule("akka-persistence-typed") .dependsOn( @@ -390,10 +388,8 @@ lazy val persistenceTyped = akkaModule("akka-persistence-typed") actorTypedTests % "test->test", actorTestkitTyped % "compile->compile;test->test") .settings(Dependencies.persistenceShared) - .settings(AkkaBuild.mayChangeSettings) .settings(AutomaticModuleName.settings("akka.persistence.typed")) .settings(OSGi.persistenceTyped) - .disablePlugins(MimaPlugin) lazy val clusterTyped = akkaModule("akka-cluster-typed") .dependsOn( @@ -407,9 +403,7 @@ lazy val clusterTyped = akkaModule("akka-cluster-typed") actorTestkitTyped % "test->test", actorTypedTests % "test->test", remoteTests % "test->test") - .settings(AkkaBuild.mayChangeSettings) .settings(AutomaticModuleName.settings("akka.cluster.typed")) - .disablePlugins(MimaPlugin) .configs(MultiJvm) .enablePlugins(MultiNodeScalaTest) @@ -422,11 +416,9 @@ lazy val clusterShardingTyped = akkaModule("akka-cluster-sharding-typed") actorTypedTests % "test->test", persistenceTyped % "test->test", remoteTests % "test->test") - .settings(AkkaBuild.mayChangeSettings) .settings(AutomaticModuleName.settings("akka.cluster.sharding.typed")) // To be able to import ContainerFormats.proto .settings(Protobuf.importPath := Some(baseDirectory.value / ".." / "akka-remote" / "src" / "main" / "protobuf")) - .disablePlugins(MimaPlugin) .configs(MultiJvm) .enablePlugins(MultiNodeScalaTest) @@ -437,9 +429,7 @@ lazy val streamTyped = akkaModule("akka-stream-typed") streamTestkit % "test->test", actorTestkitTyped % "test->test", actorTypedTests % "test->test") - .settings(AkkaBuild.mayChangeSettings) .settings(AutomaticModuleName.settings("akka.stream.typed")) - .disablePlugins(MimaPlugin) .enablePlugins(ScaladocNoVerificationOfDiagrams) lazy val actorTestkitTyped = akkaModule("akka-actor-testkit-typed") diff --git a/project/MiMa.scala b/project/MiMa.scala index 33cf2c74f2..f5b2dc8c35 100644 --- a/project/MiMa.scala +++ b/project/MiMa.scala @@ -35,8 +35,11 @@ object MiMa extends AutoPlugin { else if (projectName.contains("coordination")) 22 else 0 - expandVersions(2, 5, firstPatchOf25 to latestPatchOf25) ++ - expandVersions(2, 6, 0 to latestPatchOf26) + if (!projectName.contains("typed")) { + expandVersions(2, 5, firstPatchOf25 to latestPatchOf25) + } else { + Nil + } ++ expandVersions(2, 6, 0 to latestPatchOf26) case v if v.startsWith("2.13") => // When 2.13.0 is actually out, release 2.5.latestPatchOf25 for that // and add it here. https://github.com/akka/akka/issues/26764 @@ -45,6 +48,7 @@ object MiMa extends AutoPlugin { } val akka25PromotedArtifacts = Set("akka-distributed-data") + val akkaTypedModules = Set("akka-actor-typed") // check against all binary compatible artifacts versions.map { v =>