Skip to content

Releases: typelevel/otel4s

v0.12.0-RC2

01 Jan 21:20
9c09184
Compare
Choose a tag to compare
v0.12.0-RC2 Pre-release
Pre-release

What's Changed

SDK

OtelJava

  • oteljava: move IOLocalContextStorage to the context package by @iRevive in #879

Documentation

Uncategorized

Full Changelog: v0.12.0-RC1...v0.12.0-RC2

v0.12.0-RC1

31 Dec 13:53
6783b22
Compare
Choose a tag to compare
v0.12.0-RC1 Pre-release
Pre-release

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

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

  • sdk-exporter: generate proto models in the private package by @iRevive in #860

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

Documentation

  • docs: simplified docker setup with otel-lgtm image by @AlixBa in #871

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

29 Nov 17:34
3c6356d
Compare
Choose a tag to compare

The release is fully binary compatible with 0.11.x series.

What's Changed

SDK exporter

  • Prometheus exporter: correctly treat wildcard Accept by @bio-aeon in #853

Documentation

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

  • mergify: rename label trace -> tracing by @iRevive in #849

Full Changelog: v0.11.1...v0.11.2

v0.11.1

16 Nov 08:06
286cb01
Compare
Choose a tag to compare

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

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

Full Changelog: v0.11.0...v0.11.1

v0.11.0

02 Nov 09:27
84881d1
Compare
Choose a tag to compare

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 to MeterProvider and TracerProvider by @iRevive in #817

SDK

  • sdk-common: ComponentRegistry - use attributes as a part of identity by @iRevive in #801
  • sdk-trace: use MapRef in SpanStorage by @iRevive in #796
  • sdk: replace whenA with if, foldMapA with foldMapM by @iRevive in #826
  • benchmarks: add BatchSpanProcessor benchmark by @iRevive in #791
  • benchmarks: add metrics benchmark by @iRevive in #825

Semconv metrics

  • semconv-metrics: do not force a type of instrument by @iRevive in #816

SDK Prometheus

Docs

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

Full Changelog: v0.10.0...v0.11.0

v0.10.0

24 Sep 16:56
9c176c2
Compare
Choose a tag to compare

We are happy to announce the 0.10.0 release.

Warning

The otel4s-sdk-trace and otel4s-sdk-exporter have several breaking changes and are binary incompatible with the 0.9.x lineage.

Warning

The Histogram#recordDuration has a breaking behavior change. Please see below.

Breaking behavior changes

Histogram#recordDuration no longer adds the cause attribute

The cause attribute was opinionated and didn't align with most semantic conventions.

If you want to preserve the old behavior, please use Histogram.causeAttributes:

histogram
  .recordDuration(TimeUnit.SECONDS, Histogram.causeAttributes(_))
  .surround(fa)

New features

1) Histogram#recordDuration provides a way to build attributes based on the exit case

histogram
  .recordDuration(TimeUnit.SECONDS, {
    case Resource.ExitCase.Succeeded =>
      Nil
    case Resource.ExitCase.Errored(e) =>
      List(Attribute("error.type", e.getClass.getName))
    case Resource.ExitCase.Canceled =>
      List(Attribute("error.type", "canceled"))
  })
  .surround(fa)

2) AttributeKey#maybe

Dealing with optional attributes could be cumbersome. AttriubuteKey#maybe goes along with AttributesBuilder#addAll and Attributes#concat:

val attributeKey: AttributeKey[String] = AttributeKey("key")  
val attributeValue: Option[String] = ???

// builder usage
val builder = Attributes.newBuilder
- attributeValue.foreach(value => builder.addOne(attributeKey, value))
+ builder.addAll(attributeKey.maybe(attributeValue))
val attributes: Attributes = builder.result()

// attributes usage
- attributeValue.fold(attributes)(value => attributes.added(attributeKey, value)) 
+ attributes.concat(attributeKey.maybe(attributeValue))

Kudos to @NthPortal for the idea.

3) New OTLP gRPC exporter for SDK

SDK OTLP exporter now supports all required protocols: grpc, http/protobuf, and http/json.
Check out the configuration details.

4) New otel4s-semconv-metrics and otel4s-semconv-metrics-experimental modules

OpenTelemetry semantic conventions provide well-defined requirements for the metrics.
Hence, we generate a spec that you can use to test the implementation.
There is no documentation yet, but there is a PoC example.

5) New SDK AWS contrib modules

There are three new modules that provide AWS-specific functionality for SDK:

  1. Resource detectors
  2. AWS X-Ray ID Generator (kudos to @bpholt)
  3. AWS X-Ray context propagator

