ocaml-opentelemetry/CHANGES.md
Simon Cruanes aa86fc455d
Some checks are pending
format / format (push) Waiting to run
build / build (4.08.x, ubuntu-latest) (push) Waiting to run
build / build (4.13.x, ubuntu-latest) (push) Waiting to run
build / build (5.0.x, ubuntu-latest) (push) Waiting to run
build / build (5.3.x, ubuntu-latest) (push) Waiting to run
wip changelog
2026-03-06 14:47:31 -05:00

5.3 KiB

0.20

  • major refactor: split library into opentelemetry.core, opentelemetry, opentelemetry.util, opentelemetry.emitter, opentelemetry.atomic, revamp internals
  • per-signal providers: separate trace, meter, and logger providers replace the single monolithic exporter
  • opentelemetry.ambient-context is now a standalone library, once again
  • new opentelemetry-client-ocurl-lwt package
  • client: split opentelemetry-client-sync off of the main client library
  • client: add support for http/json protocol alongside http/protobuf
  • client: add HTTP retry with exponential backoff
  • client: overhaul bounded queue; introduce generic consumer framework
  • client: add Exporter_add_batching, Emitter_add_batching, Emitter_sample, Emitter_limit_interval combinators. Batching is factored out of individual client libraries.
  • client: add sampler as an emitter transformer
  • client: add exporter_stdout and debug_exporter
  • client: add self_metrics and self_debug to exporters
  • client: add after_shutdown callback in ocurl/ocurl-lwt clients
  • Span.dummy: inert span that is never modified
  • Span.record_exception now also sets the span status to error
  • Span.set_span_status added in opentelemetry.trace
  • Span: carry flags to span_link
  • Span: now mutable thanks to ocaml-protoc 4.0, replaces old Scope.t entirely
  • Meter.emit and Meter_provider.emit_l added
  • emitter: add flat_map, tap, to_list, enabled combinators
  • clock abstraction added; ptime used by default in logger and metrics
  • interval limiter used for metrics_callbacks
  • update to OTEL spec 1.8.0
  • update semantic conventions
  • various bug fixes and performance improvements

0.12

  • breaking: change Collector.cleanup so it takes a callback

  • feat: add Eio collector

  • feat: add Logs integration

  • Specify and document the Signal_gatherer API

  • feat: add Globals.service_version

  • add pp implemtation for Client_ocurl.Config

  • feat: adapt to trace 0.10

  • fix concurrency issues, make the libraries thread safe

  • add many tests

  • fix: opentelemetry exception attr spec

  • Add tests for Opentelemetry.Client.Config

  • large refactorings to factor out batching logic out of cohttp-lwt client, also encoding logic. The code for collectors is now much cleaner.

0.11.2

  • fix: opentelemetry-client-ocurl: don't block signals on Windows
  • fix otel-client-ocurl: use ptime timestamps for self metrics

0.11.1

  • add missing sample argument to Traceparent.to_value

0.11

  • add Span_kind.t, add {kind,set_kind} to Scope

  • expose Span_status types

  • add Scope.set_span_status

  • add record_exception

  • otel.trace: extension points for links, record_exn, kind

  • otel.trace: set status of a span based on exception.message

  • add cohttp upper bound version constraint

  • in backends, call tick() before cleaning up

  • reduce memory usage of Scope.t (@tatchi)

  • remove dependency on ambient-context, vendor/inline/specialize it

0.10

  • feat: add support for per-signal urls (by @tatchi)
  • build: disable protobuf regeneration during normal library use
  • fix: emit GC metrics even in the absence of custom metrics

0.9

  • compat with trace 0.7

0.8

  • feat: add dep on hmap, add standard keys to carry around a span context or trace id

  • add semantic conventions for code and HTTP

  • better debug message in curl backend

  • make otel-trace a bit more lightweight

0.7

  • add Span_link.of_span_ctx, Scope.to_span_ctx, dummy values

  • feat: add Span_context, as required by OTEL API guidelines

  • feat: record backtraces in error spans

  • compat with trace 0.6

  • ocurl: add ticker_interval_ms config

  • ocurl: do some self-tracing optionally

  • move protobuf code to opentelemetry.proto

  • perf: rewrite parsing+printing for span ctx as w3c trace ctx

  • perf: when we get multiple messages, check batches only once

  • perf: use ocaml-protoc 3.0.1 for codegen, with faster pbrt

0.6

  • fix ticker thread shutdown
  • migrated to OTEL proto files v1.0
  • replace Thread_local with ocaml-ambient-context, allowing for implicit scope in Lwt/Eio contexts (#34)
  • update ocaml-trace interface to use the new trace.0.3-style API (breaking, see #34)

0.5

  • new implementation for ocurl backend, using ezcurl and queues
  • refactor lwt: Use try%lwt over Lwt.catch
  • add opentelemetry.trace (optional, depends on ocaml-trace)

0.4

  • expose Scope.get_surrounding

  • rehault of GC metrics

  • Trace.with_ now has force_new_trace_id param

  • use thread-local storage to store global scope

  • add Span_link module

  • add a Globals.default_span_kind ref to specify default span kind

  • fix(otel-lwt): missing modules now re-exported

  • fix(client-ocurl): fix tick version used in the absence of bg thread

  • drop dep on ocaml-protoc as the generated code is checked-in

  • update vendored otel to 0.19

0.3

  • improve error reporting from ocurl exporter
  • improve GC sample collection
  • feat(ocurl): simpler, cleaner backend implementation, with graceful exit
  • config: make Config.t private (breaking)

0.2

  • require pbrt only, use ocaml-protoc as a lint
  • add Metrics_callbacks module
  • add histogram metrics (untested)
  • basic support for logs
  • expose tick function (useful in the absence of a background thread)
  • debug the library is set via OTEL_OCAML_DEBUG
  • provide conventions for standard metrics
  • add runtime attrs to GC stats