Changelog
View SourceAll notable changes to this project will be documented in this file.
[0.6.1] - 2026-04-16
Fixed
- Moved hex package
fileslist fromrebar.configtoinstrument.app.srcsodo_build.sh,do_cmake.sh, andc_src/build assets are actually shipped in the published tarball (the rebar.config{hex, [{files, ...}]}entry was silently ignored for non-standard files) - ex_doc XML parse errors caused by
<<...>>literals and comparison operators in doc comments
[0.6.0] - 2026-04-16
Changed
- Renamed
instrumentmodule toinstrument_metricto avoid conflict with Erlang'sruntime_toolsinstrument module - Bumped application version in
instrument.app.srcto 0.6.0
[0.5.0] - 2026-04-08
Added
- OTel spec compliance features: span limits, dropped counts tracking, exemplar support
- B3 ParentSpanId injection for nested spans
- Aggregation temporality support (cumulative/delta)
- Observable instrument 1-arity callbacks with attributes
- Tests for OTel spec compliance (30 new test cases)
- Throughput optimizations for exporter and processor lookup
- Updated benchmarks documentation
Fixed
- Spawned-child trace leak with session-based cleanup
- OpenTelemetry spec compliance issues in OTLP export
- Preserved tracer scope in OTLP span export
[0.4.0] - 2026-04-07
Added
- Tail-based sampling span processor
- Generic client tracing utilities and attribute-based sampling
- Flight recorder using erl_tracer NIF for low-overhead message tracing
- Global tracing enable flag for performance optimization
- Custom span_id support to tracer API
instrument_testmodule for validating instrumentationstartTimeUnixNanoto OTLP metrics export- Debug logging to broad exception handlers
- Error logging to span processor callbacks
- Benchmarks for OpenTelemetry APIs and client tracing strategies
- Design and internals documentation
- Book chapters and reference guides
- Elixir users guide
- Runnable cross-process tracing and logging examples
- Tests for metric names and attributes in exporter
- Tests for tracing disabled and custom span_id
- Regression tests for 4 bug fixes (record_only sampling, metric description/unit, histogram view boundaries, OTLP scope config)
Fixed
- Critical tracing and OTLP spec compliance issues
- Histogram and OTLP spec compliance issues
- Empty bucket validation crash in histogram
- Tuple metric name handling for OTEL metrics
- Race condition in tracer exporter list
- Race condition in metric index updates
- Vec metric cleanup and concurrent attribute race condition
mark/1,2not working in spawned child processes- erl_tracer issues: teardown, idempotency, async parent spans
- Multiple bugs in client and tail sampler
- 5 bugs in span processors, metrics, and context propagation
- 5 client tracing issues
- Test failures in metrics exporter and span processor
- E2E test skip behavior and timing issues
Changed
- Replaced seq_trace with erl_tracer NIF for flight recorder performance
- Improved flight recorder eviction performance
- Improved config auto-registration and processor shutdown handling
- Improved edge case handling in tail sampler
- Renamed exporter callbacks to avoid gen_server conflicts
- Added xref checks
- Documented processor callback restrictions
- Filter internal tracer bootstrap messages in trace_receive
[0.3.0] - 2026-04-01
Added
- OpenTelemetry-compatible API with native implementation
- Context propagation via
instrument_contextmodule - W3C TraceContext format support in
instrument_propagation - W3C Baggage propagation via
instrument_baggagemodule - B3 single-header propagator (
instrument_propagator_b3) for Zipkin compatibility - B3 multi-header propagator (
instrument_propagator_b3_multi) for X-B3-* headers - Support for
b3andb3multiinOTEL_PROPAGATORSenvironment variable - Native span implementation via
instrument_tracerwith full lifecycle management - OTel-compatible MeterProvider/Meter API via
instrument_meter - Attribute handling via
instrument_attributes - Erlang logger integration via
instrument_loggerwith automatic trace correlation - Trace/Span ID generation per W3C spec via
instrument_id - Span exporter system via
instrument_exporterwith batch processing - Console exporter (
instrument_exporter_console) with text and JSON formats - OTLP HTTP exporter (
instrument_exporter_otlp) for OpenTelemetry collectors - Cross-process context propagation helpers
- New test suites for context, tracer, meter, and exporter modules
- New
instrument_otel.hrlheader with OTel record definitions - Documentation guides: getting started, instrumentation, context propagation, exporters
- E2E tests with Docker (Prometheus + Jaeger)
- Stress tests and race condition tests
- OpenTelemetry compatibility info to README
- Sampling and processing guide, external collectors documentation
Fixed
- Context/memory leaks with instrument cleanup
Changed
- Extended
metricrecord with OTel fields (description, unit, meter, attributes) - Updated application description to mention OpenTelemetry support
- Added hackney 3.2.1 as dependency for OTLP HTTP export
- Documentation updates for B3 propagation and OTel clarity
[0.2.0] - 2026-03-31
Added
- Vec API for labeled metrics (prometheus-cpp style):
new_counter_vec/3,new_gauge_vec/3,new_histogram_vec/3 - Direct vec operations:
inc_counter_vec/2,3,get_counter_vec/2,inc_gauge_vec/2,3,dec_gauge_vec/2,3,set_gauge_vec/3,get_gauge_vec/2,observe_histogram_vec/3,get_histogram_vec/2 labels/2function to get labeled metric instances- Prometheus text format export via
instrument_prometheus:format/0 - GitHub Actions CI for OTP 26/27 on Linux and macOS
- ex_doc documentation support
- Type specs for prometheus, vector, and registry modules
Changed
- Modernized NIF code from C++ to C11 with CMake build system
- Updated README with examples and API documentation
- Updated copyright to 2017-2026
[0.1.0] - 2017-04-28
Added
- Initial release
- Counter metrics with
new_counter/2,inc_counter/1,2,get_counter/1 - Gauge metrics with
new_gauge/2,inc_gauge/1,2,dec_gauge/1,2,set_gauge/2,get_gauge/1 - Histogram metrics with
new_histogram/2,3,observe_histogram/2,get_histogram/1 - Vector support for labeled metrics
- NIF-based implementation for high performance