What's Changed

Core

  • core-trace: remove Histogram.DoubleBackend by @iRevive in #760
  • core-trace: use ExitCase to build attributes in Histogram#recordDuration by @iRevive in #761
  • core-common: AttributeKey add maybe method by @iRevive in #780

SDK

  • sdk-common: use semconv-experimental in tests by @iRevive in #748
  • sdk: use Console[F].errorln instead of Console[F].error by @iRevive in #769
  • sdk-exporter: implement gRPC exporter by @iRevive in #756
  • sdk-trace: make Sampler effectful by @iRevive in #782
  • sdk-trace: make SimpleSpanProcessor and BatchSpanProcessor private by @iRevive in #788

Semconv

  • semconv: generate semantic conventions using otel/weaver by @iRevive in #763
  • semconv: use single template to generate attributes by @iRevive in #767
  • semconv: generate metrics specs by @iRevive in #764
  • semconv-metrics: fix package of the experimental metrics by @iRevive in #770
  • semconv-metrics: use a reference to semantic attributes by @iRevive in #771
  • semconv-metrics: deprecate stable metrics in the experimental package by @iRevive in #772
  • semconv-metrics: add MetricSpec, generate tests by @iRevive in #773

SDK contrib AWS

  • sdk-contrib-aws: add docs for AwsXRayIdGenerator by @iRevive in #789
  • sdk-contrib: add aws-xray-propagator module by @iRevive in #749
  • sdk-contrib: add AWSXRayLambdaPropagator module by @iRevive in #759
  • sdk-contrib: add aws-resource module by @iRevive in #747
  • sdk-contrib: add AWSEC2Detector by @iRevive in #775
  • sdk-contrib: add AWSBeanstalkDetector by @iRevive in #774
  • sdk-contrib: add AWSECSDetector by @iRevive in #779
  • sdk-contrib-aws: rename classes - use camel case convention by @iRevive in #785
  • Add AwsXRayIdGenerator by @bpholt in #787

Docs

  • docs: SDK configuration - add ottrace,update SDK overview by @iRevive in #745
  • docs: simplify custom propagator example by @iRevive in #750
  • docs: update Grafana example by @iRevive in #762

Behind the scene

Upgrades

  • Update pekko-stream to 1.1.0 by @typelevel-steward in #754
  • Update sbt-typelevel, ... to 0.7.3 by @typelevel-steward in #757
  • Update opentelemetry-api, ... to 1.42.1 by @typelevel-steward in #768
  • Update http4s-circe, http4s-ember-client to 0.23.28 by @typelevel-steward in #765
  • Update pekko-stream to 1.1.1 by @typelevel-steward in #778
  • Update opentelemetry-instrumentation-annotations to 2.8.0 by @typelevel-steward in #776
  • Update opentelemetry-javaagent to 2.8.0 by @typelevel-steward in #777
  • Update sbt to 1.10.2 by @typelevel-steward in #781

New Contributors

Full Changelog: v0.9.0...v0.10.0

v0.9.0

31 Aug 11:34
5c45dcf
Compare
Choose a tag to compare

We are happy to announce the 0.9.0 release.

Warning

The otel4s-core-metrics, otel4s-core-trace, and otel4s-sdk-trace have several breaking changes and are binary incompatible with the 0.8.x lineage.

Core

1. Macro-based SpanBuilder

Let's take a look at the following example:

Tracer[F]
  .spanBuilder("span")
  .spanKind(SpanKind.Server)
  .addAttributes(Attribute("key", "value"))
  .build
  .use(span => fa(span))

Before 0.9.0, the Attribute("key", "value") would be allocated even if you are using a noop instance (e.g. Tracer.Implicits.noop).

Since 0.9.0, the code above will be rewritten into:

{
  val builder = Tracer[F].spanBuilder("span")
  if (builder.meta.isEnabled) {
    builder.modifyState(_.withSpanKind(SpanKind.Server).addAttributes(Attribute("key", "value")))
  } else {
    builder
  }
}.build.use(span => fa(span))

SDK

These changes are specific to the otel4s-sdk.

1. Span limits

Span limits can be used to control the maximum span size by limiting attributes, events, and links.
The configuration details: https://typelevel.org/otel4s/sdk/configuration.html#span-limits.

Kudos to @bio-aeon.

2. Resource detectors

Resource detectors add environment-specific attributes to the telemetry resource.

