All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
This project adheres to Semantic Versioning.
Code struct from the go.opentelemetry.io/otel/codes package now supports JSON marshaling and unmarshaling as well as implements the Stringer interface. (#1214)HTTPSupplier, HTTPExtractor, HTTPInjector, and HTTPPropagator from the go.opentelemetry.io/otel/api/propagation package were replaced with unified TextMapCarrier and TextMapPropagator in the go.opentelemetry.io/otel package. (#1212)New function from the go.opentelemetry.io/otel/api/propagation package was replaced with NewCompositeTextMapPropagator in the go.opentelemetry.io/otel package. (#1212)go.opentelemetry.io/otel/codes package have been updated to match the latest OpenTelemetry specification. They now are Unset, Error, and Ok. They no longer track the gRPC codes. (#1214)StatusCode field of the SpanData struct in the go.opentelemetry.io/otel/sdk/export/trace package now uses the codes package from this package instead of the gRPC project. (#1214)go.opentelemetry.io/otel/api/baggage package into go.opentelemetry.io/otel/propagators. (#1217)go.opentelemetry.io/otel/label.ArrayValue() are now used in the returned Value instead of using the mutable data itself. (#1226)ExtractHTTP and InjectHTTP functions from the go.opentelemetry.io/otel/api/propagation package were removed. (#1212)Propagators interface from the go.opentelemetry.io/otel/api/propagation package was removed to conform to the OpenTelemetry specification. The explicit TextMapPropagator type can be used in its place as this is the Propagator type the specification defines. (#1212)SetAttribute method of the Span from the go.opentelemetry.io/otel/api/trace package was removed given its redundancy with the SetAttributes method. (#1216)HostHostNameKey in Resource semantic conventions. (#1219)SpanConfigure function in go.opentelemetry.io/otel/api/trace to create a new SpanConfig from SpanOptions. (#1108)go.opentelemetry.io/otel/api/trace package, NewTracerConfig was added to construct new TracerConfigs. This addition was made to conform with our project option conventions. (#1155)SpanProcessor interface now has a ForceFlush() method. (#1166)StartOption and EndOption in go.opentelemetry.io/otel/api/trace with SpanOption. This change is matched by replacing the StartConfig and EndConfig with a unified SpanConfig. (#1108)LinkedTo span option in go.opentelemetry.io/otel/api/trace with WithLinks. This is be more consistent with our other option patterns, i.e. passing the item to be configured directly instead of its component parts, and provides a cleaner function signature. (#1108)go.opentelemetry.io/otel/api/trace TracerOption was changed to an interface to conform to project option conventions. (#1109)B3 and TraceContext from within the go.opentelemetry.io/otel/api/trace package to their own go.opentelemetry.io/otel/propagators package. This removal of the propagators is reflective of the OpenTelemetry specification for these propagators as well as cleans up the go.opentelemetry.io/otel/api/trace API. (#1118)ProbabilitySampler to TraceIDRatioBased and change semantics to ignore parent span sampling status. (#1115)tools package under internal. (#1141)go.opentelemetry.io/otel/api/correlation package to go.opentelemetry.io/otel/api/baggage. (#1142) The correlation.CorrelationContext propagator has been renamed baggage.Baggage. Other exported functions and types are unchanged.ParentOrElse sampler to ParentBased and allow setting samplers depending on parent span. (#1153)go.opentelemetry.io/otel/api/trace package, SpanConfigure was renamed to NewSpanConfig. (#1155)dependabot.yml to add a Skip Changelog label to dependabot-sourced PRs. (#1161)newConfig() instead of configure(). (#1163)otlp.Config type has been unexported and changed to otlp.config, along with its initializer. (#1163)go.opentelemetry.io/otel/api/metric.ConfigureInstrument to NewInstrumentConfig and go.opentelemetry.io/otel/api/metric.ConfigureMeter to NewMeterConfig.go.opentelemetry.io/otel/api/unit package to go.opentelemetry.io/otel/unit. (#1185)Provider to MeterProvider in the go.opentelemetry.io/otel/api/metric package. (#1190)NoopProvider to NoopMeterProvider in the go.opentelemetry.io/otel/api/metric package. (#1190)NewProvider to NewMeterProvider in the go.opentelemetry.io/otel/api/metric/metrictest package. (#1190)Provider to MeterProvider in the go.opentelemetry.io/otel/api/metric/registry package. (#1190)NewProvider to NewMeterProvider in the go.opentelemetry.io/otel/api/metri/registryc package. (#1190)Provider to TracerProvider in the go.opentelemetry.io/otel/api/trace package. (#1190)NoopProvider to NoopTracerProvider in the go.opentelemetry.io/otel/api/trace package. (#1190)Provider to TracerProvider in the go.opentelemetry.io/otel/api/trace/tracetest package. (#1190)NewProvider to NewTracerProvider in the go.opentelemetry.io/otel/api/trace/tracetest package. (#1190)WrapperProvider to WrapperTracerProvider in the go.opentelemetry.io/otel/bridge/opentracing package. (#1190)NewWrapperProvider to NewWrapperTracerProvider in the go.opentelemetry.io/otel/bridge/opentracing package. (#1190)Provider method of the pull controller to MeterProvider in the go.opentelemetry.io/otel/sdk/metric/controller/pull package. (#1190)Provider method of the push controller to MeterProvider in the go.opentelemetry.io/otel/sdk/metric/controller/push package. (#1190)ProviderOptions to TracerProviderConfig in the go.opentelemetry.io/otel/sdk/trace package. (#1190)ProviderOption to TracerProviderOption in the go.opentelemetry.io/otel/sdk/trace package. (#1190)Provider to TracerProvider in the go.opentelemetry.io/otel/sdk/trace package. (#1190)NewProvider to NewTracerProvider in the go.opentelemetry.io/otel/sdk/trace package. (#1190)SamplingDecision values to comply with OpenTelemetry specification change. (#1192)ot.status_code & ot.status_description to otel.status_code & otel.status_description. (#1201)SpanProcessors in the order they were registered with the TracerProvider. (#1195)SpanProcessors in the order they were registered. (#1203)go.opentelemetry.io/otel/propagators. It is now located in the go.opentelemetry.io/contrib/propagators/ module. (#1191)HTTPStatusTextKey from package go.opentelemetry.io/otel/semconv. (#1194)ParentSampler, corrected to ParentBased. (#1171)Noop and InMemory SpanBatcher implementations to help with testing integrations. (#994)WithSpanProcessor ProviderOption is added to the go.opentelemetry.io/otel/sdk/trace package to create a Provider and automatically register the SpanProcessor. (#1078)sdk/metric/processor/test to sdk/metric/processor/processortest. (#1049)sdk/metric/controller/test to sdk/metric/controller/controllertest. (#1049)api/testharness to api/apitest. (#1049)api/trace/testtrace to api/trace/tracetest. (#1049)go.opentelemetry.io/otel/bridge/opentracing bridge package has been made into its own module. This removes the package dependencies of this bridge from the rest of the OpenTelemetry based project. (#1038)go.opentelemetry.io/otel/api/standard package to go.opentelemetry.io/otel/semconv to avoid the ambiguous and generic name standard and better describe the package as containing OpenTelemetry semantic conventions. (#1016)OTEL_RESOURCE_LABELS to OTEL_RESOURCE_ATTRIBUTES (#1042)WithSyncer with WithBatcher in examples. (#1044)google.golang.org/grpc/codes dependency in the API with an equivalent go.opentelemetry.io/otel/codes package. (#1046)go.opentelemetry.io/otel/api/label and go.opentelemetry.io/otel/api/kv into the new go.opentelemetry.io/otel/label package. (#1060)*Callback with *Func. (#1061)go.opentelemetry.io/otel/sdk/export/trace interfaces SpanSyncer and SpanBatcher have been replaced with a specification compliant Exporter interface. This interface still supports the export of SpanData, but only as a slice. Implementation are also required now to return any error from ExportSpans if one occurs as well as implement a Shutdown method for exporter clean-up. (#1078)go.opentelemetry.io/otel/sdk/trace NewBatchSpanProcessor function no longer returns an error. If a nil exporter is passed as an argument to this function, instead of it returning an error, it now returns a BatchSpanProcessor that handles the export of SpanData by not taking any action. (#1078)go.opentelemetry.io/otel/sdk/trace NewProvider function to create a Provider no longer returns an error, instead only a *Provider. This change is related to NewBatchSpanProcessor not returning an error which was the only error this function would return. (#1078)Sampler interface provided by the SDK instead.grpctrace instrumentation was moved to the go.opentelemetry.io/contrib repository and out of this repository. This move includes moving the grpc example to the go.opentelemetry.io/contrib as well. (#1027)WithSpan method of the Tracer interface. The functionality this method provided was limited compared to what a user can provide themselves. It was removed with the understanding that if there is sufficient user need it can be added back based on actual user usage. (#1043)RegisterSpanProcessor and UnregisterSpanProcessor functions. These were holdovers from an approach prior to the TracerProvider design. They were not used anymore. (#1077)oterror package. (#1026)othttp and httptrace instrumentations were moved to go.opentelemetry.io/contrib. (#1032)semconv.HTTPServerMetricAttributesFromHTTPRequest() function no longer generates the high-cardinality http.request.content.length label. (#1031)End method is called during a panic (i.e. it was deferred). (#1043)go.opentelemetry.io/otel to the OTLP exporter to reduce dependency overhead. (#1050)otel-collector example referenced outdated collector processors. (#1006)This release migrates the default OpenTelemetry SDK into its own Go module, decoupling the SDK from the API and reducing dependencies for instrumentation packages.
NewExportPipeline and InstallNewPipeline constructor functions to match the common pattern. These function build a new exporter with default SDK options and register the exporter with the global package respectively. (#944)testtrace package now tracks the trace.SpanKind for each span. (#987)RegisterGlobal Option in the Jaeger exporter with an InstallNewPipeline constructor function. This matches the other exporter constructor patterns and will register a new exporter after building it with default configuration. (#944)go.opentelemetry.io/otel/exporters/trace/stdout) and metric (go.opentelemetry.io/otel/exporters/metric/stdout) stdout exporters are now merged into a single exporter at go.opentelemetry.io/otel/exporters/stdout. This new exporter was made into its own Go module to follow the pattern of all exporters and decouple it from the go.opentelemetry.io/otel module. (#956, #963)go.opentelemetry.io/otel/exporters/test test package to go.opentelemetry.io/otel/sdk/export/metric/metrictest. (#962)go.opentelemetry.io/otel/api/kv/value package was merged into the parent go.opentelemetry.io/otel/api/kv package. (#968)value.Bool was replaced with kv.BoolValue.value.Int64 was replaced with kv.Int64Value.value.Uint64 was replaced with kv.Uint64Value.value.Float64 was replaced with kv.Float64Value.value.Int32 was replaced with kv.Int32Value.value.Uint32 was replaced with kv.Uint32Value.value.Float32 was replaced with kv.Float32Value.value.String was replaced with kv.StringValue.value.Int was replaced with kv.IntValue.value.Uint was replaced with kv.UintValue.value.Array was replaced with kv.ArrayValue.Infer to Any in the go.opentelemetry.io/otel/api/kv package. (#972)othttp to use the httpsnoop package to wrap the ResponseWriter so that optional interfaces (http.Hijacker, http.Flusher, etc.) that are implemented by the original ResponseWriterare also implemented by the wrapped ResponseWriter. (#979)go.opentelemetry.io/otel/sdk/metric/aggregator/test package to go.opentelemetry.io/otel/sdk/metric/aggregator/aggregatortest. (#980)go.opentelemetry.io/otel/sdk. (#985)Sampler from AlwaysOn to ParentOrElse(AlwaysOn). (#989)IndexedAttribute function from the go.opentelemetry.io/otel/api/label package was removed in favor of IndexedLabel which it was synonymous with. (#970)global.Handle for span export errors in the OTLP exporter. (#946)go.opentelemetry.io/otel/api package. (#977)go.opentelemetry.io/otel/instrumentation package. (#983)go.opentelemetry.io/otel/instrumentation/grpctrace interceptors into Go example tests. (#984)internal/opentelemetry-proto-gen. (#938)open-telemetry/opentelemetry-proto imported as a git submodule under internal/opentelemetry-proto. References to github.com/open-telemetry/opentelemetry-proto changed to go.opentelemetry.io/otel/internal/opentelemetry-proto-gen. (#942)structs for key-value pairs will be marshalled using JSON rather than Sprintf. (#948)github.com/open-telemetry/opentelemetry-collector. (#943)B3Encoding type to represent the B3 encoding(s) the B3 propagator can inject. A value for HTTP supported encodings (Multiple Header: MultipleHeader, Single Header: SingleHeader) are included. (#882)FlagsDeferred trace flag to indicate if the trace sampling decision has been deferred. (#882)FlagsDebug trace flag to indicate if the trace is a debug trace. (#882)peer.service semantic attribute. (#898)faas.coldstart and container.id. (#909)http.request_content_length in HTTP request basic attributes. (#905)WithBatchMaxCount option to specify the maximum number of spans sent in a batch. (#931)CONTRIBUTING.md to ask for updates to CHANGELOG.md with each pull request. (#879)SingleHeader field has been replaced with InjectEncoding. This new field can be set to combinations of the B3Encoding bitmasks and will inject trace information in these encodings. If no encoding is set, the propagator will default to MultipleHeader encoding. (#882)api/standard package, the FaaS* key names are appended with a suffix of Key. (#920)"api/standard".FaaSName -> FaaSNameKey"api/standard".FaaSID -> FaaSIDKey"api/standard".FaaSVersion -> FaaSVersionKey"api/standard".FaaSInstance -> FaaSInstanceKeyFlagsUnused trace flag is removed. The purpose of this flag was to act as the inverse of FlagsSampled, the inverse of FlagsSampled is used instead. (#882)B3SingleHeader, B3DebugFlagHeader, B3TraceIDHeader, B3SpanIDHeader, B3SampledHeader, B3ParentSpanIDHeader) are removed. If B3 header keys are needed the authoritative OpenZipkin package constants should be used instead. (#882)b3 instead of the previous X-B3. (#881)b3: 0, b3: 1, or b3: d) for a Single B3 Header. (#882)X-B3-Sampling header. (#882)X-B3-Sampling header when injecting. (#882)UnixNano. (#896)Unknown when no HTTP status code is provided as it is assumed to be 200 OK. (#908)httptrace.clientTracer closes http.headers span. (#912)HTTPClientAttributesFromHTTPRequest. (#905)grpctrace instrumentation uses a span name conforming to the OpenTelemetry semantic conventions (does not contain a leading slash (/)). (#922)grpctrace instrumentation includes an rpc.method attribute now set to the gRPC method name. (#900, #922)grpctrace instrumentation rpc.service attribute now contains the package name if one exists. This is in accordance with OpenTelemetry semantic conventions. (#922)This release implements the v0.5.0 version of the OpenTelemetry specification.
Accumulation type to metric SDK to transport telemetry from Accumulators to Processors. This replaces the prior Record struct use for this purpose. (#835)Meter and Tracer implementations accept instrumentation version version as an optional argument. This instrumentation version is passed on to exporters. (#811) (#805) (#802)aggregation.Kind in the export metric API. (#808)SetName during span initialization. (#791)go.opentelemetry.io/otel/api/oterror package to uniformly support error handling and definitions for the project. (#778)global default implementation of the go.opentelemetry.io/otel/api/oterror.Handler interface to be used to handle errors prior to an user defined Handler. There is also functionality for the user to register their Handler as well as a convenience function Handle to handle an error with this global Handler(#778)application/json header for the Zipkin exporter is included in all exports. (#774)api/standard package. #769Integrator to Processor in the metric SDK. (#863)AggregationSelector to AggregatorSelector. (#859)SynchronizedCopy to SynchronizedMove. (#858)simple integrator to basic integrator. (#857)Aggregator.Checkpoint API is renamed to SynchronizedCopy and adds an argument, a different Aggregator into which the copy is stored. (#812)export.Aggregator contract is that Update() and SynchronizedCopy() are synchronized with each other. All the aggregation interfaces (Sum, LastValue, ...) are not meant to be synchronized, as the caller is expected to synchronize aggregators at a higher level after the Accumulator. Some of the Aggregators used unnecessary locking and that has been cleaned up. (#812)metric.Number was replaced by int64 now that we use sync.Mutex in the MinMaxSumCount and Histogram Aggregators. (#812)AlwaysParentSample with ParentSample(fallback) to match the OpenTelemetry v0.5.0 specification. (#810)sdk/export/metric/aggregator to sdk/export/metric/aggregation. #808global.Handle function. (#791)plugin directory to instrumentation to match the OpenTelemetry specification. (#779)New() consistent. (#781)Uint64NumberKind and related functions from the API. (#864)Aggregator.Checkpoint and Integrator.Process as they were unused. (#803)SpanID is no longer included in parameters for sampling decision to match the OpenTelemetry specification. (#775)go.sum and go.mod when running dependabot tidy-up. (#871)Aggregator testing has been updated and cleaned. (#812)metric.Number(0) expressions are replaced by 0 where possible. (#812)global handler_test.go test failure. #804BatchSpanProcessor.Shutdown to wait until all spans are processed. (#766)api/standard keys instead of custom keys. (#782)Resources in the prometheus exporter. (#757)UpDownSumObserver instrument. (#750)SumObserver instrument. (#747)UpDownCounter instrument. (#745)Option and configuration function WithTimeout to the push controller. (#742)api/standards package to implement semantic conventions and standard key-value generation. (#731)Register* functions in the metric API to New* for all Observer instruments. (#761)[]float64 for histogram boundaries, not []metric.Number. (#758)Syncer instead of as an unneeded Batcher. (#756)WithResourceAttributes() with WithResource() in the trace SDK. (#754)ScheduleDelayMillis to BatchTimeout in the trace BatchSpanProcessor.(#752)Resource from the Export method parameter into the metric export Record. (#739)Observer instrument to ValueObserver. (#734)Provider()) to return a metric.Provider instead of the old Meter method that acted as a metric.Provider. (#738)Measure instrument by ValueRecorder instrument. (#732)"Correlation-Context" to "otcorrelations" to match the OpenTelemetry specification. 727)ClientStream override methods do not panic in grpctrace package. (#755)BatchSpanProcessor test until a fix is found. (#743)string case in kv Infer function. (#746)api/metrics push controller and add CheckpointSet synchronization. (#737)golang-1.14 for examples. (#733)UnaryInterceptorClient. (#695)api/metric code layout. (#724)Observer callback support. (#717)api types to root package of project. (#696)othttp.Transport for simple client instrumentation. (#678)SetAttribute(string, interface{}) to the trace API. (#674)Stringer and Infer methods to keys. (#662)NewKey in the kv package to just Key. (#721)core and key to kv package. (#720)Meter a struct so the abstract MeterImpl can be passed and simplify implementation. (#709)Batcher to Integrator to match draft OpenTelemetry SDK specification. (#710)Ungrouped integrator to simple.Integrator to match draft OpenTelemetry SDK specification. (#710)SDK struct to Accumulator to match draft OpenTelemetry SDK specification. (#710)Number from core to api/metric package. (#706)SpanContext from core to trace package. (#692)Traceparent to traceparent to implement the W3C specification. (#681)const for padding 64-bit B3 trace IDs. (#701)mockZipkin listen address from :0 to 127.0.0.1:0. (#700)StateLocker implementation. (#688)key benchmark and use reflection in key.Infer(). (#679)global test by using global.Meter with RecordBatch(). (#680)StateLocker. (#669)MinMaxSumCount to a mutex lock implementation instead of StateLocker. (#667)WithKeys. (#672)golangci-lint and work around the corrupting bug. (#666) (#670)Dockerfile and docker-compose.yml to run example code. (#635)grpctrace package that provides gRPC client and server interceptors for both unary and stream connections. (#621)api/label package, providing common label set implementation. (#651)Resources. (#654)TraceID and SpanID implementations for Stringer interface. (#642)RemoteAddrKey in the othttp plugin to include the HTTP client address in top-level spans. (#627)WithSpanFormatter option to the othttp plugin. (#617)String method to the Resource to return a hashable identifier for a now unique resource. (#613)Iter method to the Resource to return an array AttributeIterator. (#613)Equal method to the Resource test the equivalence of resources. (#613)AttributeIterator) for Resource attributes.NewExporter now requires a serviceName argument to ensure this needed values is provided. (#644)Resources through the metrics export pipeline. (#659)WithKeys option from the metric API. (#639)label.Set.Equivalent value instead of an encoding in the batcher. (#658)trace.Exporter to trace.SpanSyncer in comments. (#653)api/key package by updating comments and fixing usages locally. (#650)Checkpoint only after Update; Keep records in the sync.Map longer. (#647)reflect.ValueOf() in metric Labels. (#649)Resource and labels. (#626)string representation of an associated Resource as the batching key. (#623)SpanData transform to only include the ParentSpanID if one exists. (#614)Resource internal representation to uniquely and reliably identify resources. (#613)CheckpointSet.ForEach in prometheus exporter. (#622)pre_release.sh to update version in sdk/opentelemetry.go. (#607)tag.sh to create signed tags. (#604)api/metric/registry that exposes a MeterImpl wrapper for use by SDKs to generate unique instruments. (#580)LabelSet from the metric API. This is replaced by a []core.KeyValue slice. (#595)Labels from the metric API's Meter interface. (#595)export.Labels became an interface which the SDK implements and the export package provides a simple, immutable implementation of this interface intended for testing purposes. (#574)internal/metric.Meter to MeterImpl. (#580)api/global/internal.obsImpl to asyncImpl. (#580)RecordBatch benchmark. (#594)BatchedSpanProcessor to process the queue until no data but respect max batch size. (#599)This is a first official beta release, which provides almost fully complete metrics, tracing, and context propagation functionality. There is still a possibility of breaking changes.
Observer metric instrument. (#474)Propagators functionality to enable deferred initialization for propagators registered before the first Meter SDK is installed. (#494)StatusMessage field was add to the trace Span. (#524)Resource type was added to the SDK. (#528)Tracer and Meter function as shortcuts to getting a global *Provider and calling these methods directly. (#538)MeterImpl interface to support general purpose Meter construction. Additionally, SyncImpl and AsyncImpl are added to support general purpose instrument construction. (#560)Kind is added to represent the MeasureKind, ObserverKind, and CounterKind. (#560)AlwaysSampler instead of ProbabilitySampler to match OpenTelemetry specification. (#506)AlwaysSampleSampler to AlwaysOnSampler in the trace API. (#511)NeverSampleSampler to AlwaysOffSampler in the trace API. (#511)Status field of the Span was changed to StatusCode to disambiguate with the added StatusMessage. (#524)Sampler interface conform to the OpenTelemetry specification. (#531)Options to Config. (#541)Counter aggregator to be Sum. (#541)Option from instrument specific options. (#541)TraceProvider now support Resources. (#545)Resources. (#551)Resources. The WithResource option was added to configure a Resource on creation and the Resource method was added to the metric Descriptor to return the associated Resource. (#552)ErrNoLastValue and ErrEmptyDataSet by ErrNoData in the metric SDK. (#557)Resources. (#558)Descriptor is now included at the API instead of the SDK. (#560)Ordered with an iterator in export.Labels. (#567)Unregister method for metric observers as it is not in the OpenTelemetry specification. (#560)GetDescriptor from the metric SDK. (#575)Gauge instrument from the metric API. (#537)NewRoot in the othttp plugin for public endpoints. (#513)BatchedSpanProcessor. (#518)StateLocker implementation in MinMaxSumCount. (#546)Header* filters that do not depend on Go 1.14. (#565)COVERAGE_MOD_DIR. (#573)RecordError method on Spans in the trace API to Simplify adding error events to spans. (#473)exporter directory to exporters. The go.opentelemetry.io/otel/exporter/trace/jaeger package was mistakenly released with a v1.0.0 tag instead of v0.1.0. This resulted in all subsequent releases not becoming the default latest. A consequence of this was that all go gets pulled in the incompatible v0.1.0 release of that package when pulling in more recent packages from other otel packages. Renaming the exporter directory to exporters fixes this issue by renaming the package and therefore clearing any existing dependency tags. Consequentially, this action also renames all exporter packages. (#502)CorrelationContextHeader constant in the correlation package is no longer exported. (#503)HTTPSupplier interface in the propagation API to specify methods to retrieve and store a single value for a key to be associated with a carrier. (#467)HTTPExtractor interface in the propagation API to extract information from an HTTPSupplier into a context. (#467)HTTPInjector interface in the propagation API to inject information into an HTTPSupplier. (#467)Config and configuring Option to the propagator API. (#467)Propagators interface in the propagation API to contain the set of injectors and extractors for all supported carrier formats. (#467)HTTPPropagator interface in the propagation API to inject and extract from an HTTPSupplier. (#467)WithInjectors and WithExtractors functions to the propagator API to configure injectors and extractors to use. (#467)ExtractHTTP and InjectHTTP functions to apply configured HTTP extractors and injectors to a passed context. (#467)DefaultPropagator function and have it return trace.TraceContext as the default context propagator. (#456)AlwaysParentSample sampler to the trace API. (#455)WithNewRoot option function to the trace API to specify the created span should be considered a root span. (#451)WithMap to ContextWithMap in the correlation package. (#481)FromContext to MapFromContext in the correlation package. (#481)Tracer.WithSpan updated to accept StartOptions. (#472)MetricKind to Kind to not stutter in the type usage. (#432)export package to metric to match directory structure. (#432)api/distributedcontext package to api/correlation. (#444)api/propagators package to api/propagation. (#444)propagators package into the trace API package. (#444)Float64Gauge, Int64Gauge, Float64Counter, Int64Counter, Float64Measure, and Int64Measure metric methods to use value receivers instead of pointers. (#462)github.com/golangci/golangci-lint from v1.21.0 to v1.23.6 in tools/. (#492)InstallNewPipeline in the stdout exporter. (#483)InstallNewPipeline in the dogstatsd exporter. (#484)InstallNewPipeline in the prometheus exporter. (#482)onError based on Config in prometheus exporter. (#486)aggregator_test.go import package comment. (#431)precommit target so we generate files and build the code before doing linting, so we can get much nicer errors about syntax errors from the compiler. (#442)span.kind tag to Jaeger from the jaeger exporter. (#441)metadataSupplier in the jaeger exporter to overwrite the header if existing instead of appending to it. (#441)runtime.Gosched in instrument acquireHandle logic to not block the collector. (#469)propagation package to propagators. (#362)B3Propagator propagator to B3. (#362)TextFormatPropagator propagator to TextFormat. (#362)BinaryPropagator propagator to Binary. (#362)BinaryFormatPropagator propagator to BinaryFormat. (#362)NoopTextFormatPropagator propagator to NoopTextFormat. (#362)TraceContextPropagator propagator to TraceContext. (#362)SpanOption to StartOption in the trace API. (#369)StartOptions to StartConfig in the trace API. (#369)EndOptions to EndConfig in the trace API. (#369)Number now has a pointer receiver for its methods. (#375)CurrentSpan to SpanFromContext in the trace API. (#379)SetCurrentSpan to ContextWithSpan in the trace API. (#379)Message in Event to Name in the trace API. (#389)HandleImpl to BoundInstrumentImpl in the metric API. (#400)Float64CounterHandle to Float64CounterBoundInstrument in the metric API. (#400)Int64CounterHandle to Int64CounterBoundInstrument in the metric API. (#400)Float64GaugeHandle to Float64GaugeBoundInstrument in the metric API. (#400)Int64GaugeHandle to Int64GaugeBoundInstrument in the metric API. (#400)Float64MeasureHandle to Float64MeasureBoundInstrument in the metric API. (#400)Int64MeasureHandle to Int64MeasureBoundInstrument in the metric API. (#400)Release method for bound instruments in the metric API to Unbind. (#400)AcquireHandle method for bound instruments in the metric API to Bind. (#400)File option in the stdout exporter to Writer. (#404)Options to Config for all metric exports where this wasn't already the case.http.request span in httptrace package. (#397)MaxSumCount aggregation to MinMaxSumCount and add the Min interface for this aggregation. (#352)GetMeter to Meter. (#357)HTTPTraceContextPropagator to TraceContextPropagator. (#355)HTTPB3Propagator to B3Propagator. (#355)HTTPTraceContextPropagator to TraceContextPropagator. (#355)/global package to /api/global. (#356)GetTracer to Tracer. (#347)SetAttribute from the Span interface in the trace API. (#361)AddLink from the Span interface in the trace API. (#349)Link from the Span interface in the trace API. (#349)golangci-lint before a second run to report the remaining issues. (#360)GO111MODULE environment variable in Makefile as Go 1.13 is the project specified minimum version and this is environment variable is not needed for that version of Go. (#359)generate and lint targets of the Makefile. (#354)circle-ci target to more generic ci in Makefile. (#354)MaxSumCount. (#335)push_test.go identified in #339. (#340)/usr/bin/env bash as a shebang in scripts rather than /bin/bash. (#336)AlwaysSample and NeverSample. Previously it was testing AlwaysSample twice. (#325)[]byte for TraceID to fix failing test. (#325)setAttribute vs setAttributes (#325)defaultkeys batcher was only using the encoded label set as its map key while building a checkpoint. This allowed distinct label sets through, but any metrics sharing a label set could be overwritten or merged incorrectly. This was corrected. (#333)simplelru map for attributes to reduce the number of allocations. (#328)This release contains a Metrics SDK with stdout exporter and supports basic aggregations such as counter, gauges, array, maxsumcount, and ddsketch.
MarshalJSON method. (#281)WithService, WithResources, and WithComponent methods of tracers. (#314)Tracer.Start() for the Jaeger example. (#292)trace.WithAttributes to append values instead of replacing (#315)SpanKind back to being based on an int type. (#288)ExportSpans for the stackdriver exporter now handles nil context. (#294)LoadOrStore and the assignment rec.recorder = i.meter.exporter.AggregatorFor(rec). (#293)This is the first release of open-telemetry go library. It contains api and sdk for trace and meter.