Source code

Revision control

Copy as Markdown

Other Tools

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Guideline to update the version
Increment the:
* MAJOR version when you make incompatible API/ABI changes,
* MINOR version when you add functionality in a backwards compatible manner, and
* PATCH version when you make backwards compatible bug fixes.
## [Unreleased]
## [1.18 2024-11-25]
* [EXPORTER] Fix crash in ElasticsearchLogRecordExporter
* [BUILD] Avoid buggy warning with gcc <= 8
* [API] Jaeger Propagator should not be deprecated
* Update bzlmod version
* [BUILD] Remove std::make_unique
* [BUILD] Fix compiling problems for gcc 4.8
* [TEST] Fix linking order and gmock linking
* [EXPORTER] Add config options to prometheus exporter
* [BUILD] Add a CMake option to disable shared libs
* [EXPORTER] Remove out of date ETW exporter doc
* [EXPORTER] Add logging for async gRPC errors
* [BUILD] Remove aligned_storage from nostd
* [EXPORTER] Elastic Search exporter follow ECS guidelines
* [INSTALL] Resolve dependencies in opentelemetry-cpp-config.cmake
* [API] Add synchronous gauge
* [BUILD] allow building with -DWITH_OTLP_HTTP_COMPRESSION=OFF without zlib
* [CI] Comment the arm64 CI
* [API] Comply with W3C Trace Context
* [EXPORTER] bump prometheus to v1.3.0
* [EXPORTER] Log SSL Connection Information
* [BUILD] Improve how to handle yield() in ARM
* [BUILD] Fix -Wmissing-template-arg-list-after-template-kw warning
* [EXPORTER]: Elasticsearch exporter put log resource in root instead of under 'resources'
* [TEST] Rename w3c_tracecontext_test to w3c_tracecontext_http_test_server
* [BUILD] Patches for building on AIX
* [SEMANTIC CONVENTIONS] Migration to weaver
* [SEMANTIC CONVENTIONS] Upgrade to semantic conventions 1.28.0
* [EXPORTER] handling of invalid ports in UrlParser
* [CI] speed up clang-tidy workflow
* [EXPORTER] Allow to share gRPC clients between OTLP exporters
* Bump codecov/codecov-action from 4 to 5
* [CI] Add cppcheck in the build
* [BUILD] Fix error message
* [EXPORTER] fix clang-tidy warnings in UrlParser
* [EXPORTER] Upgrade to opentelemetry-proto 1.4.0
* [TEST] refactor UrlParser tests to use value-paramterized tests
* [TEST] add a test for ElasticSearchRecordable
* [BUILD] Fix missing dependency on protoc compiler
* [bazel] Update prometheus-cpp in MODULE.bazel
* [bazel] Enable --incompatible_disallow_empty_glob
* [INSTALL] Fix cmake/opentelemetry-cpp-config.cmake.in
* [BUILD] Do not set OTELCPP_PROTO_PATH in the CMake cache
* [BUILD] Fix build for esp32
* [bazel] Update opentelemetry-proto in MODULE.bazel
Important changes:
* [API] Jaeger Propagator should not be deprecated
* Deprecation of the Jaeger propagator, as announced on 2023-01-31
in version 1.8.2, is now reverted.
* This deprecation turned out to be not justified,
as the Jaeger propagator can be used without the (now removed)
Jaeger exporter.
* [EXPORTER] Change log resources location for ElasticsearchLogRecordExporter
* Moved from `root/resources` to `root`
* [SEMANTIC CONVENTIONS] Migration to weaver
* `semantic_convention.h` header files are deprecated,
replaced by `semconv/xxx_attributes.h` header files,
for each `xxx` semantic attribute group.
* See file DEPRECATED.md for details.
Deprecations:
* This release contains deprecations, see file DEPRECATED.md for details.
## [1.17 2024-10-07]
* [CI] Add a clang-tidy build
* [BUILD] Upgrade to opentelemetry-proto 1.3.2
* [REMOVAL] Remove build option `WITH_DEPRECATED_SDK_FACTORY`
* [EXPORTER] ForceFlush before canceling the running requests on shutdown
* [SDK] Fix crash in PeriodicExportingMetricReader
* [SDK] Fix memory leak in TlsRandomNumberGenerator() constructor
* [EXPORTER] Ignore exception when create thread in OTLP file exporter
* [BUILD] Update the version in MODULE.bazel
* [BUILD] Fix build without vcpkg on Windows when gRPC is disabled
* [BUILD] Add abi_version_no bazel flag
* [Code health] Expand iwyu coverage to include unit tests
* [BUILD] Version opentelemetry_proto/proto_grpc shared libraries
* [SEMANTIC CONVENTIONS] Upgrade semantic conventions to 1.27.0
* [SDK] Support empty histogram buckets
* [TEST] Fix sync problems in OTLP File exporter tests
* [SDK] PeriodicExportingMetricReader: future is never set, blocks until timeout
* [Code Health] Clang Tidy cleanup, Part 2
* [Code Health] include-what-you-use cleanup, part 3
* [SDK] Fix overflow in timeout logic
* [TEST] Add missing tests to Bazel build
* [TEST] update collector tests with debug exporter
* [EXAMPLE] update collector example with debug exporter
* [TEST] update references to logging exporter
* [EXAMPLE] Clean the tracer initialization in OStream example
* [EXPORTER] Fix the format of SpanLink for ETW
* [EXPORTER] Add in-memory metric exporter
* [Code Health] include-what-you-use cleanup, part 4
* [BUILD] add loongarch info
* [CI] Update otel-collector version
* [SDK] Update MetricProducer interface to match spec
* [EXPORTER] Fix URL in ES exporter, fix ipv6 supporting for http client
* [EXPORTER] Add HttpHeaders in ElasticsearchLogRecordExporter
Breaking changes:
* [REMOVAL] Remove build option `WITH_DEPRECATED_SDK_FACTORY`
* As announced in opentelemetry-cpp previous release 1.16.0,
CMake option `WITH_DEPRECATED_SDK_FACTORY` was temporary,
and to be removed by the next release.
* This option is now removed.
* Code configuring the SDK must be adjusted, as previously described:
* [API/SDK] Provider cleanup
* Before this fix:
* SDK factory methods such as:
* opentelemetry::sdk::trace::TracerProviderFactory::Create()
* opentelemetry::sdk::metrics::MeterProviderFactory::Create()
* opentelemetry::sdk::logs::LoggerProviderFactory::Create()
* opentelemetry::sdk::logs::EventLoggerProviderFactory::Create()
returned an API object (opentelemetry::trace::TracerProvider)
to the caller.
* After this fix, these methods return an SDK level object
(opentelemetry::sdk::trace::TracerProvider) to the caller.
* Returning an SDK object is necessary for the application to
cleanup and invoke SDK level methods, such as ForceFlush(),
on a provider.
* The application code that configures the SDK, by calling
the various provider factories, may need adjustment.
* All the examples have been updated, and in particular no
longer perform static_cast do convert an API object to an SDK object.
Please refer to examples for guidance on how to adjust.
## [1.16.1 2024-07-17]
* [BUILD] Add bazel missing BUILD file
* [SDK] Added reserve for spans array in BatchSpanProcessor.
* [DOC] Update "Using triplets" section in building-with-vcpkg documentation.
* [DOC] Remove comment for unused LoggerProvider initialization params
* [SECURITY] Remove OTLP HTTP support for TLS 1.0 and TLS 1.1,
require TLS 1.2 or better
* [TEST] Fix opentelemetry-collector bind address
* [EXPORTER] Fix references in AttributeValueVisitor
* [Code health] include-what-you-use cleanup, part 2
* [Code Health] clang-tidy cleanup, part 1
* [CI] Build failures with ABSEIL 20240116 and CMAKE 3.30
* [CI] Enable bzlmod
* [Metrics SDK] Fix hash calculation for nostd::string
Breaking changes:
* [SECURITY] Remove OTLP HTTP support for TLS 1.0 and TLS 1.1,
require TLS 1.2 or better
* The OTLP HTTP exporter no longer accept options like:
* min_TLS = 1.0
* min_TLS = 1.1
* max_TLS = 1.0
* max_TLS = 1.1
* When connecting to an OTLP HTTP endpoint, using `https`,
the connection will require TLS 1.2 by default,
unless min_TLS is set to 1.3
* Plain `http` connections (insecure) are not affected.
## [1.16.0] 2024-06-21
* [BUILD] Upgrade bazel abseil from 20220623.1 to 20230802.2
* [BUILD] Use nostd::enable_if_t instead of std::enable_if_t
* [EXEMPLAR] Update ExemplarFilter and ExemplarReservoir for spec
* [BUILD] Link CoreFoundation on apple systems
* [SDK] Avoid missing conditional variable update and simplify atomic bool
* [BUILD] Build break in OLTP_FILE tests
* [EXPORTER] General cleanup for is_shutdown flags in exporters.
* [CI] Upgrade Maintainers CI to ubuntu-24.04
* [BUILD] Upgrade to opentelemetry-proto 1.3.1
* [API] Return NoopLogRecord from NoopLogger
* [BUILD] Remove the hard-coded separator in tracestate
* [SDK] Fix forceflush may wait for ever
* [API] DO not allow unsafe Logger::EmitLogRecord
* [BUILD] Read default proto version from third_party_release
* [CI] include-what-you-use
* [CI] Upgrade to clang-format 18
* [CI] Fix CI failures on Ubuntu 24.04
* [SEMANTIC CONVENTIONS] Upgrade to version 1.26.0
* [API/SDK] Provider cleanup
* [ETW] Add table name mapping for Logs other than the default Log table
* [CI] Remove benchmark overlay for vcpkg
* [BUILD] Remove the incorrect set of CMAKE_MSVC_RUNTIME_LIBRARY for vcpkg
* [BUILD] CMakeLists.txt: Enable CMAKE_MSVC_RUNTIME_LIBRARY support
* [EXPORTER] OTLP file: use thread-safe file/io
* [bazel] Bump version and deps
* [BUILD] Add support for bzlmod
* [BUILD] Fix Import Abseil-cpp
* [Code health] include-what-you-use cleanup
* [BUILD] Restore Bazel flag removed from public API
* [DOC] Fix typo tace_id -> trace_id in logger.h
* Bump docker/build-push-action from 5 to 6
* [CI] Enable ARM64 build in CI
* [Code health] Remove Unicode Text from Source files
* [BUILD] Add option WITH_OTLP_GRPC_SSL_MTLS_PREVIEW
* [EXPORTER] All 2xx return codes should be considered successful.
Important changes:
* [API/SDK] Provider cleanup
* Before this fix:
* The API class `opentelemetry::trace::Tracer` exposed methods such
as `ForceFlush()`, `ForceFlushWithMicroseconds()`, `Close()`
and `CloseWithMicroseconds()`.
* These methods are meant to be used when configuring the SDK,
and should not be part of the API. Exposing them was an oversight.
* Two of these methods are virtual, and therefore part of the ABI.
* After this fix:
* In `OPENTELEMETRY_ABI_VERSION_NO 1`, nothing is changed,
because removing this code would break the ABI.
* In `OPENTELEMETRY_ABI_VERSION_NO 2`, these methods are moved
from the API to the SDK. This is a breaking change for ABI version 2,
which is still experimental.
* In all cases, instrumenting an application should not
invoke flush or close on a tracer, do not use these methods.
Breaking changes:
* [API/SDK] Provider cleanup
* Before this fix:
* SDK factory methods such as:
* opentelemetry::sdk::trace::TracerProviderFactory::Create()
* opentelemetry::sdk::metrics::MeterProviderFactory::Create()
* opentelemetry::sdk::logs::LoggerProviderFactory::Create()
* opentelemetry::sdk::logs::EventLoggerProviderFactory::Create()
returned an API object (opentelemetry::trace::TracerProvider)
to the caller.
* After this fix, these methods return an SDK level object
(opentelemetry::sdk::trace::TracerProvider) to the caller.
* Returning an SDK object is necessary for the application to
cleanup and invoke SDK level methods, such as ForceFlush(),
on a provider.
* The application code that configures the SDK, by calling
the various provider factories, may need adjustment.
* All the examples have been updated, and in particular no
longer perform static_cast do convert an API object to an SDK object.
Please refer to examples for guidance on how to adjust.
* If adjusting application code is impractical,
an alternate and temporary solution is to build with option
WITH_DEPRECATED_SDK_FACTORY=ON in CMake.
* Option WITH_DEPRECATED_SDK_FACTORY=ON will allow to build code
without application changes, posponing changes for later.
* WITH_DEPRECATED_SDK_FACTORY=ON is temporary, only to provide
an easier migration path. Expect this flag to be removed,
as early as by the next release.
Notes on experimental features:
introduced `MeterProvider::SetExemplar()` which accepts en
`ExemplarFilterType` enumeration with `kAlwaysOff`, `kAlwaysOn` and
`kTraceBased`.
## [1.15.0] 2024-04-21
* [EXPORTER] Change OTLP HTTP content_type default to binary
* [DOC] Fix OTLP documentation: Default endpoint is wrong for OTLP/HTTP
* [BUILD] Fix old style cast warning
* [EXPORTER] Gzip compression support for OTLP/HTTP and OTLP/gRPC exporter
* [BUILD] update vcpkg submodule to 2024.02.14
* [SDK] Support for OTEL_SERVICE_NAME
* [EXPORTER] Support URL-encoded values for `OTEL_EXPORTER_OTLP_HEADERS`
* [BUILD] CMake cleanup for message()
* [BUILD] Bump CMake minimum required version to 3.9
* [BUILD] Provide LIKELY / UNLIKELY macros
* [EXPORTER] OTLP: Fix missing ResourceMetrics SchemaURL
* [ETW] cleanup include path
* Upgrade to googletest 1.14.0
* Upgrade to nlohmann_json 3.11.3
* [BAZEL] Move -std=c++14 to .bazelrc
* [BAZEL] Fix -std=c++14 warning on Windows
* Upgrade to benchmark 1.8.3
* Upgrade to prometheus 1.2.4
* [DOC] Fix typo: Asynchronouse -> Asynchronous in meter.h
* [BUILD] Do not link prometheus-cpp::util when it doesn't exist
* [SDK] Remove unused variable
* [METRICS SDK] Remove extra OfferMeasurement call
in SyncMetricsStorage::OfferMeasurement
* [MISC] Use set -e on all shell scripts and pass shellcheck --severity=error
* [CI] Add shellcheck --severity=error as a CI step
* [CI] Upgrade to abseil 20240116.1 (CMake only)
* [CI] Benchmark, provide units with --benchmark_min_time
* [EXPORTER] OTLP file exporter
* [CI] Use platform CMake
* [PROTO] Upgrade to opentelemetry-proto 1.2.0
* [SDK] DefaultLogHandler to print errors to std::cerr, add LogLevel::None
* [SEMANTIC CONVENTIONS] Upgrade to semantic convention 1.25.0
* [DOC] Add readme and examples for OTLP FILE exporters.
* [SEMANTIC CONVENTIONS] Rework on semantic conventions 1.25.0
* [DOC] Update INSTALL.md
Important changes:
* [EXPORTER] Gzip compression support for OTLP/HTTP and OTLP/gRPC exporter
* In the `OtlpHttpExporterOptions` and `OtlpGrpcExporterOptions`, a new
field called compression has been introduced. This field can be set
to "gzip” to enable gzip compression.
* The CMake option `WITH_OTLP_HTTP_COMPRESSION` is introduced to enable
gzip compression support for the OTLP HTTP Exporter and includes a
dependency on zlib.
* [SDK] Change OTLP HTTP content_type default to binary
* [CI] Use platform CMake
* The `CI` in github no longer install a different version of `cmake`.
* It now always use the `cmake` provided by the platform.
* As part of this change, the script `ci/setup_cmake.sh` was renamed
to `ci/setup_googletest.sh`, for clarity, now that this script
only installs googletest.
* [SDK] DefaultLogHandler to print to std::cerr, add LogLevel::None
* Change DefaultLogHandler output
* Before, the default internal logger, DefaultLogHandler,
used to print to std::cout.
* Now, DefaultLogHandler prints errors and warnings to std::cerr,
as expected, while printing info and debug messages to std::cout.
* Applications that expected to find the opentelemetry-cpp internal
error log in std::cout may need adjustments, either by looking
at std::cerr instead, or by using a custom log handler.
* Additional LogLevel::None
* LogLevel::None is a new supported log level, which does not print
any message.
* Custom log handlers may need to implement a new case, to avoid
compiler warnings.
* Numbering of log levels like OTEL_INTERNAL_LOG_LEVEL_ERROR
has changed, which requires to rebuild, as the SDK ABI differs.
## [1.14.2] 2024-02-27
* [SDK] Fix observable attributes drop
## [1.14.1] 2024-02-23
* [SDK] Restore Recordable API compatibility with versions < 1.14.0
* [DOC] Add missing CHANGELOG.
* [EXPORTER] Error when grpc endpoint is empty
* [DOC] Fix typo in benchmarks.rst
Important changes:
* [SDK] Restore Recordable API compatibility with versions < 1.14.0
* For third party _extending_ the SDK, release 1.14.0 introduced
an API breaking change compared to 1.13.0
* This fix restores API (but not ABI) compatibility of
release 1.14.1 with release 1.13.0.
* This allows to build a third party exporter with no source code changes,
for both releases 1.14.1 and 1.13.0.
## [1.14.0] 2024-02-16
* [BUILD] Add DLL build CI pipeline with CXX20
* [EXPORTER] Set `is_monotonic` flag for Observable Counters
* [PROTO] Upgrade to opentelemetry-proto v1.1.0
* [BUILD] Introduce CXX 20 CI pipeline for MSVC/Windows
* [API] Propagation: fix for hex conversion to binary for odd hex strings
* [DOC] Fix calendar link
* [ETW EXPORTER] Remove namespace using in ETW exporter which affects global
namespace
* [BUILD] Don't invoke vcpkg from this repo with CMAKE_TOOLCHAIN_FILE set
* [EXPORTER] Async exporting for otlp grpc
* [METRICS SDK] Fix attribute filtering for synchronous instruments.
* [BUILD] Better handling of OPENTELEMETRY_STL_VERSION under Bazel.
* [DOC] Fixes CI markdown error MD055 - Table pipe style
* [API] Propagators: do not overwrite the active span with a default invalid
* [BUILD] Updated the recorded vcpkg submodule version
* [BUILD] Remove unnecessary usage/includes of nostd/type_traits
* [SEMANTIC CONVENTIONS] Upgrade to version 1.24.0
* [EXAMPLES] Improve readme of Metrics example
* [BUILD] Clang-15 warning about `__has_trivial_destructor`
* [BUILD] Fix multiple assignment operators for SpinLockMutex
* [BUILD] Alternative way of exporting symbols (generating .def file)
* [CI] Make cmake.c++20*.test actually use C++20 and add cmake.c++23*.test
* [DOCUMENTATION] Add api reference documentation for logs
* [BUILD] Fix variable shadow
* [BUILD] Fix checks on __cplusplus under MSVC, do not assume /Zc
* [EXAMPLES] Use logs API instead of logs bridge API in the example
* [EXPORTER] Fix forward protocol encoding for ETW exporter
* [BUILD] Skip patch alias target
* [EXPORTER] Rename populate_otel_scope to without_otel_scope
* [EXPORTER SDK] Additional fixes after NOMINMAX removal on Windows
* [EXPORTER] Do not use regex in `CleanUpString` because some implementations of
STL may crash.
* [EXPORTER] Fix Aggregation type detection in OTLP Exporter
* [EXPORTER] Add option to disable Prometheus otel_scope_name and
otel_scope_version attributes
* [SEMANTIC CONVENTIONS] Code generation script fails on SELINUX
* [BUILD] Fix removing of NOMINMAX on Windows
* [BUILD] Accept path list in OPENTELEMETRY_EXTERNAL_COMPONENT_PATH
* [BUILD] Remove gmock from GTEST_BOTH_LIBRARIES
* [REMOVAL] Remove option WITH_OTLP_HTTP_SSL_PREVIEW
Important changes:
Breaking changes:
* [REMOVAL] Remove option WITH_OTLP_HTTP_SSL_PREVIEW
* CMake options `WITH_OTLP_HTTP_SSL_PREVIEW` and
`WITH_OTLP_HTTP_SSL_TLS_PREVIEW` are removed. Building opentelemetry-cpp
without SSL support is no longer possible.
* [PROTO] Upgrade to opentelemetry-proto v1.1.0
* Class `opentelemetry::sdk::trace::Recordable` has a new virtual method,
`SetTraceFlags()`.
* This is an incompatible change for the SDK Recordable API and ABI.
* Applications _configuring_ the SDK are not affected.
* Third parties providing SDK _extensions_ are affected,
and must provide a `SetTraceFlags()` implementation,
starting with opentelemetry-cpp 1.14.0.
## [1.13.0] 2023-12-06
* [BUILD] Remove WITH_REMOVE_METER_PREVIEW, use WITH_ABI_VERSION_2 instead
* [SDK] Metrics ObservableRegistry Cleanup
* [BUILD] Make WITH_OTLP_HTTP_SSL_PREVIEW mainstream
* [SDK] Creating DoubleUpDownCounter with no matching view
* [API] Add InstrumentationScope attributes in TracerProvider::GetTracer()
* [BUILD] DLL export interface for Metrics
* [BUILD] enum CanonicalCode names too generic... conflict with old C defines
* [BUILD] Fix cpack broken package version
* [API] Add a new AddLink() operation to Span
* [opentracing-shim] Add check for sampled context
* [BUILD] Fix exported definitions when building DLL with STL
* [BUILD] Add missing includes to runtime_context_test
* [ADMIN] Add file .github/repository-settings.md
* [SDK] Fix GetLogger with empty library name
* [TEST] Fix compiling problem and removed -DENABLE_TEST
* [BUILD] Check windows options are not passed to non-Windows build
* [EXPORTER] Rework OTLP/HTTP and OTLP/GRPC exporter options
* [Build] Update vcpkg to latest release
* [SDK] Cardinality limits for metrics streams
(Sync Instruments + Delta Temporality)
* [EXPORTER] Prometheus: Add unit to names, convert to word
* [Metrics] Make context optional for histogram instruments in Metrics SDK
* [BUILD] Fix references to trace namespace to be fully qualified
* [BUILD] Bump third_party/googletest to same version as bazel
* [BUILD] Remove defining NOMINMAX from api
* [BUILD] 'uint8_t' not declared in this scope with gcc 13.2.1
* [BUILD] Improve the handling of OPENTELEMETRY_HAVE_WORKING_REGEX
* [SEMANTIC CONVENTION] Upgrade to semconv 1.23.1
* [BUILD] Use fully qualified references to trace/common namespace
* [API] Create root span with active span
* [REMOVAL] Remove ZPAGES
Important changes:
* [API] Add InstrumentationScope attributes in TracerProvider::GetTracer()
* TracerProvider::GetTracer() now accepts InstrumentationScope attributes.
* Because this is an `ABI` breaking change, the fix is only available
with the `CMake` option `WITH_ABI_VERSION_2=ON`.
* When building with `CMake` option `WITH_ABI_VERSION_1=ON` (by default)
the `ABI` is unchanged, and the fix is not available.
* [API] Add a new AddLink() operation to Span
* New `API` Span::AddLink() adds a single link to a span.
* New `API` Span::AddLinks() adds multiple links to a span.
* Because this is an `ABI` breaking change, the fix is only available
with the `CMake` option `WITH_ABI_VERSION_2=ON`.
* When building with `CMake` option `WITH_ABI_VERSION_1=ON` (by default)
the `ABI` is unchanged, and the fix is not available.
* [BUILD] Make WITH_OTLP_HTTP_SSL_PREVIEW mainstream
* The experimental `CMake` option `WITH_OTLP_HTTP_SSL_PREVIEW`
is now promoted to stable. The default is changed to `ON`.
* The experimental `CMake` option `WITH_OTLP_HTTP_SSL_TLS_PREVIEW`
is now promoted to stable. The default is changed to `ON`.
* These build options are scheduled to be removed by the next release,
building without SSL/TLS will no longer be possible.
* [EXPORTER] Rework OTLP/HTTP and OTLP/GRPC exporter options
* `OtlpGrpcMetricExporterOptions` used to honor `_TRACES_`
environment variables, instead of `_METRICS_` environment variables.
* The implementation of `OtlpGrpcMetricExporterOptions` is now fixed.
* Please check configuration variables,
to make sure `_METRICS_` variables are set as expected.
Breaking changes:
* [BUILD] Remove WITH_REMOVE_METER_PREVIEW, use WITH_ABI_VERSION_2 instead
* The experimental `CMake` option `WITH_REMOVE_METER_PREVIEW` is removed,
use option `WITH_ABI_VERSION_2` instead.
* [BUILD] enum CanonicalCode names too generic... conflict with old C defines
* Header file `opentelemetry/trace/canonical_code.h` is unused,
and is now removed.
* This header should not be included directly in an application.
If this is the case, please remove any remaining include directives.
* [BUILD] Fix exported definitions when building DLL with STL
* The MeterSelector, MeterSelectorFactory, InstrumentSelector,
and InstrumentSelectorFactory APIs now use const std::string&
instead of nostd::string_view for name, version and schema to
maintain a single export definition for DLL.
* [EXPORTER] Rework OTLP/HTTP and OTLP/GRPC exporter options
* `OtlpGrpcLogRecordExporter` incorrectly used `OtlpGrpcExporterOptions`,
which are options for traces and not logs.
* This created a bug: the `OtlpGrpcLogRecordExporter` honors `_TRACES_`
environment variables, instead of `_LOGS_` environment variables.
* `OtlpGrpcLogRecordExporter` is changed to use
`OtlpGrpcLogRecordExporterOptions` instead, fixing the bug.
* User code that initializes the SDK with a GRPC Log exporter,
and uses exporter options, should adjust to replace
`OtlpGrpcExporterOptions` with `OtlpGrpcLogRecordExporterOptions`.
* Please check configuration variables,
to make sure `_LOGS_` variables are set as expected.
* [REMOVAL] Remove ZPAGES
* As announced in release 1.12.0,
the deprecated ZPAGES exporter is now removed.
## [1.12.0] 2023-10-16
* [BUILD] Support `pkg-config`
* [CI] Do not automatically close stale issues
* [CI] Benchmark workflow fails, C++14 required to build grpc
* [SDK] Increase metric name maximum length from 63 to 255 characters
* [SEMANTIC CONVENTION] Deprecated semconv (in the spec)
not deprecated (in C++)
* [SDK] Remove unused member variables from SyncMetricStorage
* [DEPRECATION] Deprecate ZPAGES
* [API] Deliver ABI breaking changes
* [SDK] Allow metric instrument names to contain / characters
* [SDK] Fix Observable Counters/UpDownCounters
* [SDK] Add exemplar reservoir to async metric storage
* [TEST] Fix lifetime issues in prometheus test utils
* [EXPORTER] Prometheus: Remove explicit timestamps from metric points
* [EXPORTER] Prometheus: Handle attribute key collisions from sanitation
* [EXPORTER] Prometheus cleanup, test with TranslateToPrometheus
* [SDK] Fix log message in Meter::RegisterSyncMetricStorage
* [DOC] Simplify the project status section
* [EXPORTER] Prometheus: Sanitize labels according to spec
* [SDK] Fix deadlock when shuting down http client
* [Exporter] Group spans by resource and instrumentation scope
in OTLP export requests
* [BUILD] Need fine-grained HAVE_CPP_STDLIB
* [API] Add InstrumentationScope attributes in MeterProvider::GetMeter()
* [REMOVAL] Drop C++11 support
* [EXPORTER] prometheus: add otel_scope_name and otel_scope_version labels
* [EXPORTER] Export resource for prometheus
* [BUILD] error: read-only reference ‘value’ used as ‘asm’ output
* [BUILD] Build break with external CMake nlohman_json package
* [BUILD] Upgrade libcurl to version 8.4.0
* [BUILD] Fix opentracing-shim when added in super project
* [BUILD] Fix protoc searching with non-imported protobuf::protoc target
* [BUILD] Support to use different cmake package CONFIG of dependencies
* [SEMANTIC CONVENTION] Upgrade to semconv 1.22.0
Important changes:
* [API] Add InstrumentationScope attributes in MeterProvider::GetMeter()
* MeterProvider::GetMeter() now accepts InstrumentationScope attributes.
* Because this is an `ABI` breaking change, the fix is only available
with the `CMake` option `WITH_ABI_VERSION_2=ON`.
* When building with `CMake` option `WITH_ABI_VERSION_1=ON` (by default)
the `ABI` is unchanged, and the fix is not available.
Breaking changes:
* [BUILD] Need fine-grained HAVE_CPP_STDLIB
* In `CMAKE`, the boolean option `WITH_STL` as changed to an option
that accepts the values `OFF`, `ON`, `CXX11`, `CXX14`, `CXX17`,
`CXX20` and `CXX23`.
* Applications makefiles that did not set WITH_STL need to use
`WITH_STL=OFF` instead (this is the default).
* Applications makefiles that did set WITH_STL need to use
`WITH_STL=ON` instead, or may choose to pick a specific value.
* In the `API` header files, the preprocessor symbol `HAVE_CPP_STDLIB`
is no longer used.
* Applications that did set `HAVE_CPP_STDLIB` before, need to set
`OPENTELEMETRY_STL_VERSION=<version>` instead, to build with a
specific STL version (2011, 2014, 2017, 2020, 2023).
* The opentelemetry-cpp makefile no longer sets
CMAKE_CXX_STANDARD by itself.
Instead, the CMAKE_CXX_STANDARD and/or compiler options -stdc++ used
by the caller are honored.
* Applications that set neither CMAKE_CXX_STANDARD nor -stdc++
options may need to provide a C++ standard in their makefiles.
* [REMOVAL] Drop C++11 support
* Building with C++11 is no longer supported.
Deprecations:
* [DEPRECATION] Deprecate ZPAGES
## [1.11.0] 2023-08-21
* [BUILD] Fix more cases for symbol name for 32-bit win32 DLL build
* [BUILD] added public link of `opentelemetry_proto_grpc` against gRPC lib (only
if gRPC library is shared)
* [CI] use ubuntu-latest for tsan CI
* [SDK] Fixing an apparent logging macro bug
* [BUILD] Support protobuf 3.22 or upper
* [BUILD] Remove extra includes
* [LOGS API SDK] Mark logs signal as stable API/SDK
* [SEMANTIC CONVENTIONS] Upgrade to 1.21.0
* [SDK] Valgrind errors on std::atomic variables
* [BUILD] Fix compile with clang 16 and libc++
* [Metrics SDK] Add unit to Instrument selection criteria
* [SDK] Add OStreamLogRecordExporterFactory
* [SDK] Add support for LowMemory metrics temporality
* [CI] Misc build scripts cleanup
* [CI] Upgrade GoogleTest version from 1.12.1 to 1.13.0
* [BUILD] include cstdint
* [EXPORTER] Support protobuf 3.22 or upper
* [SDK] Mark logs signal as stable API/SDK
Breaking changes:
* [SDK] Add unit to Instrument selection criteria
* The `View` constructor and `ViewFactory::Create` method now takes a
`unit` criteria as optional third argument.
* Please adjust SDK configuration code accordingly.
## [1.10.0] 2023-07-11
* [REMOVAL] Remove the jaeger exporter
* [CI] Add a C++11 build
* [CI] Add Include what you use
* [CI] opentelemetry-cpp project CI
* [CI] Do not tag pull_request with the "need-triage" label
* [BUILD] Fixing CMake to build GTest on Windows
* [BUILD] Remove option WITH_OTLP
* [BUILD] Link to opentelemetry_logs even without OTLP
* [BUILD] Avoid dependency on protobuf from the OTLP HTTP metrics exporter header
* [BUILD] Add ctime header to metrics_exporter.cc
* [BUILD] Fix the exported symbol name for 32-bit win32 DLL
* [BUILD] Upgrade to opentelemetry-proto 0.20.0
* [BUILD] SDK Header files cleanup, use forward declarations
* [BUILD] Enable building otel-cpp extensions from main repo
* [BUILD] Fix if check on environment variable and add CMake variable
* [BUILD] Add `OPENTELEMETRY_CPP_FOUND` into cmake CONFIG file
* [BUILD] Upgrade opentelemetry-proto to 1.0.0
* [BUILD] Include nostd/string_view which is used in severity.h
* [TEST] Expand api singleton test to cover explicit dlopen()
* [API] Remove include_trace_context
* [API] Remove Meters
* [SDK] Add AdaptingCircularBufferCounter for exponential histograms
* [SDK] Add base2 exponential histogram indexer
* [SDK] Simplify SDK version
* [SDK] Add benchmark for base2 exponential histogram indexer
* [SDK] Provide builders to avoid exposing Metrics SDK internals
* [SDK] MeterProvider should own MeterContext, not share it
* [SDK] TracerProvider should own TracerContext, not share it
* [EXPORTER] Change OTLP Json field name to camelCase
* [EXPORTER] Support empty arrays in `OtlpRecordable` attributes
* [EXPORTER] set is_monotonic only for instrument type kCounter
* [EXPORTER] Fixed HTTP CURL for 32bits platforms
* [EXPORTER] Fix OTLP HTTP exporting in sync mode
* [EXPORTER] Prometheus exporter sanitizes invalid characters
* [EXPORTER] Prometheus: Error on ingesting samples
with different value but same timestamp
* [EXPORTER] OTLP GRPC mTLS support
* [DOC] Small fix for Histogram documentation
* [DOC] Move Reiley Yang to emeritus
Important changes:
* [API] Remove Meters
* The CMake option `WITH_REMOVE_METER_PREVIEW` was added.
* This option is experimental, and may change in the future.
* Enabling it is an ABI breaking change.
Breaking changes:
* [REMOVAL] Remove the jaeger exporter
* The CMake `WITH_JAEGER` option has been removed
* Please remove usage of `WITH_JAEGER` from user scripts and makefiles.
* [SDK] MeterProvider should own MeterContext, not share it
* The `MeterProvider` constructor now takes a `unique_ptr` on
`MeterContext`, instead of a `shared_ptr`.
* Please adjust SDK configuration code accordingly.
* [SDK] TracerProvider should own TracerContext, not share it
* The `TracerProvider` constructor now takes a `unique_ptr` on
`TracerContext`, instead of a `shared_ptr`.
* The `LoggerProvider` constructor now takes a `unique_ptr` on
`LoggerContext`, instead of a `shared_ptr`.
* Please adjust SDK configuration code accordingly.
## [1.9.1] 2023-05-26
* [DEPRECATION] Drop C++11 support
* [CI] Upgrade Bazel and Bazelisk version
* [CI] Upgrade Google Benchmark version from 1.6.0 to 1.7.1
* [CI] Upgrade Nlohmann JSON library version from 3.10.5 to 3.11.2
* [BUILD] Missed include
* [BUILD] Add opentelemetry_proto_grpc and allow build shared
opentelemetry_proto and opentelemetry_proto_grpc on non-Windows platform.
* [BUILD] Warning cleanup, single character wrapped by std::string
* [BUILD] Add missing target dependencies
* [BUILD] Fix if JSON library already added another CMake target
* [BUILD] shared libraries with version suffix, along with the symbolic link
* [BUILD] Show warning message if WITH_OTLP is enabled
* [BUILD] Add missing STL header.
* [BUILD] Build break with old curl, macro CURL_VERSION_BITS unknown
* [BUILD] Transitive dependency issue with the otlp http exporter
* [TEST] Add unit test for log body implicit conversions.
* [TEST] Add event id to logger benchmark method
* [API] Fix inclusion header files and use forward declaration
* [API] Add user facing Logging API and Benchmarks
* [SDK] SDK support for the new OTel log
* [EXPORTER] Fixed HTTP session cleanup on shutdown
* [EXPORTER] Delegate all API calls of gRPC into
opentelemetry_exporter_otlp_grpc_client,
and make it contains all symbols needed.
* [DOC] Add Marc as maintainer.
Breaking changes:
* Add opentelemetry_proto_grpc and move gRPC sources into it.
* There will be no breaking changes for users who only use OTLP exporters and
do not directly use opentelemetry-cpp::proto. However, it is important to
note that `opentelemetry-cpp::proto` no longer contains generated gRPC codes
, and all components that depend on these gRPC codes should also link to
`opentelemetry-cpp::proto_grpc`.
Deprecations:
* The Jaeger Exporter is deprecated, see [DEPRECATED](./DEPRECATED.md) for details.
* C++11 support is to end, C++14 will be supported instead,
see [DEPRECATED](./DEPRECATED.md) for details.
## [1.9.0] 2023-04-12
* [CI] Make build environment parallel (Windows)
* [CI] Make build environment parallel (Linux)
* [CI] Remove separate run of metrics ostream example
* [BUILD] Include directory path added for Zipkin exporter example
* [BUILD] Ignore more warning in generated protobuf files
* [BUILD] Clean warnings in ETW exporters
* [BUILD] Fix default value of OPENTELEMETRY_INSTALL_default
* [SEMANTIC CONVENTIONS] Upgrade to version 1.20.0
* [SEMANTIC CONVENTIONS] Upgrade to version 1.19.0
* [API] Checking indices before dereference in string utils
* [API] Export factory class of log provider
* [SDK] Implement Forceflush for Periodic Metric Reader
* [SDK] Add `ForceFlush` for all `LogRecordExporter` and `SpanExporter`
* [SDK] Fix schema URL precedence bug in `Resource::Merge`
* [SDK] Use sdk_start_ts for MetricData start_ts for instruments having
cumulative aggregation temporality.
* [EXPORTER] Add OTLP HTTP SSL support
* [EXPORTER] GRPC endpoint scheme should take precedence over OTEL_EXPORTER_OTLP_TRACES_INSECURE
* [EXAMPLES] Remove unused 'alerting' section from prometheus.yml in examples
* [EXAMPLES] Fix view names in Prometheus example
* [DOC] Fix some docs typo
* [DOC] Update OpenTracing shim README.md
* [DOC] INSTALL doc clarifications
Important changes:
* [EXPORTER] GRPC endpoint scheme should take precedence over OTEL_EXPORTER_OTLP_TRACES_INSECURE
* The logic to decide whether or not an OTLP GRPC exporter uses SSL has
changed to comply with the specification:
* Before this change, the following settings were evaluated, in order:
* OTEL_EXPORTER_OTLP_TRACES_INSECURE (starting with 1.8.3)
* OTEL_EXPORTER_OTLP_INSECURE (starting with 1.8.3)
* OTEL_EXPORTER_OTLP_TRACES_SSL_ENABLE
* OTEL_EXPORTER_OTLP_SSL_ENABLE
* With this change, the following settings are evaluated, in order:
* The GRPC endpoint scheme, if provided:
* "https" imply with SSL,
* "http" imply without ssl.
* OTEL_EXPORTER_OTLP_TRACES_INSECURE
* OTEL_EXPORTER_OTLP_INSECURE
* OTEL_EXPORTER_OTLP_TRACES_SSL_ENABLE
* OTEL_EXPORTER_OTLP_SSL_ENABLE
* As a result, a behavior change for GRPC SSL is possible,
because the endpoint scheme now takes precedence.
Please verify configuration settings for the GRPC endpoint.
* [SDK] Add `ForceFlush` for all `LogRecordExporter` and `SpanExporter`
* `LogRecordExporter` and `SpanExporter` add a new virtual function
`ForceFlush`, and if users implement any customized `LogRecordExporter` and
`SpanExporter`, they should also implement this function.
There should be no impact if users only use factory to create exporters.
Deprecations:
* The Jaeger Exporter is deprecated, see [DEPRECATED](./DEPRECATED.md) for details.
## [1.8.3] 2023-03-06
* Provide version major/minor/patch macros
* [BUILD] Add `OPENTELEMETRY_INSTALL` to allow user to skip install targets.
* [SDK] Rename the global SDK version variables to avoid naming clash
* [BUILD] Fix typo in CMakeLists.txt
* [EXPORTER] fix Prometheus test iterator iterator increment
* [SDK]Add attributes for InstrumentationScope
* [METRICS SDK] Performance improvement in measurement processing
* [EXAMPLE] Add example for logs ostream exporter
* [ETW Exporter] Support serialize span/log attributes into JSON
* [ETW Exporter]Do not overwrite ParentId when setting attribute on Span
* Upgrade prometheus-cpp to v1.1.0
* Convert Prometheus Exporter to Pull MetricReader
* [DOCS] Add alpine packages to INSTALL.md
* [METRICS SDK] Add benchmark tests for Sum Aggregation.
* [BUILD] Build OpenTelemetry SDK and exporters into DLL
* [CI] Enforce copyright check in CI
* [BUILD] Fix typo GENENV -> GETENV
* [SEMANTIC CONVENTIONS] Upgrade to version 1.18.0
* [EXT] Fix thread-safety when shutdown.
* [SDK] Fix missing ObservedTimestamp.
* [METRICS SDK] fix variable names
* [EXPORTER] Fix Prometheus server crash on listening to already used port
* [EXPORTER] Boolean environment variables not parsed per the spec
* [EXPORTER] Opentracing shim
## [1.8.2] 2023-01-31
* Remove redundant macro check in nostd::shared_ptr [#1939](https://github.com/open-telemetry/opentelemetry-cpp/pull/1939)
* Fix typo in packages.cmake causing incorrect nuget package versions [#1936](https://github.com/open-telemetry/opentelemetry-cpp/pull/1936)
* [METRICS] Custom Aggregation support [#1899](https://github.com/open-telemetry/opentelemetry-cpp/pull/1899)
* Small fix in INSTALL.md for enabling building package. [#1930](https://github.com/open-telemetry/opentelemetry-cpp/pull/1930)
* [METRICS] Fix warning for misconfiguration of PeriodicExportingMetricReader [#1929](https://github.com/open-telemetry/opentelemetry-cpp/pull/1929)
* Make macros.h available for all source files via version.h [#1918](https://github.com/open-telemetry/opentelemetry-cpp/pull/1918)
* [METRICS] Histogram Aggregation: Fix bucket detection logic,
performance improvements, and benchmark tests [#1869](https://github.com/open-telemetry/opentelemetry-cpp/pull/1869)
* Remove unused namespace alias for nostd [#1914](https://github.com/open-telemetry/opentelemetry-cpp/pull/1914)
* sdk::resource::Resource::Merge should be const [#1905](https://github.com/open-telemetry/opentelemetry-cpp/pull/1905)
* [METRICS] Collect and Export metric data before
PeriodicMetricReader shutdown. [#1860](https://github.com/open-telemetry/opentelemetry-cpp/pull/1860)
* [ETW EXPORTER] Add Virtual destructor for TailSampler, Update Maintainer
* Fix #1867 Orderly shutdown in examples [#1868](https://github.com/open-telemetry/opentelemetry-cpp/pull/1868)
* [METRICS] minor metrics handling optimizations [#1890](https://github.com/open-telemetry/opentelemetry-cpp/pull/1890)
* fix SpinLockMutex for Intel Compiler [#1885](https://github.com/open-telemetry/opentelemetry-cpp/pull/1885)
* [LOGS] Change BatchLogRecordProcessorFactory::Create to static method [#1876](https://github.com/open-telemetry/opentelemetry-cpp/pull/1876)
* Enable generating deb, rpm, NuGet, tgz, zip package through cmake build [#1662](https://github.com/open-telemetry/opentelemetry-cpp/pull/1662)
* Updated clone command in INSTALL.md [#1818](https://github.com/open-telemetry/opentelemetry-cpp/pull/1818)
* Small cleanup to remove old metrics design docs [#1855](https://github.com/open-telemetry/opentelemetry-cpp/pull/1855)
* [BUILD] Fix build error with older version of VS2017 compiler. [1857](https://github.com/open-telemetry/opentelemetry-cpp/pull/1857)
* [EXPORTERS] Enable setting Span endtime for ETW exporter [#1846](https://github.com/open-telemetry/opentelemetry-cpp/pull/1846)
* [REMOVAL] Remove deprecated experimental semantic conventions [#1743](https://github.com/open-telemetry/opentelemetry-cpp/pull/1743)
* [EXPORTERS] Fix console debug logs for otlp exporters. [#1848](https://github.com/open-telemetry/opentelemetry-cpp/pull/1848)
* [LOGS] Add `include_trace_context` and `EventLogger` [#1884](https://github.com/open-telemetry/opentelemetry-cpp/pull/1884)
* [METRICS] Change BatchLogRecordProcessorFactory::Create to static method
* [BUILD] Fix OTELCPP_MAINTAINER_MODE [#1844](https://github.com/open-telemetry/opentelemetry-cpp/pull/1844)
* [BUILD] Fix compatibility when using clang and libc++, upgrade GTest and
* [SEMANTIC CONVENTIONS] Upgrade to version 1.16.0
* [SDK] BatchSpanProcessor now logs a warning when dropping a span because the
queue is full
* [BUILD] Migrate from @bazel_tools//platforms to [Bazel Platforms](https://github.com/bazelbuild/platforms)
to enable Bazel 6.0.0 compatibility [#1873](https://github.com/open-telemetry/opentelemetry-cpp/pull/1873)
* [BUILD] Cleanup CMake makefiles for nlohmann_json
* [BUILD] Cleanup CMake makefiles for CURL usage
* [SEMANTIC CONVENTIONS] Upgrade to version 1.17.0
* [MAINTAINER DOC] Define and document a deprecation process,
[DEPRECATION] Deprecate the Jaeger exporter,
* [BUILD] OTLP HTTP Exporter has build warnings in maintainer mode
Deprecations:
* [MAINTAINER DOC] Define and document a deprecation process,
* A new file, [DEPRECATED](./DEPRECATED.md) list all the code currently
deprecated.
* A new [deprecation process](./docs/deprecation-process.md) details the plan to
deprecate and later remove code.
* [DEPRECATION] Deprecate the Jaeger exporter
* The Jaeger Exporter is deprecated, see [DEPRECATED](./DEPRECATED.md) for details.
Important changes:
* [BUILD] Cleanup CMake makefiles for CURL usage
* CMake option `WITH_OTLP_HTTP`
* Before this change, the CMake option `WITH_OTLP_HTTP` was unpredictable,
sometime set to ON and sometime set to OFF by default,
depending on whether a CURL package was found or not.
The option `WITH_OTLP_HTTP` was sometime not displayed in the ccmake
UI, making it impossible to even discover there is an option of that name.
* With this change, CMake option `WITH_OTLP_HTTP` is always OFF by
default. WITH_OTLP_HTTP MUST be set to ON explicitly to build the
OTLP HTTP exporter. The option is always visible in the ccmake UI.
* CMake option `BUILD_W3CTRACECONTEXT_TEST`
* Before this change, the W3C trace context tests were built, or
not, in an unpredictable way, depending on the presence, or not, of a
CURL package. In particular, the build could ignore the W3C trace
context tests even when BUILD_W3CTRACECONTEXT_TEST=ON.
* With this change, option BUILD_W3CTRACECONTEXT_TEST is honored.
* HTTP client/server examples
* Before this change, the HTTP client/server examples were built, or
not, in an unpredictable way, depending on the presence, or not, of a
CURL package.
* With this change, a new option `WITH_EXAMPLES_HTTP` is used to
build the HTTP client/server examples.
## [1.8.1] 2022-12-04
* [ETW Exporter] Tail based sampling support [#1780](https://github.com/open-telemetry/opentelemetry-cpp/pull/1780)
* [EXPORTERS] fix typo [affecting otlp exported histogram metrics max uint] [#1827](https://github.com/open-telemetry/opentelemetry-cpp/pull/1827)
* [EXPORTERS] fix enum-compare-switch warning [#1833](https://github.com/open-telemetry/opentelemetry-cpp/pull/1833)
* [METRICS] Change default temporality as "Cumulative" for OTLP metrics
* [BUILD] Moved otlp_grpc_utils.cc to opentelemetry_exporter_otlp_grpc_client.
* Fix type mismatch when move nostd::shared_ptr [#1815](https://github.com/open-telemetry/opentelemetry-cpp/pull/1815)
* [BUILD] Fix Prometheus target name [#1820](https://github.com/open-telemetry/opentelemetry-cpp/pull/1820)
* [BUILD] Fix default bazel build [#1816](https://github.com/open-telemetry/opentelemetry-cpp/pull/1816)
* [BUILD] move client::nosend under test_common [#1811](https://github.com/open-telemetry/opentelemetry-cpp/pull/1811)
* [BUILD] Fix opentelemetry-proto file exists check [#1824](https://github.com/open-telemetry/opentelemetry-cpp/pull/1824)
## [1.8.0] 2022-11-27
* [DOC] Update Metrics status in README.md [#1722](https://github.com/open-telemetry/opentelemetry-cpp/pull/1722)
* [DOC] Remove misleading comments about ABI compatibility for nostd::span [#1731](https://github.com/open-telemetry/opentelemetry-cpp/pull/1731)
* [BUILD] Bump abseil-cpp for cmake CI [#1807](https://github.com/open-telemetry/opentelemetry-cpp/pull/1807)
* [Exporter] Add status code to OTLP grpc trace log [#1792](https://github.com/open-telemetry/opentelemetry-cpp/pull/1792)
* [Exporter] add fix for prometheus exporter build [#1795](https://github.com/open-telemetry/opentelemetry-cpp/pull/1795)
* [BUILD] Add option WITH_BENCHMARK to disable building benchmarks [#1794](https://github.com/open-telemetry/opentelemetry-cpp/pull/1794)
* [BUILD] bump to gRPC v1.48.1 for bazel CIs [#1786](https://github.com/open-telemetry/opentelemetry-cpp/pull/1786)
* [BUILD] Fix clang-format in CI [#1796](https://github.com/open-telemetry/opentelemetry-cpp/pull/1796)
* Fix session lock of OtlpHttpClient [#1760](https://github.com/open-telemetry/opentelemetry-cpp/pull/1760)
* [Metrics SDK] Add MeterContext::ForEachMeter() method to process callbacks on
* [DOC] Document that clang-format version 10.0 is used. [#1782](https://github.com/open-telemetry/opentelemetry-cpp/pull/1782)
* [BUILD] Upgrade bazel build to use abseil-cpp-20220623.1 [#1779](https://github.com/open-telemetry/opentelemetry-cpp/pull/1779)
* Fix GlobalLogHandler singleton creation order [#1767](https://github.com/open-telemetry/opentelemetry-cpp/pull/1767)
* [Metrics SDK] Change Prometheus CMake target name [#1765](https://github.com/open-telemetry/opentelemetry-cpp/pull/1765)
* [DOC] Format config options in OTLP exporter readme [#1748](https://github.com/open-telemetry/opentelemetry-cpp/pull/1748)
* [DOC] Cleanup ENABLE_METRICS_PREVIEW [#1745](https://github.com/open-telemetry/opentelemetry-cpp/pull/1745)
* [Build] Multiple CURL packages leads to invalid build (#1738) [#1739](https://github.com/open-telemetry/opentelemetry-cpp/pull/1739)
* [Metrics SDK] Cleanup ENABLE_METRICS_PREVIEW [#1735](https://github.com/open-telemetry/opentelemetry-cpp/pull/1735)
* [Logs SDK] LogProcessor, LogExporter class name [#1736](https://github.com/open-telemetry/opentelemetry-cpp/pull/1736)
* [Metrics SDK] Cleanup of old _metric api/sdk [#1734](https://github.com/open-telemetry/opentelemetry-cpp/pull/1734)
* [ETW Exporter] Fix span timestamp(s) precision to nanoseconds [#1726](https://github.com/open-telemetry/opentelemetry-cpp/pull/1726)
* [LOGS SDK] Rename LogProcessor and LogExporter to LogRecordProcessor and LogRecordExporter
* [METRICS SDK] - Remove old metrics from Github CI
* [BUILD] Add CMake OTELCPP_PROTO_PATH [#1730](https://github.com/open-telemetry/opentelemetry-cpp/pull/1730)
* [SEMANTIC CONVENTIONS] Upgrade to version 1.15.0
* [LOGS SDK] New LogRecord and logs::Recordable implementations.
Deprecation notes:
* [Deprecation] Deprecate experimental semantic conventions
* The file
`api/include/opentelemetry/trace/experimental_semantic_conventions.h`
is deprecated, and will be removed in a future release.
Use file
`api/include/opentelemetry/trace/semantic_conventions.h`
instead.
* The file
`sdk/include/opentelemetry/sdk/resource/experimental_semantic_conventions.h`
is deprecated, and will be removed in a future release.
Use file
`sdk/include/opentelemetry/sdk/resource/semantic_conventions.h`
instead.
* The function, declared in the global namespace
`uint32_t hashCode(const char *str, uint32_t h = 0)`
is deprecated, and will be removed in a future release.
No replacement will be provided.
Note that function `opentelemetry::utils::hashCode`,
declared in the ETW exporter, is not affected by this deprecation.
Breaking changes:
* [SEMANTIC CONVENTIONS] Upgrade to version 1.15.0
* Naming of semantic conventions has changed from uppercase constants,
like `SemanticConventions::SERVICE_NAME`,
to camel case, like `SemanticConventions::kServiceName`.
This is necessary to avoid collisions with macros in general,
which breaks the build on some platforms.
* Semantic conventions are flagged as experimental,
which is why this change is done in this release.
## [1.7.0] 2022-10-28
* [METRICS SDK] Validate Instrument meta data (name, unit, description) [#1713](https://github.com/open-telemetry/opentelemetry-cpp/pull/1713)
* [DOCS] Document libthrift 0.12.0 doesn't work with Jaeger exporter [#1714](https://github.com/open-telemetry/opentelemetry-cpp/pull/1714)
* [Metrics SDK] Add Monotonic Property to Sum Aggregation, and
unit tests for Up Down Counter [#1675](https://github.com/open-telemetry/opentelemetry-cpp/pull/1675)
* [Metrics SDK] Move Metrics Exemplar processing behind feature flag [#1710](https://github.com/open-telemetry/opentelemetry-cpp/pull/1710)
* [Metrics API/SDK] Change Meter API/SDK to return nostd::unique_ptr
which includes breaking change in the Metrics api and sdk.
* [BUILD] Add e2e test to asan & tsan CI [#1670](https://github.com/open-telemetry/opentelemetry-cpp/pull/1670)
* [BUILD] Add otlp-grpc example bazel [#1708](https://github.com/open-telemetry/opentelemetry-cpp/pull/1708)
* [TRACE SDK] Fix debug log of OTLP HTTP exporter and ES log exporter [#1703](https://github.com/open-telemetry/opentelemetry-cpp/pull/1703)
* [METRICS SDK] Fix a potential precision loss on integer in
* [METRICS SDK] Fix Histogram crash [#1685](https://github.com/open-telemetry/opentelemetry-cpp/pull/1685)
* [METRICS SDK] Fix:1676 Segfault when short export period is used for metrics [#1682](https://github.com/open-telemetry/opentelemetry-cpp/pull/1682)
* [METRICS SDK] Add timeout support to MeterContext::ForceFlush [#1673](https://github.com/open-telemetry/opentelemetry-cpp/pull/1673)
* [DOCS] - Minor updates to OStream Metrics exporter documentation [#1679](https://github.com/open-telemetry/opentelemetry-cpp/pull/1679)
* [DOCS] Fix:#1575 API Documentation for Metrics SDK and API [#1678](https://github.com/open-telemetry/opentelemetry-cpp/pull/1678)
* [BUILD] Fixed compiler warnings [#1677](https://github.com/open-telemetry/opentelemetry-cpp/pull/1677)
* [METRICS SDK] Fix threading issue between Meter::RegisterSyncMetricStorage
* [METRICS SDK] Fix data race on MeterContext::meters_ [#1668](https://github.com/open-telemetry/opentelemetry-cpp/pull/1668)
* [METRICS SDK] Fix observable Gauge metrics generation [#1651](https://github.com/open-telemetry/opentelemetry-cpp/pull/1651)
* [BUILD] Detect ARCH=sparc in CMake [#1660](https://github.com/open-telemetry/opentelemetry-cpp/pull/1660)
* [SDK] Add user agent for OTLP http/grpc client [#1657](https://github.com/open-telemetry/opentelemetry-cpp/pull/1657)
* [BUILD] Fix clang and gcc warnings [#1658](https://github.com/open-telemetry/opentelemetry-cpp/pull/1658)
* [Metrics SDK] Add Metrics ExemplarFilter and ExemplarReservoir [#1584](https://github.com/open-telemetry/opentelemetry-cpp/pull/1584)
* [LOGS SDK] Rename OnReceive to OnEmit [#1652](https://github.com/open-telemetry/opentelemetry-cpp/pull/1652)
* [METRICS SDK] Fix Observable Gauge does not reflect updated values,
and send the old value always [#1641](https://github.com/open-telemetry/opentelemetry-cpp/pull/1641)
* [Metrics SDK] Change boundary type to double for Explicit Bucket Histogram Aggregation,
and change default bucket range [#1626](https://github.com/open-telemetry/opentelemetry-cpp/pull/1626)
* [METRICS SDK] Fix occasional Segfault with LongCounter instrument [#1638](https://github.com/open-telemetry/opentelemetry-cpp/pull/1638)
* [BUILD] Bump vcpk to 2022.08.15 [#1633](https://github.com/open-telemetry/opentelemetry-cpp/pull/1633)
* [BUILD] Bump gRPC to v1.48.1 for CMake Linux CI [#1608](https://github.com/open-telemetry/opentelemetry-cpp/pull/1608)
* [Metrics] Switch to explicit 64 bit integers [#1686](https://github.com/open-telemetry/opentelemetry-cpp/pull/1686)
which includes breaking change in the Metrics api and sdk.
* [Metrics SDK] Add support for Pull Metric Exporter [#1701](https://github.com/open-telemetry/opentelemetry-cpp/pull/1701)
which includes breaking change in the Metrics api.
* [BUILD] Add CMake OTELCPP_MAINTAINER_MODE [#1650](https://github.com/open-telemetry/opentelemetry-cpp/pull/1650)
* [SEMANTIC CONVENTIONS] Upgrade to version 1.14.0 [#1697](https://github.com/open-telemetry/opentelemetry-cpp/pull/1697)
Notes:
Metrics API/SDK GA release includes PRs [#1686](https://github.com/open-telemetry/opentelemetry-cpp/pull/1686),
with breaking changes in the Metrics API and SDK.
## [1.6.1] 2022-09-22
* [BUILD] Upgrade opentelemetry-proto to v0.19.0 [#1579](https://github.com/open-telemetry/opentelemetry-cpp/pull/1579)
* [METRICS EXPORTER] Add `OtlpGrpcMetricExporterFactory` and `OtlpHttpMetricExporterFactory`.
* [SEMANTIC CONVENTIONS] Upgrade to version 1.13.0 [#1624](https://github.com/open-telemetry/opentelemetry-cpp/pull/1624)
* [BUILD] Fixes span creation benchmark issue. [#1622](https://github.com/open-telemetry/opentelemetry-cpp/pull/1622)
* [BUILD] Fix more build warnings (#1616) [#1620](https://github.com/open-telemetry/opentelemetry-cpp/pull/1620)
* [SDK gRPC]: Fix out-of-bounds access of string_view in GrpcClientCarrier in
the example
* [EXPORTER ETW] Add Trace flags in SpanContext [#1618](https://github.com/open-telemetry/opentelemetry-cpp/pull/1618)
* [SDK] resource sdk: Update Resource::Merge function docs [#1615](https://github.com/open-telemetry/opentelemetry-cpp/pull/1615)
* [API BUILD] Fix header only api singletons (#1520) [#1604](https://github.com/open-telemetry/opentelemetry-cpp/pull/1604)
* [METRICS SDK] Fix default value of
`OtlpHttpMetricExporterOptions::aggregation_temporality`.
* [METRICS EXAMPLE] Example for OTLP gRPC exporter for Metrics. [#1598](https://github.com/open-telemetry/opentelemetry-cpp/pull/1598)
* [SDK] Fix `LoggerContext::Shutdown` and tsan of `OtlpHttpClient` [#1592](https://github.com/open-telemetry/opentelemetry-cpp/pull/1592)
* [METRICS SDK] Fix 1585 - Multiple cumulative metric collections without
measurement recording.
* [METRICS SDK] Fix ObservableInstrument::RemoveCallback [#1582](https://github.com/open-telemetry/opentelemetry-cpp/pull/1582)
* [SDK] Add error log when getting a http error code [#1581](https://github.com/open-telemetry/opentelemetry-cpp/pull/1581)
* [EXPORTER] ETW Exporter - Add support for Sampler and ID Generator [#1547](https://github.com/open-telemetry/opentelemetry-cpp/pull/1547)
Notes:
While [OpenTelemetry semantic
is still in experimental state, PR
it from 1.12.0 to 1.13.0 which **MAY** break the instrumentation library. Please
update the semantic convention in instrumentation library is needed.
## [1.6.0] 2022-08-15
* [METRICS SDK] Calling Observable Instruments callback during metrics
collection
* [METRICS CI] Add CI jobs for new and deprecated metrics [#1531](https://github.com/open-telemetry/opentelemetry-cpp/pull/1531)
* [METRICS BUILD] Fix metrics asan and tsan CI [#1562](https://github.com/open-telemetry/opentelemetry-cpp/pull/1562)
* [METRICS SDK] remove throw check from metrics with noexcept [#1560](https://github.com/open-telemetry/opentelemetry-cpp/pull/1560)
* [METRICS SDK] fix metrics race condition [#1552](https://github.com/open-telemetry/opentelemetry-cpp/pull/1552)
* [METRICS SDK] Fix metrics context circular reference [#1535](https://github.com/open-telemetry/opentelemetry-cpp/pull/1535)
* [METRICS EXPORTER] Improve scope/instrument names in metrics ostream exporter [#1544](https://github.com/open-telemetry/opentelemetry-cpp/pull/1544)
* [METRICS BUILD] fix IWYU error in instruments.h [#1555](https://github.com/open-telemetry/opentelemetry-cpp/pull/1555)
* [EXPORTER] Prometheus exporter support Gauge Type [#1553](https://github.com/open-telemetry/opentelemetry-cpp/pull/1553)
* [METRICS SDK] Fix default Metric view name [#1515](https://github.com/open-telemetry/opentelemetry-cpp/pull/1515)
* [SDK] Fix infinitely waiting when shutdown with more than one running http
sessions.
* [METRICS SDK] Fix OTLP gRPC Metrics env variables [#1543](https://github.com/open-telemetry/opentelemetry-cpp/pull/1543)
* [METRICS SDK] Metric aggregation temporality controls [#1541](https://github.com/open-telemetry/opentelemetry-cpp/pull/1541)
* [METRICS SDK] Histogram min/max support [#1540](https://github.com/open-telemetry/opentelemetry-cpp/pull/1540)
* [METRICS EXPORTER] ostream exporter should print out resource attributes [#1523](https://github.com/open-telemetry/opentelemetry-cpp/pull/1523)
* [METRICS SDK] Support multiple async callbacks [#1495](https://github.com/open-telemetry/opentelemetry-cpp/pull/1495)
* [BUILD] Fix code scanning alert [#1530](https://github.com/open-telemetry/opentelemetry-cpp/pull/1530)
* [BUILD] Fix several compiling/linking errors [#1539](https://github.com/open-telemetry/opentelemetry-cpp/pull/1539)
* [TRACE SDK] Add SpanData getter for Span Recordable [#1508](https://github.com/open-telemetry/opentelemetry-cpp/pull/1508)
* [LOG SDK] Fix log sdk builder (#1486) [#1524](https://github.com/open-telemetry/opentelemetry-cpp/pull/1524)
* [METRICS SDK] Add configuration options for Aggregation creation [#1513](https://github.com/open-telemetry/opentelemetry-cpp/pull/1513)
* [METRICS TEST] Fix metrics unit test memory leack [#1533](https://github.com/open-telemetry/opentelemetry-cpp/pull/1533)
* [LOG SDK] Add log sdk builders (#1486) [#1524](https://github.com/open-telemetry/opentelemetry-cpp/pull/1524)
## [1.5.0] 2022-07-29
* [EXPORTER BUILD] Add resources to dep list of prometheus exporter test [#1527](https://github.com/open-telemetry/opentelemetry-cpp/pull/1527)
* [BUILD] Don't require applications using jaeger exporter to know about libcurl
* [EXPORTER] Inline print_value() in ostream exporter [#1512](https://github.com/open-telemetry/opentelemetry-cpp/pull/1512)
* [SDK] fix: urlPaser will incorrect parsing url like `http://abc.com/xxx@xxx/a/b`
* [SDK] Rename `InstrumentationLibrary` to `InstrumentationScope` [#1507](https://github.com/open-telemetry/opentelemetry-cpp/pull/1507)
* [BUILD] Try to build nlohmann-json only it's depended. [#1505](https://github.com/open-telemetry/opentelemetry-cpp/pull/1505)
* [EXPORTER BUILD] Link opentelemetry_api to ETW exporter test [#1503](https://github.com/open-telemetry/opentelemetry-cpp/pull/1503)
* [SDK] Add automatically semantic conventions from the spec (#873) [#1497](https://github.com/open-telemetry/opentelemetry-cpp/pull/1497)
* [SDK] Use template class for in-memory data. [#1496](https://github.com/open-telemetry/opentelemetry-cpp/pull/1496)
* [SDK] fix compiler warnings [#1499](https://github.com/open-telemetry/opentelemetry-cpp/pull/1499)
* [TRACE SDK] Add trace sdk builders (#1393) [#1471](https://github.com/open-telemetry/opentelemetry-cpp/pull/1471)
* [METRICS BUILD] Enable bazel build for metrics proto files [#1489](https://github.com/open-telemetry/opentelemetry-cpp/pull/1489)
* [METRICS EXPORTER] Add metrics OTLP/HTTP exporter [#1487](https://github.com/open-telemetry/opentelemetry-cpp/pull/1487)
* [EXPORTER] fix otlp grpc exporter naming [#1488](https://github.com/open-telemetry/opentelemetry-cpp/pull/1488)
* [BUILD] Remove `--config Debug` when installing. [#1480](https://github.com/open-telemetry/opentelemetry-cpp/pull/1480)
* [EXPORTER] Fix endpoint in otlp grpc exporter [#1474](https://github.com/open-telemetry/opentelemetry-cpp/pull/1474)
* [EXAMPLE] Fix memory ownership of InMemorySpanExporter (#1473) [#1471](https://github.com/open-telemetry/opentelemetry-cpp/pull/1471)
* [EXPORTER TESTS] Prometheus unit test [#1461](https://github.com/open-telemetry/opentelemetry-cpp/pull/1461)
* [DOCS] Update docs to use relative code links. [#1447](https://github.com/open-telemetry/opentelemetry-cpp/pull/1447)
* [SDK] Remove reference to deprecated InstrumentationLibrary in OTLP [#1469](https://github.com/open-telemetry/opentelemetry-cpp/pull/1469)
* [SDK] Fix trace kIsSampled flag set incorrectly [#1465](https://github.com/open-telemetry/opentelemetry-cpp/pull/1465)
* [METRICS EXPORTER] OTLP gRPC Metrics Exporter [#1454](https://github.com/open-telemetry/opentelemetry-cpp/pull/1454)
* [EXPORTER] fix prometheus exporter failure type [#1460](https://github.com/open-telemetry/opentelemetry-cpp/pull/1460)
* [SDK] Fix build warnings about missing aggregates. [#1368](https://github.com/open-telemetry/opentelemetry-cpp/pull/1368)
* [EXT] `curl::HttpClient` use `curl_multi_handle` instead of creating a thread
for every request and it's able to reuse connections now. ([#1317](https://github.com/open-telemetry/opentelemetry-cpp/pull/1317))
* [SEMANTIC CONVENTIONS] Upgrade to version 1.12.0 [#873](https://github.com/open-telemetry/opentelemetry-cpp/pull/873)
## [1.4.1] 2022-06-19
* [METRICS SDK] Fix variables inizialization [#1430](https://github.com/open-telemetry/opentelemetry-cpp/pull/1430)
* [DOCS] Fixed broken link to OpenTelemetry.io (#1445) [#1446](https://github.com/open-telemetry/opentelemetry-cpp/pull/1446)
* [BUILD] Upgrade nlohmann_json to 3.10.5 (#1438) [#1441](https://github.com/open-telemetry/opentelemetry-cpp/pull/1441)
* [METRICS SDK] fix histogram [#1440](https://github.com/open-telemetry/opentelemetry-cpp/pull/1440)
* [DOCS] Fix GettingStarted documentation for Jaeger HTTP exporter (#1347) [#1439](https://github.com/open-telemetry/opentelemetry-cpp/pull/1439)
* [BUILD] install sdk-config.h [#1419](https://github.com/open-telemetry/opentelemetry-cpp/pull/1419)
* [EXAMPLE] Log current timestamp instead of epoch time [#1434](https://github.com/open-telemetry/opentelemetry-cpp/pull/1434)
* [METRICS SDK] Add attributes/dimensions to metrics ostream exporter [#1400](https://github.com/open-telemetry/opentelemetry-cpp/pull/1400)
* [SDK] Fix global log handle symbols when using dlopen [#1420](https://github.com/open-telemetry/opentelemetry-cpp/pull/1420)
* [METRICS] Only record non-negative / finite / Non-NAN histogram values([#1427](https://github.com/open-telemetry/opentelemetry-cpp/pull/1427))
* [ETW EXPORTER] Fix ETW log exporter header inclusion [#1426](https://github.com/open-telemetry/opentelemetry-cpp/pull/1426)
* [ETW EXPORTER] Copy string_view passed to ETW exporter in PropertyVariant [#1425](https://github.com/open-telemetry/opentelemetry-cpp/pull/1425)
* [METRICS API/SDK] Pass state to async callback function. [#1408](https://github.com/open-telemetry/opentelemetry-cpp/pull/1408)
* [BUILD] fix nlohmann_json's (third party) include dir [#1415](https://github.com/open-telemetry/opentelemetry-cpp/pull/1415)
* [SDK] fix: WaitOnSocket select error when sockfd above FD_SETSIZE [#1410](https://github.com/open-telemetry/opentelemetry-cpp/pull/1410)
* [SDK] fix OTEL_INTERNAL_LOG_INFO [#1407](https://github.com/open-telemetry/opentelemetry-cpp/pull/1407)
* [DOCS] Document Getting Started with Prometheus and Grafana [#1396](https://github.com/open-telemetry/opentelemetry-cpp/pull/1396)
## [1.4.0] 2022-05-17
* [API SDK] Upgrade proto to v0.17.0, update log data model ([#1383](https://github.com/open-telemetry/opentelemetry-cpp/pull/1383))
* [LOGS SDK] Get span_id from context when Logger::Log received invalid span_id
* [METRICS SDK] Connect async storage with async instruments ([#1388](https://github.com/open-telemetry/opentelemetry-cpp/pull/1388))
* [DOCS] Getting started document using ostream exporter ([#1394](https://github.com/open-telemetry/opentelemetry-cpp/pull/1394))
* [BUILD] Fix missing link to nlohmann_json ([#1390](https://github.com/open-telemetry/opentelemetry-cpp/pull/1390))
* [SDK] Fix sharing resource in batched exported spans ([#1386](https://github.com/open-telemetry/opentelemetry-cpp/pull/1386))
* [PROTOCOL \& LOGS] Upgrade proto to v0.17.0, update log data model ([#1383](https://github.com/open-telemetry/opentelemetry-cpp/pull/1383))
* [METRICS SDK] Remove un-necessary files. ([#1379](https://github.com/open-telemetry/opentelemetry-cpp/pull/1379))
* [EXPORTER] Prometheus exporter meters and instrument name ([#1378](https://github.com/open-telemetry/opentelemetry-cpp/pull/1378))
* [API] Add noexcept/const qualifier at missing places for Trace API. ([#1374](https://github.com/open-telemetry/opentelemetry-cpp/pull/1374))
* [SDK] Fix empty tracestate header propagation ([#1373](https://github.com/open-telemetry/opentelemetry-cpp/pull/1373))
* [METRICS SDK] Reuse temporal metric storage for sync storage ([#1369](https://github.com/open-telemetry/opentelemetry-cpp/pull/1369))
* [SDK] Fix baggage propagation for empty/invalid baggage context ([#1367](https://github.com/open-telemetry/opentelemetry-cpp/pull/1367))
* [BUILD] Export opentelemetry_otlp_recordable ([#1365](https://github.com/open-telemetry/opentelemetry-cpp/pull/1365))
* [TESTS] Disable test on prometheus-cpp which not need ([#1363](https://github.com/open-telemetry/opentelemetry-cpp/pull/1363))
* [METRICS] Fix class member initialization order ([#1360](https://github.com/open-telemetry/opentelemetry-cpp/pull/1360))
* [METRICS SDK] Simplify SDK Configuration: Use View with default aggregation if
no matching View is configured
* [BUILD] Add missing include guard ([#1357](https://github.com/open-telemetry/opentelemetry-cpp/pull/1357))
* [ETW EXPORTER] Fix scalar delete against array ([#1356](https://github.com/open-telemetry/opentelemetry-cpp/pull/1356))
* [ETW EXPORTER] Conditional include for codecvt header ([#1355](https://github.com/open-telemetry/opentelemetry-cpp/pull/1355))
* [BUILD] Use latest TraceLoggingDynamic.h ([#1354](https://github.com/open-telemetry/opentelemetry-cpp/pull/1354))
* [SDK] Add explicit type cast in baggage UrlDecode ([#1353](https://github.com/open-telemetry/opentelemetry-cpp/pull/1353))
* [METRICS SDK] Remove exporter registration to meter provider ([#1350](https://github.com/open-telemetry/opentelemetry-cpp/pull/1350))
* [METRICS SDK] Fix output time in metrics OStream exporter ([#1346](https://github.com/open-telemetry/opentelemetry-cpp/pull/1346))
* [BUILD] ostream metrics cmake ([#1344](https://github.com/open-telemetry/opentelemetry-cpp/pull/1344))
* [BUILD] Link `opentelemetry_ext` with `opentelemetry_api` ([#1336](https://github.com/open-telemetry/opentelemetry-cpp/pull/1336))
* [METRICS SDK] Enable metric collection for Async Instruments - Delta and
Cumulative
* [BUILD] Dependencies image as artifact ([#1333](https://github.com/open-telemetry/opentelemetry-cpp/pull/1333))
* [EXAMPLE] Prometheus example ([#1332](https://github.com/open-telemetry/opentelemetry-cpp/pull/1332))
* [METRICS EXPORTER] Prometheus exporter ([#1331](https://github.com/open-telemetry/opentelemetry-cpp/pull/1331))
* [METRICS] Metrics histogram example ([#1330](https://github.com/open-telemetry/opentelemetry-cpp/pull/1330))
* [TESTS] Replace deprecated googletest API ([#1327](https://github.com/open-telemetry/opentelemetry-cpp/pull/1327))
* [API] Update yield logic for ARM processor ([#1325](https://github.com/open-telemetry/opentelemetry-cpp/pull/1325))
* [BUILD] Fix metrics compiler warnings ([#1328](https://github.com/open-telemetry/opentelemetry-cpp/pull/1328))
* [METRICS SDK] Implement Merge and Diff operation for Histogram Aggregation ([#1303](https://github.com/open-telemetry/opentelemetry-cpp/pull/1303))
Notes:
While opentelemetry-cpp Logs are still in experimental stage,
opentelemetry-proto to 0.17.0, which includes some breaking change in the
protocol, like
makes `name` parameter for our log API unnecessary. However, this parameter is
marked deprecated instead of being removed in this release, and it will be
removed in future release.
## [1.3.0] 2022-04-11
* [ETW EXPORTER] ETW provider handle cleanup ([#1322](https://github.com/open-telemetry/opentelemetry-cpp/pull/1322))
* [BUILD] Move public definitions into `opentelemetry_api`. ([#1314](https://github.com/open-telemetry/opentelemetry-cpp/pull/1314))
* [METRICS] OStream example ([#1312](https://github.com/open-telemetry/opentelemetry-cpp/pull/1312))
* [BUILD] Rename `http_client_curl` to `opentelemetry_http_client_curl` ([#1301](https://github.com/open-telemetry/opentelemetry-cpp/pull/1301))
* [METRICS SDK] Add InstrumentationInfo and Resource to the metrics data to be
exported.
* [TESTS] Add building test without RTTI ([#1294](https://github.com/open-telemetry/opentelemetry-cpp/pull/1294))
* [METRICS SDK] Implement periodic exporting metric reader ([#1286](https://github.com/open-telemetry/opentelemetry-cpp/pull/1286))
* [SDK] Bugfix: span SetAttribute crash ([#1283](https://github.com/open-telemetry/opentelemetry-cpp/pull/1283))
* [BUG] Remove implicitly deleted default constructor ([#1267](https://github.com/open-telemetry/opentelemetry-cpp/pull/1267))
* [METRICS SDK] Synchronous Metric collection (Delta , Cumulative) ([#1265](https://github.com/open-telemetry/opentelemetry-cpp/pull/1265))
* [METRICS SDK] Metrics exemplar round 1 ([#1264](https://github.com/open-telemetry/opentelemetry-cpp/pull/1264))
* [EXPORTER] Fix: use CURLOPT_TIMEOUT_MS to config OtlpHttpExporter's timeout
instead of CURLOPT_TIMEOUT
* [EXPORTER] Jaeger Exporter - Populate Span Links ([#1251](https://github.com/open-telemetry/opentelemetry-cpp/pull/1251))
* [SDK] Reorder the destructor of members in LoggerProvider and TracerProvider ([#1245](https://github.com/open-telemetry/opentelemetry-cpp/pull/1245))
* [METRICS SDK] Enable metric collection from MetricReader ([#1241](https://github.com/open-telemetry/opentelemetry-cpp/pull/1241))
* [METRICS SDK] Asynchronous Aggregation storage ([#1232](https://github.com/open-telemetry/opentelemetry-cpp/pull/1232))
* [METRICS SDK] Synchronous Instruments - Aggregation Storage(s) creation for
configured views
* [BUILD] Added s390x arch into CMake build. ([#1216](https://github.com/open-telemetry/opentelemetry-cpp/pull/1216))
* [API] Allow extension of the lifetime of ContextStorage. ([#1214](https://github.com/open-telemetry/opentelemetry-cpp/pull/1214))
* [METRICS SDK] Add Aggregation storage ([#1213](https://github.com/open-telemetry/opentelemetry-cpp/pull/1213))
* [TESTS] Fix ostream_log_test Mac ([#1208](https://github.com/open-telemetry/opentelemetry-cpp/pull/1208))
* [BUILD] Update grpc to v1.43.2 to support VS2022/MSVC 19.30 and bazel 5.0 ([#1207](https://github.com/open-telemetry/opentelemetry-cpp/pull/1207))
* [DOCS] Benchmark documentation ([#1205](https://github.com/open-telemetry/opentelemetry-cpp/pull/1205))
* [DOCS] Fix errors in SDK documentation ([#1201](https://github.com/open-telemetry/opentelemetry-cpp/pull/1201))
* [METRICS EXPORTER] Ostream metric exporter ([#1196](https://github.com/open-telemetry/opentelemetry-cpp/pull/1196))
* [Metrics SDK] Filtering metrics attributes ([#1191](https://github.com/open-telemetry/opentelemetry-cpp/pull/1191))
* [Metrics SDK] Sync and Async Instruments SDK ([#1184](https://github.com/open-telemetry/opentelemetry-cpp/pull/1184))
* [Metrics SDK] Add Aggregation as part of metrics SDK. ([#1178](https://github.com/open-telemetry/opentelemetry-cpp/pull/1178))
* [BUILD] Cmake: thrift requires boost headers, include them as
Boost_INCLUDE_DIRS
Notes:
`opentelemetry_` as prefix to http_client_curl library for resolving potential
naming conflict, this could break existing cmake build if http_client_curl is
listed as explicit dependency in user's cmake file.
## [1.2.0] 2022-01-31
* [CI] Continuous benchmark tests as part of the CI ([#1174](https://github.com/open-telemetry/opentelemetry-cpp/pull/1174))
* [API] Allow to use external abseil for bazel targets ([#1172](https://github.com/open-telemetry/opentelemetry-cpp/pull/1172))
* [EXPORTER] Importing gsl::span if std::span is not available ([#1167](https://github.com/open-telemetry/opentelemetry-cpp/pull/1167))
* [EXPORTER] Synchronized calls to Exporter::Export & Shutdown ([#1164](https://github.com/open-telemetry/opentelemetry-cpp/pull/1164))
* [EXPORTER] OTLP http exporter block thread ([#1163](https://github.com/open-telemetry/opentelemetry-cpp/pull/1163))
* [TESTS] Jaeger: ThriftSender unit test ([#1162](https://github.com/open-telemetry/opentelemetry-cpp/pull/1162))
* [EXPORTER] InMemorySpanExporter shutdown fix ([#1161](https://github.com/open-telemetry/opentelemetry-cpp/pull/1161))
* [EXPORTER] Fix leak in Jaeger exporter ([#1160](https://github.com/open-telemetry/opentelemetry-cpp/pull/1160))
* [TESTS] ZipkinExporter unit-tests ([#1155](https://github.com/open-telemetry/opentelemetry-cpp/pull/1155))
* [SDK] Logger: propagating resources through LoggerProvider ([#1154](https://github.com/open-telemetry/opentelemetry-cpp/pull/1154))
* [SDK] Logger: support for instrumentation library ([#1149](https://github.com/open-telemetry/opentelemetry-cpp/pull/1149))
* [SDK] Add log level for internal log of sdk ([#1147](https://github.com/open-telemetry/opentelemetry-cpp/pull/1147))
* [METRICS] Metrics SDK: View API ([#1110](https://github.com/open-telemetry/opentelemetry-cpp/pull/1110))
Notes on experimental features:
above CHANGELOG introduced API changes which are not backward compatible with
previous logs, please update API package to this release if
`ENABLE_LOGS_PREVIEW` is turned on (it is turned off by default).
## [1.1.1] 2021-12-20
* [SDK] Rename OTEL_CPP_GET_ATTR macro, and define it using fully qualified attr
function
* [SDK] Default resource attributes and attributes in OTEL_RESOURCE_ATTRIBUTES
are missing when using Otlp*LogExporter
* [METRICS] Add Meter and MeterProvider in the SDK
* [EXPORTER] ZipkinExporter shutdown
* [EXPORTER] Jaeger exporter shutdown
* [EXPORTER] Bugfix: `jaeger::TUDPTransport::write` crash when `getaddrinfo`
returns error
* [EXPORTER] Bugfix: Jaeger exporter: extend supported attributes types
* [EXPORTER] Fix otlp generates null span ids
* [EXPORTER] Jaeger bazel (Linux only)
* [DOCS] Add note on DLL support
* [DOCS] Improve the instructions for Bazel build
* [DOCS] Document dependencies
* [DOCS] Dockerfile for quick demo/troubleshooting purpose
* [TESTS] Fix data race in BM_ThreadYieldSpinLockThrashing
* [EXAMPLE] Otlp gRPC log example
* [BUILD] C++20 not Building with VS2019
* [BUILD] Mark tags to bazel
## [1.1.0] 2021-11-19
* [BUILD] build release tarball when nlohmann-json not installed
* [SDK] Bugfix: regex is neither working on GCC 4.9.x
* [SDK] Improvement: span_id should not break strict aliasing.
* [EXAMPLE] OTLP HTTP log example
* [SDK] OTLP gRPC log export should fail after shutdown
* [BUILD] Building otlp exporter from the release tarball
* [METRICS] Move old metrics implementation to different directory, and rename
targets to \_deprecated
* [EXPORTER] Add OTLP/gRPC Log Exporter
* [EXPORTER] Prometheus Exporter
* [EXPORTER] Add OTLP/HTTP Log Exporter
* [SDK] fix: issue 368- consistent namespace scope resolution
## [1.0.1] 2021-10-21
* [EXPORTER] Exports span attributes to ETW
* [BUILD] cmake: add FindThrift.cmake find module method for thrift
* [BUILD] Fix nlohmann_json package dependency
* [EXPORTER] Change OTLP/HTTP default port from 4317 to 4318
* [EXPORTER] ETW Log Exporter
* [API] Adding new Logger:log() method
* [EXPORTER] Remove scheme from OTLP endpoint before passing to gRPC
* [BUILD] Update opentelemetry-proto for bazel build to 0.9.0
* [BUILD] Cross compling grpc_cpp_plugin not found bug
* [EXPORTER] Support environment variables for both `OtlpGrpcExporter` and
`OtlpHttpExporter`
* [API/SDK] Add schema_url support to both Resource and InstrumentationLibrary
* [BUILD] Fix build issue where _memcpy_ was not declared in scope
## [1.0.0] 2021-09-16
### API
* Document DefaultSpan, remove DefaultTracer
* Separate baggage<->Context api from Baggage Propagator
* Remove unused public API to_span_ptr
* :collision: Make span context management public
* Support determining parent span from Context while creating new Span
* :collision: Traces: Add note on experimental semantic convention
implementation, prefix semantics headers with experimental tag
* Increment OPENTELEMETRY_ABI_VERSION_NO to 1
### SDK
* Clean up `GetEnvironmentVariable` and remove unused variable under `NO_GETENV`
* :collision: Resources: Add note on experimental semantic convention
implementation, prefix semantics headers with experimental tag
### OTLP Exporter
* :bug: Ignore status description if status code is not Error
* :collision: Make Otlp exporter configuration environment variables
specs-compliant
### Zipkin Exporter
* :bug: Don't set parentId in case parentId is empty
* :rocket: Extend zipkin exporter with ability to provide headers
### DOCS
* :book: Add getting-started documentation for SDK:
* :book: Remove unnecessary spaces and spelling of gRPC in README
### BUILD
* Disable bazel build for gcc 4.8, upgrade versions for grpc(v1.39.1) and
bazel(4.2.0), document bazel support
* Move CMake config template to cmake folder
* Enable CMake to search the new package variable `<PackageName>_ROOT`
* :bug: Do not override CMAKE_CXX_STANDARD
### :construction: Experiemental Features (Will change in future)
* Semantic Conventions for traces - As the specs is still experimental, the
implementation will change in future.
* Semantic Convention for resource - As the specs is still experimental, the
implementation will change in future.
* Logs and Metrics API & SDK - These are not compliant, and are behind feature
flag. Not recommended to use for now.
## [1.0.0-rc4] 2021-08-04
* [EXPORTER] `BREAKING CHANGE` Fix default HTTP port for OTLP HTTP Exporter
* [API] Fix timeout calculation for Tracer::Flush() and Tracer::Close()
* [API] Fix for Stack::Resize that new_capacity is not assigned to capacity_
* [SDK] Fix race condition in circular buffer simulation test
* [EXPORTER] Fix error logging in Jaeger Exporter
* [BUILD] Use latest grpc version (v1.39.0) for cmake build of otlp exporter
* [EXPORTER] Add Jaeger Thrift HTTP exporter
* [SDK] Move env-var read logic to common dir, and optional reading of env-var
* [EXPORTER] Remove recordable header from CMake install rules for exporters
* [EXPORTER] `BREAKING CHANGE` Rename Recordable to JaegerRecordable in Jaeger
exporter
* [EXPORTER] `BREAKING CHANGE` Rename Jaeger exporter target
* [EXPORTER] Add Zipkin exporter example
* [EXPORTER] Bazel build for Zipkin exorter
* [BUILD] Allow to use local GSL
* [DOCS] Document vcpkg toolchain configuration
* [SDK] Fix for resource deletion after tracer provider shutdown
* [BUILD] Add bazel build for grpc example
* [EXPORTER] Add resource and instrumentation library support for
OStreamSpanExporter
* [API] Adding semantic-convention attributes for trace
## [1.0.0-rc3] 2021-07-12
* [DOCS] Add doxygen reference docs for SDK
* [EXPORTER] Jaeger Exporter - Populate resource attributes into process tags in
* [EXPORTER] Zipkin Exporter - Report Event timestamp into microseconds
* [EXPORTER] Jaeger Exporter - Handle span events
* [DOCS] Fix API docs for Scope object
* [BUILD] Fix Linking error for libcurl on some macOS environments
* [API] Context cleanup from Runtime Storage
* [DOCS] Document strategy to avoid conflict between two different versions of
* [EXPORTER] ETW Exporter - Document example for ETW Exporter
* [SDK] Create Span with Valid spanId and traceId irrespective of Sampling
decision
* [EXPORTER] Jaeger Exporter - Rename bswap macros to avoid clash on some
* [API] Add Semantics Conventions attributes for Resources
* [BUILD] Use nlohmann-json from submodules if not already installed
## [1.0.0-rc2] 2021-06-18
* [EXPORTER] Jaeger Exporter - Support for Instrumentation Library
* [TESTS] Adding benchmark tests for baggage api
* [BUILD] Fix for GCC9/C++20 Support for using STL for modern C++ features
* [TESTS] Adding benchmark tests for span create api
* [BUILD] Fix for using Abseil library for modern C++ features
* [BUILD] Fix issues with win32/x86 compilation
* [DOCS] Document OSS dependencies and their licenses
* [BUILD] Various fixes to build with Visual Studio 2015
* [INSTRUMENTATION] HTTPClient: Change support for full URL argument
* [EXPORTER] Jaeger Exporter - fix endianness of Jaeger IDs for transmission
* [INSTRUMENTATION] fix protobuf compilation warning in gRPC example
* [EXPORTER] `BREAKING CHANGE` - Add OTLP/HTTP+JSON Protocol exporter; Rename
`OtlpExporter` to `OtlpGrpcExporter`
## [1.0.0-rc1] 2021-06-04
* [BUILD] Enable Jaeger exporter build in Windows
* [DOCS] Versioning doc update to clarify release and versioning policy
* [LOGS] Move Logging implementation under feature-flag
* [BUILD] Filter metric headers files from `opentelemetry-api` and
`opentelemetry-sdk` targets if metrics feature-flag is disabled
* [BUILD] Fix install rule for ostream exporter, Jaeger, ETW, ElasticSearch
([#805](Fix install rule for header files of ostream exporter))
* [API/SDK] Switch from mpark::variant to absl::variant as default
* [API/SDK] Support `const char *` as acceptable data type for attributes and
resources
* [EXAMPLE] gRPC instrumentation example with context propagation
## [0.7.0] 2021-05-26
* [METRICS] Move metrics api/sdk under preview feature flag
* [DOCS] Add instructions to build using Bazel
* [DOCS] Update copyright headers
* [EXPORTER] Populate resource to OTLP proto data
* [CI] Add CodeQL security scan CI workflow
* [BUILD] Enable building API only CMake Project
* [SDK] Fix for sampling of root span
* [CI] Add Jaeger exporter to CMake CI build
* [API] `BREAKING CHANGE` - Tracer::WithActiveSpan() to return Scope object
intead of unique_ptr
* [DOCS] Add docs for nested spans and context propagation in readthedocs
* [CI] Output verbose error for failed unit-test in CI
## [0.6.0] 2021-05-11
* [EXPORTER] Add Jaeger exporter
* [SDK] Support multiple processors
* [SDK] Add instrumentation library and multiple tracer support
* [SDK] Resource integration with Exporters
* [EXAMPLE] Enhance existing http example with propagation
## [0.5.0] 2021-04-26
* [SDK] Support custom span-id and trace-id generator
* [SDK] Add SpanContext (and TraceState) to Recordable
* [SDK] Global Propagator
* [SDK] Create SharedContext for updating span pipeline
* [API] Baggage implementation
* [API] Move class from opentelemetry::core namespace to opentelemetry::common
namespace
## [0.4.0] 2021-04-12
* [EXPORTER] ETW Exporter enhancements
* [EXPORTER] Read Zipkin endpoint from environment variable.
* [EXPORTER] Split Zpages webserver hosting from Exporter
* [EXPORTER] ETW Exporter Usage Instructions
* [INSTRUMENTATION] HTTP Client/Server Instrumentation example
* [EXPORTER] Enable tls authentication for otlp grpc exporter ([#635](Enable tls
authentication for otlp grpc exporter))
* [API] Refactoring trace_state to reuse common functionality in baggage
## [0.3.0] 2021-03-19
* [EXPORTER] Added Zipkin Exporter.
* [API] Added Jaeger propagator.
* [PROPAGATOR] Added Composite Propagator
* [API] Propagate traceflag from parent
* [DOCS] Add sphinx support for api doc generation
* [SDK] Add service.name if missing in Resource
## [0.2.0] 2021-03-02
* [SDK] Added `ForceFlush` to `TracerProvider`.
* [SDK] Added Resource API.
* [API] Modified TraceState support for w3c trace context as per specs.
* [SDK] TraceState implementation as per spec
* [API] Added B3 Propagator.
* [Exporter] Added ETW Exporter.
* [CI] Enable cache for Bazel for faster builds.
## [0.0.1] 2020-12-16
### Added
* Trace API and SDK experimental
* OTLP Exporter
### Changed
### Removed