Compliance of Implementations with Specification
The following tables show which features are implemented by each OpenTelemetry
language implementation.
+
means the feature is supported, -
means it is not supported, N/A
means
the feature is not applicable to the particular language, blank cell means the
status of the feature is not known.
Feature
Go
Java
JS
Python
Ruby
Erlang
PHP
Rust
C++
.Net
TracerProvider
Create TracerProvider
+
+
+
+
+
+
+
+
+
+
Get a Tracer
+
+
+
+
+
+
+
+
+
+
Safe for concurrent calls
+
+
+
-
+
+
+
+
+
+
Shutdown
+
Tracing Context Utilities
Get active Span
+
+
Set active Span
+
+
Tracer
Create a new Span
+
+
+
+
+
+
+
+
+
+
Get active Span
+
+
+
+
+
+
+
+
+
+
Mark Span active
+
+
+
+
+
+
+
+
-
-
Safe for concurrent calls
+
+
+
-
+
+
+
+
+
+
SpanReference
Use SpanReference instead of SpanContext
IsValid
+
+
+
+
+
+
+
+
+
+
IsRemote
-
+
+
+
+
+
+
+
+
+
Conforms to the W3C TraceContext spec
+
+
+
+
+
+
-
+
+
Span
Create root span
+
+
+
+
+
+
+
+
+
+
Create with default parent (active span)
+
+
+
+
+
+
+
+
+
+
Create with parent from Context
+
+
+
+
+
+
+
+
+
+
No explicit parent Span/SpanReference allowed
+
SpanProcessor.OnStart receives parent Context
UpdateName
+
+
+
+
+
+
+
+
-
+
User-defined start timestamp
+
+
+
+
+
+
+
+
+
+
End
+
+
+
+
+
+
+
+
+
+
End with timestamp
+
+
+
+
+
+
+
-
+
+
IsRecording
+
+
+
+
+
+
+
+
+
IsRecording becomes false after End
Set status with StatusCode (Unset, Ok, Error)
Safe for concurrent calls
+
+
+
-
+
+
+
+
+
+
events collection size limit
+
attribute collection size limit
+
links collection size limit
+
Span attributes
SetAttribute
+
+
+
+
+
+
+
+
+
+
Set order preserved
+
-
+
+
+
+
+
+
+
+
String type
+
+
+
+
+
+
+
+
+
+
Boolean type
+
+
+
+
+
+
+
+
+
+
Double floating-point type
+
+
+
+
+
+
-
+
+
+
Signed int64 type
+
+
+
+
+
+
-
+
+
+
Array of primitives (homogeneous)
+
+
+
+
+
-
+
+
+
+
null
values documented as invalid/undefined
+
Unicode support for keys and string values
+
+
+
+
+
+
+
+
+
+
Span linking
AddLink
+
+
+
+
+
+
+
+
-
+
Safe for concurrent calls
+
+
+
+
+
+
+
+
-
+
Span events
AddEvent
+
+
+
+
+
+
+
+
-
+
Add order preserved
+
+
+
+
+
+
+
+
-
+
Safe for concurrent calls
+
+
+
+
+
+
+
+
-
+
Span exceptions
RecordException
-
+
+
+
+
-
+
-
+
RecordException with extra parameters
-
+
+
-
-
-
+
-
+
Sampling
Allow samplers to modify tracestate
-
ShouldSample gets full parent Context
Feature
Go
Java
JS
Python
Ruby
Erlang
PHP
Rust
C++
.Net
Basic support
+
Use official header name baggage
+
+
Feature
Go
Java
JS
Python
Ruby
Erlang
PHP
Rust
C++
.Net
TBD
Feature
Go
Java
JS
Python
Ruby
Erlang
PHP
Rust
C++
.Net
Create from Attributes
+
+
+
+
+
Create empty
+
+
+
+
+
Merge
+
+
+
+
+
Retrieve attributes
+
+
+
+
+
Feature
Go
Java
JS
Python
Ruby
Erlang
PHP
Rust
C++
.Net
Create Context Key
+
+
+
+
Get value from Context
+
+
+
+
Set value for Context
+
+
+
+
Attach Context
+
+
+
+
Detach Context
+
+
+
+
Get current Context
+
+
+
+
Composite Propagator
+
+
+
Global Propagator
+
+
+
+
TraceContext Propagator
+
+
+
+
B3 Propagator
+
+
+
Jaeger Propagator
-
+
-
TextMapPropagator
Fields
+
-
-
Setter argument
+
+
+
Getter argument
+
+
+
Getter argument returning Keys
-
+
-
Feature
Go
Java
JS
Python
Ruby
Erlang
PHP
Rust
C++
.Net
OTEL_RESOURCE_ATTRIBUTES
+
+
+
+
+
-
-
-
-
OTEL_LOG_LEVEL
-
+
-
+
-
-
-
-
OTEL_PROPAGATORS
+
-
-
-
-
OTEL_BSP_*
+
+
+
-
-
-
-
OTEL_EXPORTER_OTLP_*
-
+
-
-
-
-
OTEL_EXPORTER_JAEGER_*
-
+
-
-
-
-
OTEL_EXPORTER_ZIPKIN_*
+
-
-
-
-
OTEL_EXPORTER
-
OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT
OTEL_SPAN_EVENT_COUNT_LIMIT
OTEL_SPAN_LINK_COUNT_LIMIT
Feature
Go
Java
JS
Python
Ruby
Erlang
PHP
Rust
C++
.Net
Standard output (logging)
+
+
+
+
+
+
-
+
+
+
In-memory (mock exporter)
+
+
+
+
+
+
-
-
-
-
OTLP
OTLP/gRPC Exporter
+
+
+
+
+
+
+
+
OTLP/HTTP binary Protobuf Exporter
-
-
+
-
+
+
+
+
OTLP/HTTP JSON Protobuf Exporter
-
-
+
-
-
OTLP/HTTP gzip Content-Encoding support
-
-
+
-
-
Concurrent sending
-
+
-
-
+
Honors retryable responses with backoff
+
+
+
+
-
Honors non-retryable responses
+
-
+
+
-
Honors throttling response
+
-
+
+
-
Multi-destination spec compliance
-
-
-
Zipkin
Zipkin V1 JSON
-
-
-
-
Zipkin V1 Thrift
-
-
-
-
Zipkin V2 JSON
+
+
-
+
+
Zipkin V2 Protobuf
-
+
-
Service name mapping
+
+
+
+
+
+
+
SpanKind mapping
+
+
+
+
+
+
+
InstrumentationLibrary mapping
+
-
+
-
-
-
Boolean attributes
+
+
+
+
+
+
+
Array attributes
+
+
+
-
+
+
+
Status mapping
+
-
+
+
+
+
+
Event attributes mapping to Annotations
+
+
+
+
+
+
Integer microseconds in timestamps
+
Jaeger
TBD
OpenCensus
TBD
Prometheus
TBD