The following resource detectors are available out of the box:

  • OS: os.type, os.description
  • Host: host.arch, host.name
  • Process: process.command, process.command_args, process.command_line, process.executable.name, process.executable.path, process.pid, process.owner
  • Runtime: process.runtime.name, process.runtime.version, process.runtime.description

The configuration details: https://typelevel.org/otel4s/sdk/configuration.html#telemetry-resource-detectors.

3. OpenTracing trace propagator

The configuration details: https://typelevel.org/otel4s/sdk/configuration.html#propagators.

Kudos to @o0hgt0o.

What's Changed

  • added OtTracePropagator by @o0hgt0o in #718
  • sdk-common: use CrossType.Full by @iRevive in #720
  • sdk-common: add TelemetryResourceDetector by @iRevive in #721
  • sdk-common: add OSDetector by @iRevive in #723
  • sdk-common: add ProcessRuntimeDetector by @iRevive in #724
  • sdk-trace: define meta: InstrumentMeta[F] as val by @iRevive in #731
  • core-metrics: remove typed backend such as {X}.LongBackend, {X}.DoubleBackend by @iRevive in #733
  • core-metrics: remove Histogram.Meta in favor of InstrumentMeta by @iRevive in #730
  • Trace SDK: introduce span limits support by @bio-aeon in #719
  • core-trace: SpanBuilder use macro to preserve laziness by @iRevive in #734
  • sdk-common: add ProcessDetector by @iRevive in #737
  • oteljava: TextMapPropagatorWrapper - add meaningful toString by @iRevive in #738
  • sdk-common: allow disabling resource detectors from the config by @iRevive in #742

Docs

  • docs: add ecosystem page by @iRevive in #740
  • docs: add cross-service propagation example by @iRevive in #739
  • docs: update OpenTelemetry configuration links by @iRevive in #741
  • docs: add SpanLimits configuration section by @iRevive in #743

Upgrades

  • flake.lock: Update by @typelevel-steward in #736
  • Update fs2-core to 3.11.0 by @typelevel-steward in #735
  • Update opentelemetry-api, ... to 1.41.0 by @typelevel-steward in #722
  • Update opentelemetry-javaagent to 2.7.0 by @typelevel-steward in #727
  • Update opentelemetry-instrumentation-annotations to 2.7.0 by @typelevel-steward in #726
  • Update opentelemetry-semconv to 1.27.0-alpha by @typelevel-steward in #729

New Contributors

Full Changelog: v0.8.1...v0.9.0

v0.8.1

27 Jul 10:09
aea3e7e
Compare
Choose a tag to compare

The release is binary compatible with the 0.8.0.

What's Changed

Improvements and bug fixes

  • sdk-common: config Duration decoder - decode number as milliseconds by @iRevive in #713
  • sdk-exporter: properly construct endpoint URI by @iRevive in #712
  • core-metrics: add varargs apply to the BucketBoundaries by @iRevive in #714

Upgrades

  • flake.lock: Update by @typelevel-steward in #702
  • Update circe-generic to 0.14.8 by @typelevel-steward in #698
  • Update pekko-stream to 1.0.3 by @typelevel-steward in #700
  • Update sbt to 1.10.1 by @typelevel-steward in #705
  • Update sbt-typelevel, ... to 0.7.2 by @typelevel-steward in #707
  • Update opentelemetry-api, ... to 1.40.0 by @typelevel-steward in #704
  • Update opentelemetry-javaagent to 2.6.0 by @typelevel-steward in #709
  • Update opentelemetry-instrumentation-annotations to 2.6.0 by @typelevel-steward in #708
  • Update opentelemetry-semconv to 1.26.0-alpha by @typelevel-steward in #706
  • Update scalafmt-core to 3.8.3 by @typelevel-steward in #715

Full Changelog: v0.8.0...v0.8.1

v0.8.0

03 Jun 07:05
c2d8bff
Compare
Choose a tag to compare

The 0.8.0 release features the synchronous gauge.

Synchronous gauge

A gauge is a synchronous instrument that can record non-additive value(s) (e.g., the background noise level - it makes no sense to record the background noise level value from multiple rooms and sum them up) when changes occur.

The gauge can be used in the following way:

for {
  gauge <- Meter[F].gauge[Long]("long-gauge").create
  _     <- gauge.record(1L, Attribute("key", "value"))
} yield ()

What's Changed

Behind the scene

