Releases: typelevel/otel4s
v0.13.1
What's Changed
SDK
Documentation
Dependencies
- flake.lock: Update by @typelevel-steward in #1004
- Update opentelemetry-instrumentation-annotations to 2.17.0 by @typelevel-steward in #1003
- Update sbt, scripted-plugin to 1.11.3 by @typelevel-steward in #1005
- Update cats-effect, cats-effect-kernel, ... to 3.6.2 by @typelevel-steward in #1006
Full Changelog: v0.13.0...v0.13.1
v0.13.0
We are happy to announce the 0.13.0 release. It brings some UX improvements and new features.
Warning
There are several binary breaking changes core and sdk modules.
New features
1. Redesigned BaggageManager
The BaggageManager
no longer extends the cats.mtl.Local
. Some methods are deprecated to ease the migration.
2. Dynamic InstrumentMeta
The change introduces two implementations of InstrumentMeta
to align with OpenTelemetry's specification, allowing instruments to reflect their enabled or disabled status dynamically.
InstrumentMeta.Dynamic
uses an effectful F[Boolean]
for runtime checks, while InstrumentMeta.Static
retains a fixed Boolean
for simpler cases like Span
.
What's Changed
Core
- Fix
KindTransformer
instances by @NthPortal in #979 - Redesign
BaggageManager
by @NthPortal in #974 - trace: make SpanBuilder stack safe by @iRevive in #990
- Dynamic instrument meta (enabled/disabled status) by @iRevive in #963
SDK
- SpanBuilder: chain modifyState functions by @iRevive in #965
- sdk: move
LimitedData
to sdk-common by @iRevive in #992 - sdk-trace: use
TracerProvider.noop
when span processors aren't configured by @iRevive in #991 - sdk: move
TraceContext
to sdk-common by @iRevive in #993 - Allocate noop meter instruments only once by @AlixBa in #977
Semantic Conventions
- Update opentelemetry-semconv to 1.34.0 by @typelevel-steward in #988
Dependencies
- Update munit-cats-effect to 2.1.0 by @typelevel-steward in #952
- Update cats-effect, cats-effect-kernel, ... to 3.6.1 by @typelevel-steward in #956
- Update scala3-library, ... to 3.3.6 by @typelevel-steward in #966
- Update pekko-http to 1.2.0 by @typelevel-steward in #972
- Update opentelemetry-instrumentation-annotations to 2.16.0 by @typelevel-steward in #970
- Update opentelemetry-javaagent to 2.16.0 by @typelevel-steward in #971
- Update opentelemetry-proto to 1.7.0-alpha by @typelevel-steward in #975
- Update opentelemetry-api, ... to 1.51.0 by @typelevel-steward in #985
- flake.lock: Update by @typelevel-steward in #978
- Update sbt-typelevel, ... to 0.8.0 by @typelevel-steward in #981
- Update sbt, scripted-plugin to 1.11.2 by @typelevel-steward in #987
- Update sbt-protoc to 1.0.8 by @typelevel-steward in #984
- Update pekko-stream to 1.1.4 by @typelevel-steward in #989
Uncategorized
Full Changelog: v0.12.0...v0.13.0
v0.12.0
We are happy to announce the 0.12.0 release. It brings some UX improvements and new features.
Warning
There are multiple binary breaking changes across modules.
This version relies on new functionality from Cats Effect 3.6.0, such as IORuntimeMetrics
.
New features
1. BaggageManager
BaggageManager
is a functional abstraction that provides an interface to manage Baggage
.
Documentation: https://typelevel.org/otel4s/instrumentation/baggage.html
Reading the current Baggage:
import org.typelevel.otel4s.baggage.{Baggage, BaggageManager}
def printBaggage(implicit bm: BaggageManager[IO]): IO[Unit] =
BaggageManager[IO].current.flatMap(b => IO.println(s"Baggage: $b"))
Setting and modifying Baggage
def withUserId[A](fa: IO[A])(implicit bm: BaggageManager[IO]): IO[A] =
bm.local(fa)(b => b.updated("user-id", "12345"))
def withScopedBaggage[A](fa: IO[A])(implicit bm: BaggageManager[IO]): IO[A] =
bm.scope(fa)(Baggage.empty.updated("request-id", "req-abc"))
Retrieving a specific baggage entry
def fetchBaggageEntry(implicit bm: BaggageManager[IO]): IO[Unit] =
bm.getValue("user-id").flatMap {
case Some(userId) => IO.println(s"User ID: $userId")
case None => IO.println("User ID not found in baggage")
}
2. Attribute.From
Allows creating an attribute value from an arbitrary type:
case class UserId(id: Int)
implicit val userIdFrom: Attribute.From[UserId, Long] =
_.id.toLong
val userIdKey = AttributeKey[Long]("user.id")
val attribute: Attribute[Long] = userIdKey(UserId(1))
val attribute: Attribute[Long] = Attribute.from(userIdKey, UserId(1))
val attribute: Attribute[Long] = Attribute.from("user.id", UserId(1))
3. Attribute.Make
Allows creating an attribute from an arbitrary type:
case class UserId(id: Int)
implicit val userIdFrom: Attribute.From[UserId, Long] =
_.id.toLong
implicit val userIdMake: Attribute.Make[UserId, Long] =
Attribute.Make.const("user.id")
// "user.id=1"
val attribute: Attribute[Long] = Attribute.from(UserId(1))
Before:
def findUser(userId: UserId): F[Unit] =
Tracer[F].span("findUser", Attribute("user.id", userId.id.toLong))
After:
def findUser(userId: UserId): F[Unit] =
Tracer[F].span("findUser", Attribute.from(userId))
4. Cats Effect IO Runtime metrics
Documentation: https://typelevel.org/otel4s/instrumentation/metrics-cats-effect-io-runtime.html.
Configure the build.sbt
:
libraryDependencies ++= Seq(
"org.typelevel" %%% "otel4s-instrumentation-metrics" % "0.12.0"
)
Use IORuntimeMetrics.register
to register collectors:
import cats.effect._
import org.typelevel.otel4s.instrumentation.ce.IORuntimeMetrics
import org.typelevel.otel4s.metrics.MeterProvider
import org.typelevel.otel4s.trace.TracerProvider
import org.typelevel.otel4s.oteljava.OtelJava
object Main extends IOApp.Simple {
def run: IO[Unit] =
OtelJava.autoConfigured[IO]().use { otel4s =>
implicit val mp: MeterProvider[IO] = otel4s.meterProvider
IORuntimeMetrics
.register[IO](runtime.metrics, IORuntimeMetrics.Config.default)
.surround {
program(otel4s.meterProvider, otel4s.tracerProvider)
}
}
def program(
meterProvider: MeterProvider[IO],
tracerProvider: TracerProvider[IO]
): IO[Unit] = {
val _ = (meterProvider, tracerProvider)
IO.unit
}
}
5. OtelJava: seamless context propagation between IO and OpenTelemetry Java SDK
Warning
The IOLocalContextStorageProvider
doesn't work with OpenTelemetry Java Agent yet.
Documentation: https://typelevel.org/otel4s/oteljava/tracing-context-propagation.html.
Configure the build.sbt
:
libraryDependencies ++= Seq(
"org.typelevel" %% "otel4s-oteljava" % "0.12.0",
"org.typelevel" %% "otel4s-oteljava-context-storage" % "0.12.0",
)
javaOptions += "-Dcats.effect.trackFiberContext=true"
Use IOLocalContextStorage.localProvider
as a LocalProvider
:
import cats.effect.IO
import io.opentelemetry.api.trace.{Span => JSpan}
import org.typelevel.otel4s.context.LocalProvider
import org.typelevel.otel4s.oteljava.IOLocalContextStorage
import org.typelevel.otel4s.oteljava.OtelJava
import org.typelevel.otel4s.oteljava.context.Context
import org.typelevel.otel4s.trace.Tracer
def program(tracer: Tracer[IO]): IO[Unit] =
tracer.span("test").use { span => // start 'test' span using otel4s
println(s"jctx: ${JSpan.current().getSpanContext}") // get a span from a ThreadLocal var
IO.println(s"otel4s: ${span.context}")
}
def run: IO[Unit] = {
implicit val provider: LocalProvider[IO, Context] =
IOLocalContextStorage.localProvider[IO]
OtelJava.autoConfigured[IO]().use { otelJava =>
otelJava.tracerProvider.tracer("com.service").get.flatMap { tracer =>
program(tracer)
}
}
}
What's Changed
Core
- core-common: remove public
localForIOLocal
instance by @iRevive in #868 - Add
IORuntimeMetrics
by @iRevive in #861 - Add
IOLocalContextStorage
by @rossabaker in #214 - Update scalafmt-core to 3.8.5 by @typelevel-steward in #892
- Fix copy/paste errors in docs by @NthPortal in #904
- Add implicit
Otel4s#localContext
by @NthPortal in #907 - core-common: redefine
Attribute
as a sealed trait by @iRevive in #906 - Add
BaggageManager
utility by @NthPortal in #908 - docs: add
Baggage
example by @iRevive in #915 - core-common: add
Attribute.from
by @iRevive in #911 - docs: update
SpanOps#resource
documentation by @iRevive in #924 - core-common: add
Attribute.Make
by @iRevive in #916 - Add implicit
Attribute.From
instances by @NthPortal in #926
SDK
- sdk: refactor SpanProcessor by @iRevive in #856
- Update cats-effect to
3.6.0-RC1
, resolve compilation issues by @iRevive in #866 - Use
MapRef.apply
by @iRevive in #880 - Use
SystemProperties
by @iRevive in #882 - sdk: propagate
Env
by @iRevive in #883 - sdk-common: rename
otel.experimental.resource.disabled.keys
tootel.resource.disabled.keys
by @iRevive in #889 - Add
sdk.Context#getOrElse
by @NthPortal in #909 - Update opentelemetry-semconv to 1.30.0 by @typelevel-steward in #922
- sdk-trace: remove
exception.escaped
attribute by @iRevive in #923
SDK exporter
- sdk-exporter: generate proto models in the private package by @iRevive in #860
- Update fs2 to
3.12.0-RC1
, removeepollcat
by @iRevive in #884
Semantic Conventions
- Update opentelemetry-semconv to 1.29.0-alpha by @typelevel-steward in #869
OtelJava
- oteljava: refactor Metrics, Traces, and OtelJava API by @iRevive in #867
- oteljava: move
IOLocalContextStorage
to thecontext
package by @iRevive in #879 - Allow instrumentation via OTeL Java Agent by @iRevive in #944
- oteljava-context-storage: update agent instrumentation direction by @iRevive in #948
Documentation
- docs: simplified docker setup with otel-lgtm image by @AlixBa in #871
- Minor documentation tweaks by @iRevive in #877
- docs: add Grafana dashboard link by @iRevive in #878
- Update ecosystem.md: mention otel4s-doobie by @arturaz in #901
Other
- Aggregate
oteljava
project by @iRevive in #881 - instrumentation-metrics: fix poller metrics by @iRevive in #945
Dependencies
- Update http4s-circe, http4s-dsl, ... to 0.23.30 by @typelevel-steward in #863
- Update opentelemetry-proto to 1.5.0-alpha by @typelevel-steward in #886
- Update pekko-stream to 1.1.3 by @typelevel-steward in #887
- Update scala-library, scala-reflect to 2.13.16 by @typelevel-steward in #891
- Update sbt-typelevel, ... to 0.7.7 by @typelevel-steward in #900
- Update sbt-scalajs, scalajs-compiler, ... to 1.18.2 by @typelevel-steward in #898
- Update scala3-library, ... to 3.3.5 by @typelevel-steward in #905
- Update cats-effect, cats-effect-kernel, ... to 3.6.0-RC2 by @typelevel-...
v0.12.0-RC4
What's Changed
OtelJava
Metrics
Dependencies
- flake.lock: Update by @typelevel-steward in #931
- Update scalafmt-core to 3.9.2 by @typelevel-steward in #934
- Update opentelemetry-javaagent to 2.13.3 by @typelevel-steward in #933
- Update opentelemetry-instrumentation-annotations to 2.13.3 by @typelevel-steward in #932
- Update sbt, scripted-plugin to 1.10.10 by @typelevel-steward in #937
- Update scalafmt-core to 3.9.3 by @typelevel-steward in #938
- Update opentelemetry-api, ... to 1.48.0 by @typelevel-steward in #939
- Update sbt, scripted-plugin to 1.10.11 by @typelevel-steward in #943
- Update opentelemetry-javaagent to 2.14.0 by @typelevel-steward in #942
- Update opentelemetry-instrumentation-annotations to 2.14.0 by @typelevel-steward in #941
- Update scalafmt-core to 3.9.4 by @typelevel-steward in #940
- Update fs2-core, fs2-io, fs2-scodec to 3.12.0-RC2 by @typelevel-steward in #946
Full Changelog: v0.12.0-RC3...v0.12.0-RC4
v0.12.0-RC3
New features
1. BaggageManager
BaggageManager
is a functional abstraction that provides an interface to manage Baggage
.
Documentation: https://typelevel.org/otel4s/instrumentation/baggage.html
Reading the current Baggage:
import org.typelevel.otel4s.baggage.{Baggage, BaggageManager}
def printBaggage(implicit bm: BaggageManager[IO]): IO[Unit] =
BaggageManager[IO].current.flatMap(b => IO.println(s"Baggage: $b"))
Setting and modifying Baggage
def withUserId[A](fa: IO[A])(implicit bm: BaggageManager[IO]): IO[A] =
bm.local(fa)(b => b.updated("user-id", "12345"))
def withScopedBaggage[A](fa: IO[A])(implicit bm: BaggageManager[IO]): IO[A] =
bm.scope(fa)(Baggage.empty.updated("request-id", "req-abc"))
Retrieving a specific baggage entry
def fetchBaggageEntry(implicit bm: BaggageManager[IO]): IO[Unit] =
bm.getValue("user-id").flatMap {
case Some(userId) => IO.println(s"User ID: $userId")
case None => IO.println("User ID not found in baggage")
}
2. Attribute.From
Allows creating an attribute value from an arbitrary type:
case class UserId(id: Int)
implicit val userIdFrom: Attribute.From[UserId, Long] =
_.id.toLong
val userIdKey = AttributeKey[Long]("user.id")
val attribute: Attribute[Long] = userIdKey(UserId(1))
val attribute: Attribute[Long] = Attribute.from(userIdKey, UserId(1))
val attribute: Attribute[Long] = Attribute.from("user.id", UserId(1))
3. Attribute.Make
Allows creating an attribute from an arbitrary type:
case class UserId(id: Int)
implicit val userIdFrom: Attribute.From[UserId, Long] =
_.id.toLong
implicit val userIdMake: Attribute.Make[UserId, Long] =
Attribute.Make.const("user.id")
// "user.id=1"
val attribute: Attribute[Long] = Attribute.from(UserId(1))
Before:
def findUser(userId: UserId): F[Unit] =
Tracer[F].span("findUser", Attribute("user.id", userId.id.toLong))
After:
def findUser(userId: UserId): F[Unit] =
Tracer[F].span("findUser", Attribute.from(userId))
What's Changed
Core
- Fix copy/paste errors in docs by @NthPortal in #904
- Add implicit
Otel4s#localContext
by @NthPortal in #907 - core-common: redefine
Attribute
as a sealed trait by @iRevive in #906 - Add
BaggageManager
utility by @NthPortal in #908 - core-common: add
Attribute.from
by @iRevive in #911 - core-common: add
Attribute.Make
by @iRevive in #916 - Add implicit
Attribute.From
instances by @NthPortal in #926
SDK
- sdk-common: rename
otel.experimental.resource.disabled.keys
tootel.resource.disabled.keys
by @iRevive in #889 - Add
sdk.Context#getOrElse
by @NthPortal in #909 - sdk-trace: remove
exception.escaped
attribute by @iRevive in #923
Documentation
- Update ecosystem.md: mention otel4s-doobie by @arturaz in #901
- docs: update
SpanOps#resource
documentation by @iRevive in #924 - docs: add
Baggage
example by @iRevive in #915
Dependencies
- Update opentelemetry-proto to 1.5.0-alpha by @typelevel-steward in #886
- Update pekko-stream to 1.1.3 by @typelevel-steward in #887
- Update sbt-scalajs, scalajs-compiler, ... to 1.18.1 by @typelevel-steward in #897
- Update scala-library, scala-reflect to 2.13.16 by @typelevel-steward in #891
- Update sbt-typelevel, ... to 0.7.7 by @typelevel-steward in #900
- Update sbt-scalajs, scalajs-compiler, ... to 1.18.2 by @typelevel-steward in #898
- flake.lock: Update by @typelevel-steward in #903
- Update scala3-library, ... to 3.3.5 by @typelevel-steward in #905
- Update opentelemetry-api, ... to 1.47.0 by @typelevel-steward in #914
- Update scalafmt-core to 3.9.1 by @typelevel-steward in #925
- Update opentelemetry-instrumentation-annotations to 2.13.2 by @typelevel-steward in #928
- Update opentelemetry-javaagent to 2.13.2 by @typelevel-steward in #929
- Update cats-effect, cats-effect-kernel, ... to 3.6.0-RC2 by @typelevel-steward in #930
- Update fs2 to
3.12.0-RC1
, removeepollcat
by @iRevive in #884 - Update opentelemetry-semconv to 1.30.0 by @typelevel-steward in #922
New Contributors
Full Changelog: v0.12.0-RC2...v0.12.0-RC3
v0.12.0-RC2
v0.12.0-RC1
That is the first candidate of the upcoming 0.12.0
release.
This version uses Cats Effect 3.6.0-RC1.
Warning
otel4s-oteljava
wasn't released due to a mistake. Please, use 0.12.0-RC2
.
New features
Cats Effect IO Runtime metrics
Documentation: https://typelevel.org/otel4s/instrumentation/metrics-cats-effect-io-runtime.html.
Configure the build.sbt
:
libraryDependencies ++= Seq(
"org.typelevel" %%% "otel4s-instrumentation-metrics" % "0.12.0-RC1"
)
Use IORuntimeMetrics.register
to register collectors:
import cats.effect._
import org.typelevel.otel4s.instrumentation.ce.IORuntimeMetrics
import org.typelevel.otel4s.metrics.MeterProvider
import org.typelevel.otel4s.trace.TracerProvider
import org.typelevel.otel4s.oteljava.OtelJava
object Main extends IOApp.Simple {
def run: IO[Unit] =
OtelJava.autoConfigured[IO]().use { otel4s =>
implicit val mp: MeterProvider[IO] = otel4s.meterProvider
IORuntimeMetrics
.register[IO](runtime.metrics, IORuntimeMetrics.Config.default)
.surround {
program(otel4s.meterProvider, otel4s.tracerProvider)
}
}
def program(
meterProvider: MeterProvider[IO],
tracerProvider: TracerProvider[IO]
): IO[Unit] = {
val _ = (meterProvider, tracerProvider)
IO.unit
}
}
OtelJava: seamless context propagation
Warning
The IOLocalContextStorageProvider
doesn't work with OpenTelemetry Java Agent.
Documentation: https://typelevel.org/otel4s/oteljava/tracing-context-propagation.html.
Configure the build.sbt
:
libraryDependencies ++= Seq(
"org.typelevel" %% "otel4s-oteljava" % "0.12.0-RC1",
"org.typelevel" %% "otel4s-oteljava-context-storage" % "0.12.0-RC1",
)
javaOptions += "-Dcats.effect.trackFiberContext=true"
Use IOLocalContextStorage.localProvider
as a LocalProvider
:
import cats.effect.IO
import io.opentelemetry.api.trace.{Span => JSpan}
import org.typelevel.otel4s.context.LocalProvider
import org.typelevel.otel4s.oteljava.IOLocalContextStorage
import org.typelevel.otel4s.oteljava.OtelJava
import org.typelevel.otel4s.oteljava.context.Context
import org.typelevel.otel4s.trace.Tracer
def program(tracer: Tracer[IO]): IO[Unit] =
tracer.span("test").use { span => // start 'test' span using otel4s
println(s"jctx: ${JSpan.current().getSpanContext}") // get a span from a ThreadLocal var
IO.println(s"otel4s: ${span.context}")
}
def run: IO[Unit] = {
implicit val provider: LocalProvider[IO, Context] =
IOLocalContextStorage.localProvider[IO]
OtelJava.autoConfigured[IO]().use { otelJava =>
otelJava.tracerProvider.tracer("com.service").get.flatMap { tracer =>
program(tracer)
}
}
}
What's Changed
Core
- core-common: remove public
localForIOLocal
instance by @iRevive in #868 - Add
IORuntimeMetrics
by @iRevive in #861 - Add
IOLocalContextStorage
by @rossabaker in #214
SDK
- sdk: refactor SpanProcessor by @iRevive in #856
- Update cats-effect to
3.6.0-RC1
, resolve compilation issues by @iRevive in #866
SDK exporter
Semantic Conventions
- Update opentelemetry-semconv to 1.29.0-alpha by @typelevel-steward in #869
OtelJava
Documentation
Dependencies
- Update sbt, scripted-plugin to 1.10.6 by @typelevel-steward in #857
- Update sbt-scalajs, scalajs-compiler, ... to 1.17.0 by @typelevel-steward in #862
- Update http4s-circe, http4s-dsl, ... to 0.23.30 by @typelevel-steward in #863
- Update opentelemetry-api, ... to 1.45.0 by @typelevel-steward in #864
- Update sbt, scripted-plugin to 1.10.7 by @typelevel-steward in #872
- Update opentelemetry-javaagent to 2.11.0 by @typelevel-steward in #874
- Update opentelemetry-instrumentation-annotations to 2.11.0 by @typelevel-steward in #873
- Update sbt-typelevel, ... to 0.7.5 by @typelevel-steward in #875
- flake.lock: Update by @typelevel-steward in #876
Uncategorized
- Update io.opentelemetry.instrumentation to 2.10.0-alpha by @iRevive in #859
- Update opentelemetry-proto to 1.4.0-alpha by @iRevive in #858
New Contributors
Full Changelog: v0.11.2...v0.12.0-RC1
v0.11.2
The release is fully binary compatible with 0.11.x
series.
What's Changed
SDK exporter
Documentation
- docs: describe
SpanOps#startUnmanaged
limitations by @iRevive in #850 - docs: add OtelJava section by @iRevive in #839
- Scaladoc: use
@note
tag by @iRevive in #852 - docs: update scala-cli directives (lib -> dep, java-opt -> javaOpt) by @iRevive in #840
- docs: add SDK testkit documentation by @iRevive in #841
- docs: add OtelJava testkit documentation by @iRevive in #842
- docs: fix dependency in oteljava testkit example by @iRevive in #843
- docs: sort metrics by name by @iRevive in #844
- docs: improve overview, describe features by @iRevive in #845
- docs: Fix curl request example for prometheus exporter by @lenguyenthanh in #851
Dependencies
- Update cats-effect, cats-effect-kernel, ... to 3.5.6 by @typelevel-steward in #847
- Update cats-effect, cats-effect-kernel, ... to 3.5.7 by @typelevel-steward in #854
- flake.lock: Update by @typelevel-steward in #855
Uncategorized
Full Changelog: v0.11.1...v0.11.2
v0.11.1
The release is fully binary compatible with 0.11.0
.
New features
SDK Prometheus exporter now has a configurable shutdown timeout
The default timeout is 10 seconds
.
The shutdown timeout can be configured via the environment variable:
export OTEL_EXPORTER_PROMETHEUS_SHUTDOWN_TIMEOUT=5 seconds
Or the Java option:
-Dotel.exporter.prometheus.shutdown.timeout=5 seconds
What's Changed
SDK exporter
- prometheus exporter: add shutdown timeout config by @lenguyenthanh in #838
Dependencies
- Update sbt-buildinfo to 0.13.1 by @typelevel-steward in #833
- Update opentelemetry-javaagent to 2.10.0 by @typelevel-steward in #836
- Update opentelemetry-instrumentation-annotations to 2.10.0 by @typelevel-steward in #835
- Update opentelemetry-api, ... to 1.44.1 by @typelevel-steward in #834
- Update sbt-buildinfo to 0.13.0 by @typelevel-steward in #827
- Update sbt to 1.10.5 by @typelevel-steward in #828
Uncategorized
- build: configure Mergify by @iRevive in #829
- Update release notes generation rules by @iRevive in #831
Full Changelog: v0.11.0...v0.11.1
v0.11.0
We are happy to announce the 0.11.0
release.
Note
The otel4s-core
, otel4s-oteljava
are binary compatible with the 0.10.0
lineage.
Warning
The otel4s-sdk
and otel4s-semconv-metrics
have several breaking changes and are binary incompatible with the 0.10.x
lineage.
This release brings the SDK Prometheus Exporter. For the configuration details, check out the documentation page.
Kudos to @bio-aeon for the implementation!
There are numerous performance improvements for the SDK module as well.
What's Changed
Core
- core-trace: skip
addAttributes
when varargs are empty by @iRevive in #795 - core: add
apply
toMeterProvider
andTracerProvider
by @iRevive in #817
SDK
- sdk-common:
ComponentRegistry
- useattributes
as a part of identity by @iRevive in #801 - sdk-trace: use
MapRef
inSpanStorage
by @iRevive in #796 - sdk: replace
whenA
withif
,foldMapA
withfoldMapM
by @iRevive in #826 - benchmarks: add
BatchSpanProcessor
benchmark by @iRevive in #791 - benchmarks: add metrics benchmark by @iRevive in #825
Semconv metrics
SDK Prometheus
- Metrics SDK: implement Prometheus exporter by @bio-aeon in #799
- sdk-exporter-prometheus: unify
PrometheusWriter.Config
options by @iRevive in #810 - prometheus exporter: accept more text media type by @lenguyenthanh in #822
- prometheus exporter: fix test description by @lenguyenthanh in #823
Docs
- docs: add SDK Prometheus exporter configuration details by @iRevive in #811
- Update overview.md by @o0hgt0o in #824
Behind the scene
- Enable additional typelevel-scalafix rules by @iRevive in #802
- Sync the scalac version with the one used by scalafix by @mzuehlke in #803
- build: limit number of concurrent native links by @iRevive in #812
- build: do no upload Scala Native artifacts by @iRevive in #814
Upgrades
- Update scala-library, scala-reflect to 2.13.15 by @typelevel-steward in #790
- Update scala3-library, ... to 3.3.4 by @typelevel-steward in #792
- Update pekko-http to 1.1.0 by @typelevel-steward in #794
- Update pekko-stream to 1.1.2 by @typelevel-steward in #798
- Update sbt-typelevel, ... to 0.7.4 by @typelevel-steward in #800
- Update opentelemetry-api, ... to 1.43.0 by @typelevel-steward in #804
- Update case-insensitive to 1.4.2 by @typelevel-steward in #797
- Update opentelemetry-semconv to 1.28.0-alpha by @typelevel-steward in #805
- Update opentelemetry-javaagent to 2.9.0 by @typelevel-steward in #808
- Update opentelemetry-instrumentation-annotations to 2.9.0 by @typelevel-steward in #807
- Update http4s-circe, http4s-dsl, ... to 0.23.29 by @typelevel-steward in #813
- Update cats-effect, cats-effect-kernel, ... to 3.5.5 by @typelevel-steward in #819
- Update sbt to 1.10.4 by @typelevel-steward in #821
- flake.lock: Update by @typelevel-steward in #820
New Contributors
- @lenguyenthanh made their first contribution in #822
Full Changelog: v0.10.0...v0.11.0