Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,8 @@ def mimaSettings(projectName: String) = Seq(
mimaBinaryIssueFilters ++= MimaFilters.changesFor_3_0_1,
mimaBinaryIssueFilters ++= MimaFilters.changesFor_3_2_0,
mimaBinaryIssueFilters ++= MimaFilters.changesFor_3_3_0,
mimaBinaryIssueFilters ++= MimaFilters.changesFor_3_4_0
mimaBinaryIssueFilters ++= MimaFilters.changesFor_3_4_0,
mimaBinaryIssueFilters ++= MimaFilters.changesFor_avs
)

lazy val doctestTestSettings = Seq(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@ package monix.execution.atomic
* driven by implicits.
*/
trait AtomicBuilder[A, R <: Atomic[A]] extends Serializable {
def buildInstance(initialValue: A, padding: PaddingStrategy, allowPlatformIntrinsics: Boolean): R
@deprecated("Use buildInstance(initialValue, padding) instead", "3.4.0-avs6")
def buildInstance(initialValue: A, padding: PaddingStrategy, allowPlatformIntrinsics: Boolean): R =
buildInstance(initialValue, padding)
def buildInstance(initialValue: A, strategy: PaddingStrategy): R

def buildSafeInstance(initialValue: A, padding: PaddingStrategy): R
}
Expand All @@ -34,7 +37,11 @@ private[atomic] object Implicits {
/** Provides an [[AtomicBuilder]] instance for [[AtomicAny]]. */
implicit def AtomicRefBuilder[A <: AnyRef]: AtomicBuilder[A, AtomicAny[A]] =
new AtomicBuilder[A, AtomicAny[A]] {
def buildInstance(initialValue: A, padding: PaddingStrategy, allowPlatformIntrinsics: Boolean) =
@deprecated("Use buildInstance(initialValue, strategy) instead", "3.4.0-avs6")
override def buildInstance(initialValue: A, padding: PaddingStrategy, allowPlatformIntrinsics: Boolean) =
buildInstance(initialValue, padding)

def buildInstance(initialValue: A, padding: PaddingStrategy) =
AtomicAny(initialValue)

def buildSafeInstance(initialValue: A, padding: PaddingStrategy) =
Expand All @@ -46,7 +53,11 @@ private[atomic] object Implicits {
/** Provides an [[AtomicBuilder]] instance for [[AtomicNumberAny]]. */
implicit def AtomicNumberBuilder[A <: AnyRef: Numeric]: AtomicBuilder[A, AtomicNumberAny[A]] =
new AtomicBuilder[A, AtomicNumberAny[A]] {
def buildInstance(initialValue: A, padding: PaddingStrategy, allowPlatformIntrinsics: Boolean) =
@deprecated("Use buildInstance(initialValue, padding) instead", "3.4.0-avs6")
override def buildInstance(initialValue: A, padding: PaddingStrategy, allowPlatformIntrinsics: Boolean) =
buildInstance(initialValue, padding)

def buildInstance(initialValue: A, padding: PaddingStrategy) =
AtomicNumberAny(initialValue)

def buildSafeInstance(initialValue: A, padding: PaddingStrategy) =
Expand All @@ -59,7 +70,15 @@ object AtomicBuilder extends Implicits.Level2 {
/** Provides an [[AtomicBuilder]] instance for [[AtomicInt]]. */
implicit val AtomicIntBuilder: AtomicBuilder[Int, AtomicInt] =
new AtomicBuilder[Int, AtomicInt] {
def buildInstance(initialValue: Int, strategy: PaddingStrategy, allowPlatformIntrinsics: Boolean) =
@deprecated("Use buildInstance(initialValue, strategy) instead", "3.4.0-avs6")
override def buildInstance(
initialValue: Int,
strategy: PaddingStrategy,
allowPlatformIntrinsics: Boolean
): AtomicInt =
buildInstance(initialValue, strategy)

def buildInstance(initialValue: Int, strategy: PaddingStrategy) =
AtomicInt(initialValue)
def buildSafeInstance(initialValue: Int, strategy: PaddingStrategy) =
AtomicInt(initialValue)
Expand All @@ -68,7 +87,15 @@ object AtomicBuilder extends Implicits.Level2 {
/** Provides an [[AtomicBuilder]] instance for [[AtomicLong]]. */
implicit val AtomicLongBuilder: AtomicBuilder[Long, AtomicLong] =
new AtomicBuilder[Long, AtomicLong] {
def buildInstance(initialValue: Long, strategy: PaddingStrategy, allowPlatformIntrinsics: Boolean) =
@deprecated("Use buildInstance(initialValue, strategy) instead", "3.4.0-avs6")
override def buildInstance(
initialValue: Long,
strategy: PaddingStrategy,
allowPlatformIntrinsics: Boolean
): AtomicLong =
buildInstance(initialValue, strategy)

def buildInstance(initialValue: Long, strategy: PaddingStrategy) =
AtomicLong(initialValue)
def buildSafeInstance(initialValue: Long, strategy: PaddingStrategy) =
AtomicLong(initialValue)
Expand All @@ -77,7 +104,10 @@ object AtomicBuilder extends Implicits.Level2 {
/** Provides an [[AtomicBuilder]] instance for [[AtomicBoolean]]. */
implicit val AtomicBooleanBuilder: AtomicBuilder[Boolean, AtomicBoolean] =
new AtomicBuilder[Boolean, AtomicBoolean] {
def buildInstance(initialValue: Boolean, strategy: PaddingStrategy, allowPlatformIntrinsics: Boolean) =
@deprecated("Use buildInstance(initialValue, strategy) instead", "3.4.0-avs6")
override def buildInstance(initialValue: Boolean, strategy: PaddingStrategy, allowPlatformIntrinsics: Boolean) =
buildInstance(initialValue, strategy)
def buildInstance(initialValue: Boolean, strategy: PaddingStrategy) =
AtomicBoolean(initialValue)
def buildSafeInstance(initialValue: Boolean, strategy: PaddingStrategy) =
AtomicBoolean(initialValue)
Expand All @@ -86,7 +116,15 @@ object AtomicBuilder extends Implicits.Level2 {
/** Provides an [[AtomicBuilder]] instance for [[AtomicByte]]. */
implicit val AtomicByteBuilder: AtomicBuilder[Byte, AtomicByte] =
new AtomicBuilder[Byte, AtomicByte] {
def buildInstance(initialValue: Byte, strategy: PaddingStrategy, allowPlatformIntrinsics: Boolean): AtomicByte =
@deprecated("Use buildInstance(initialValue, strategy) instead", "3.4.0-avs6")
override def buildInstance(
initialValue: Byte,
strategy: PaddingStrategy,
allowPlatformIntrinsics: Boolean
): AtomicByte =
buildInstance(initialValue, strategy)

def buildInstance(initialValue: Byte, strategy: PaddingStrategy): AtomicByte =
AtomicByte(initialValue)
def buildSafeInstance(initialValue: Byte, strategy: PaddingStrategy): AtomicByte =
AtomicByte(initialValue)
Expand All @@ -95,7 +133,15 @@ object AtomicBuilder extends Implicits.Level2 {
/** Provides an [[AtomicBuilder]] instance for [[AtomicChar]]. */
implicit val AtomicCharBuilder: AtomicBuilder[Char, AtomicChar] =
new AtomicBuilder[Char, AtomicChar] {
def buildInstance(initialValue: Char, strategy: PaddingStrategy, allowPlatformIntrinsics: Boolean): AtomicChar =
@deprecated("Use buildInstance(initialValue, strategy) instead", "3.4.0-avs6")
override def buildInstance(
initialValue: Char,
strategy: PaddingStrategy,
allowPlatformIntrinsics: Boolean
): AtomicChar =
buildInstance(initialValue, strategy)

def buildInstance(initialValue: Char, strategy: PaddingStrategy): AtomicChar =
AtomicChar(initialValue)
def buildSafeInstance(initialValue: Char, strategy: PaddingStrategy): AtomicChar =
AtomicChar(initialValue)
Expand All @@ -104,7 +150,15 @@ object AtomicBuilder extends Implicits.Level2 {
/** Provides an [[AtomicBuilder]] instance for [[AtomicShort]]. */
implicit val AtomicShortBuilder: AtomicBuilder[Short, AtomicShort] =
new AtomicBuilder[Short, AtomicShort] {
def buildInstance(initialValue: Short, strategy: PaddingStrategy, allowPlatformIntrinsics: Boolean): AtomicShort =
@deprecated("Use buildInstance(initialValue, strategy) instead", "3.4.0-avs6")
override def buildInstance(
initialValue: Short,
strategy: PaddingStrategy,
allowPlatformIntrinsics: Boolean
): AtomicShort =
buildInstance(initialValue, strategy)

def buildInstance(initialValue: Short, strategy: PaddingStrategy): AtomicShort =
AtomicShort(initialValue)
def buildSafeInstance(initialValue: Short, strategy: PaddingStrategy): AtomicShort =
AtomicShort(initialValue)
Expand All @@ -113,7 +167,15 @@ object AtomicBuilder extends Implicits.Level2 {
/** Provides an [[AtomicBuilder]] instance for [[AtomicFloat]]. */
implicit val AtomicFloatBuilder: AtomicBuilder[Float, AtomicFloat] =
new AtomicBuilder[Float, AtomicFloat] {
def buildInstance(initialValue: Float, strategy: PaddingStrategy, allowPlatformIntrinsics: Boolean): AtomicFloat =
@deprecated("Use buildInstance(initialValue, strategy) instead", "3.4.0-avs6")
override def buildInstance(
initialValue: Float,
strategy: PaddingStrategy,
allowPlatformIntrinsics: Boolean
): AtomicFloat =
buildInstance(initialValue, strategy)

def buildInstance(initialValue: Float, strategy: PaddingStrategy): AtomicFloat =
AtomicFloat(initialValue)
def buildSafeInstance(initialValue: Float, strategy: PaddingStrategy): AtomicFloat =
AtomicFloat(initialValue)
Expand All @@ -122,10 +184,15 @@ object AtomicBuilder extends Implicits.Level2 {
/** Provides an [[AtomicBuilder]] instance for [[AtomicDouble]]. */
implicit val AtomicDoubleBuilder: AtomicBuilder[Double, AtomicDouble] =
new AtomicBuilder[Double, AtomicDouble] {
def buildInstance(
@deprecated("Use buildInstance(initialValue, strategy) instead", "3.4.0-avs6")
override def buildInstance(
initialValue: Double,
strategy: PaddingStrategy,
allowPlatformIntrinsics: Boolean): AtomicDouble =
allowPlatformIntrinsics: Boolean
): AtomicDouble =
buildInstance(initialValue, strategy)

def buildInstance(initialValue: Double, strategy: PaddingStrategy): AtomicDouble =
AtomicDouble(initialValue)
def buildSafeInstance(initialValue: Double, strategy: PaddingStrategy): AtomicDouble =
AtomicDouble(initialValue)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ object Atomic {
builder: c.Expr[AtomicBuilder[A, R]]): c.Expr[R] = {

val expr = reify {
builder.splice.buildInstance(initialValue.splice, NoPadding, allowPlatformIntrinsics = true)
builder.splice.buildInstance(initialValue.splice, NoPadding)
}

inlineAndReset[R](expr.tree)
Expand All @@ -323,7 +323,7 @@ object Atomic {
padding: c.Expr[PaddingStrategy])(builder: c.Expr[AtomicBuilder[A, R]]): c.Expr[R] = {

val expr = reify {
builder.splice.buildInstance(initialValue.splice, padding.splice, allowPlatformIntrinsics = true)
builder.splice.buildInstance(initialValue.splice, padding.splice)
}

inlineAndReset[R](expr.tree)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ object Atomic {
* best reference possible, based on our `initialValue`
*/
inline def apply[A, R <: Atomic[A]](initialValue: A)(implicit builder: AtomicBuilder[A, R]): R =
builder.buildInstance(initialValue, PaddingStrategy.NoPadding, allowPlatformIntrinsics = true)
builder.buildInstance(initialValue, PaddingStrategy.NoPadding)

/** Constructs an `Atomic[A]` reference, applying the provided
* [[PaddingStrategy]] in order to counter the "false sharing"
Expand Down
Loading
Loading