Upgrades

  • Update opentelemetry-api, ... to 1.38.0 by @typelevel-steward in #678
  • Update opentelemetry-javaagent to 2.4.0 by @typelevel-steward in #681
  • Update opentelemetry-instrumentation-annotations to 2.4.0 by @typelevel-steward in #680
  • Update sbt to 1.10.0 by @typelevel-steward in #672
  • Update sbt-typelevel, ... to 0.7.1 by @typelevel-steward in #673
  • Update munit to 1.0.0 by @typelevel-steward in #683
  • Update munit-cats-effect to 2.0.0 by @typelevel-steward in #684
  • Update cats-core, cats-laws to 2.11.0 by @typelevel-steward in #686
  • Update vault to 3.6.0 by @typelevel-steward in #688
  • flake.lock: Update by @typelevel-steward in #685

Full Changelog: v0.7.0...v0.8.0

v0.7.0

05 May 08:43
9a61034
Compare
Choose a tag to compare

We are happy to announce the 0.7.0 release.

The SDK metrics modules are now publicly available. You can record spans and metrics on any platform: JVM, Scala.js, Scala Native. Check out the documentation.

The otel4s-sdk-metrics module is accompanied by the otel4s-sdk-metrics-testkit module to make testing convenient.
The modules are designed to be nearly a drop-in replacement for otel4s-oteljava.

The implementation remains experimental and some features may be lacking.

Note

The otel4s-core modules are binary compatible with 0.6.0 lineage.

Warning

The otel4s-sdk and otel4s-sdk-exporter have several minor breaking changes and are binary incompatible with the 0.6.0 lineage.

New API

OpenTelemetrySdk#AutoConfigured#addExportersConfigurer

You can use addExportersConfigurer to configure both metrics and traces OTLP exporters:

import cats.effect.IO
import org.typelevel.otel4s.sdk.OpenTelemetrySdk
import org.typelevel.otel4s.sdk.exporter.otlp.autoconfigure.OtlpExportersAutoConfigure
import org.typelevel.otel4s.metrics.MeterProvider
import org.typelevel.otel4s.trace.TracerProvider

OpenTelemetrySdk
  .autoConfigured[IO]( // register OTLP exporters configurer
    _.addExportersConfigurer(OtlpExportersAutoConfigure[IO])
  )
  .use { autoConfigured =>
    val sdk = autoConfigured.sdk
    program(sdk.meterProvider, sdk.tracerProvider)
  }

def program(meterProvider: MeterProvider[IO], tracerProvider: TracerProvider[IO]): IO[Unit] =
  ???

Bugfix

oteljava now captures exemplars correctly

Prior 0.7.0 exemplars weren't linked to the active span correctly.
Starting from 0.7.0 the tracing details of the active span, such as trace_id and span_id, will be added to the captured exemplars.

What's Changed

Improvements and enhancements

Documentation

  • docs: add SDK metrics-specific sections by @iRevive in #659

Internal

oteljava module

  • oteljava: correctly capture exemplars. sdk, oteljava: use shared BaseMeterSuite by @iRevive in #660

sdk-{x} modules

  • sdk-common: add ComponentRegistry by @iRevive in #622
  • sdk-trace: rename LoggingSpanExporter to ConsoleSpanExporter by @iRevive in #651
  • sdk: load MeterProvider in OpenTelemetrySdk by @iRevive in #654
  • sdk: add ExportersAutoConfigure by @iRevive in #658
  • sdk tests: generate more realistic data, omit suchThat by @iRevive in #619

sdk-testkit-{x} modules

  • sdk-testkit: add OpenTelemetrySdkTestkit by @iRevive in #653
  • sdk-metrics-testkit: add MetricsTestkit by @iRevive in #652

sdk-exporter-{x} modules

  • sdk-exporter: add ProtocolAutoConfigure by @iRevive in #656
  • sdk-exporter-metrics: enable module publishing by @iRevive in #666
  • sdk-exporter-metrics: add OtlpHttpMetricExporter by @iRevive in #618
  • sdk-exporter-metrics: add OtlpMetricExporterAutoConfigure by @iRevive in #657
  • sdk-exporter-metrics: add MetricsProtoEncoder by @iRevive in #613
  • sdk-exporter-trace: add OtlpHttpSpanExporter.Builder#withClient by @iRevive in #624

sdk-metrics module

Upgrades

  • Update http4s-circe, http4s-ember-client to 0.23.27 by @typelevel-steward in #662
  • Update scala-library, scala-reflect to 2.13.14 by @typelevel-steward in #661
  • Update sbt-typelevel, ... to 0.7.0 by @typelevel-steward in #617
  • Update circe-generic to 0.14.7 by @typelevel-steward in #648
  • Update munit to 1.0.0-RC1 by @typelevel-steward in #645

Full Changelog: v0.6.0...v0.7.0