package ppx_trace

  1. Overview
  2. Docs
A ppx-based preprocessor for trace

Install

Dune Dependency

Authors

Maintainers

Sources

trace-0.10.tbz
sha256=c5a43827bbd5521e779c8856e44f4c718dccda902d00a242b598516110ada04d
sha512=f19cb25a767ed428cb1d4a497312267524bfaaf9550caa5fc1e84809494f0b7eaf26030d95563c75dea66606fcbec1be7e34baa4cba86fc57d64bc5d5b98efd5

doc/CHANGES.html

0.10

  • breaking: manual spans now take a explicit_span_ctx as parent, that can potentially be transmitted across processes/machines. It also is intended to be more compatible with OTEL.
  • breaking trace.subscriber: timestamps are int64ns now, not floats
  • breaking trace: pass a string trace_id in manual spans, which helps for backends such as opentelemetry. It's also useful for extensions.
  • refactor trace-fuchsia: full revamp of the library, modularized, using subscriber API
  • refactor trace-tef: split into exporter,writer,subscriber, using subscriber API
  • feat: add trace.event, useful for background threads
  • feat trace.subscriber: add Span_tbl, and a depopt on picos_aux
  • feat trace.subscriber: tee a whole array at once
  • feat tef-tldrs: use EMIT_TEF_AT_EXIT
  • feat trace.subscriber: depopt on unix for timestamps
  • refactor trace-tef: depopt on unix for TEF timestamps

0.9.1

  • fix: upper bound on ppxlib
  • feat trace-tef: print names of non-closed spans upon exit
  • fix: block signals in background threads

0.9

  • add an extensible sum type, so users can implement custom events. For example an OTEL collector can provide custom events to link two spans to one another.

0.8

  • add trace.subscriber instead of a separate library
  • add trace-tef.tldrs, to trace multiple processes easily (with external rust daemon)
  • breaking: trace-tef: use mtime.now, not a counter, for multiproc
  • trace-fuchsia: require thread-local-storage 0.2

0.7

  • feat: add levels to Trace_core. Levels are similar to logs levels, to help control verbosity.
  • add hmap as a depopt (#28)
  • fix: truncate large strings in fuchsia

0.6

  • add ppx_trace for easier instrumentation.

    • let%trace span = "foo" in … will enter a scope span named "foo"
    • let%trace () = "foo" in … will enter a scope named "foo" with a hidden name
  • add trace-fuchsia backend, which produces traces in the binary format of fuchsia. These traces are reasonably efficient to produce (~60ns per span on my machines) and reasonably compact on disk, at least compared to the TEF backend.

0.5

  • perf: reduce overhead in trace-tef
  • perf: add Mpsc_queue, adapted from picos, to trace-tef

0.4

  • add ?data to counter_int and counter_float
  • add float to user data
  • add add_data_to_current_span and add_data_to_manual_span
  • make explicit_span.meta mutable
  • trace-tef: write to trace.json if env variable TRACE is either 1 or true
  • trace-tef: emit function name, if provided, as a metadata key/value pair
  • re-export trace.core in trace
  • perf: in trace-tef, use broadcast instead of signal in the job queue

0.3

  • add explicit spans, for more precise tracing
  • rename repo to ocaml-trace
  • trace-tef: add a ticker thread to ensure we flush the file regularly

0.2

  • trace-tef: additional argument to with_setup; env for "stdout"/"stderr"
  • refactor: avoid conflicting with stdlib Trace module by adding sublibrary trace.core. Programs that use compiler-libs.toplevel should use trace.core directly, because using trace will cause linking errors.
  • perf(trace-tef): improve behavior of collector under contention by pulling all events at once in the worker

0.1

initial release

OCaml

Innovation. Community. Security.