{{ $data := hugo.Data.instrumentation }}
{{ $maturityLink := dict "stable" "https://github.com/open-telemetry/opentelemetry-specification/blob/main/oteps/0232-maturity-of-otel.md#stable" "beta" "https://github.com/open-telemetry/opentelemetry-specification/blob/main/oteps/0232-maturity-of-otel.md#beta" "development" "https://github.com/open-telemetry/opentelemetry-specification/blob/main/oteps/0232-maturity-of-otel.md#development" }}

Language | Traces | Metrics | Logs | Profiles |
| --- | --- | --- | --- | --- |
| [C++](/docs/languages/cpp/) | [{{ $data.cpp.status.traces | humanize }}]({{ index $maturityLink $data.cpp.status.traces }}) | [{{ $data.cpp.status.metrics | humanize }}]({{ index $maturityLink $data.cpp.status.metrics }}) | [{{ $data.cpp.status.logs | humanize }}]({{ index $maturityLink $data.cpp.status.logs }}) | {{ $profiles := $data.cpp.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [C#/.NET](/docs/languages/dotnet/) | [{{ $data.dotnet.status.traces | humanize }}]({{ index $maturityLink $data.dotnet.status.traces }}) | [{{ $data.dotnet.status.metrics | humanize }}]({{ index $maturityLink $data.dotnet.status.metrics }}) | [{{ $data.dotnet.status.logs | humanize }}]({{ index $maturityLink $data.dotnet.status.logs }}) | {{ $profiles := $data.dotnet.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [Erlang/Elixir](/docs/languages/erlang/) | [{{ $data.erlang.status.traces | humanize }}]({{ index $maturityLink $data.erlang.status.traces }}) | [{{ $data.erlang.status.metrics | humanize }}]({{ index $maturityLink $data.erlang.status.metrics }}) | [{{ $data.erlang.status.logs | humanize }}]({{ index $maturityLink $data.erlang.status.logs }}) | {{ $profiles := $data.erlang.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [Go](/docs/languages/go/) | [{{ $data.go.status.traces | humanize }}]({{ index $maturityLink $data.go.status.traces }}) | [{{ $data.go.status.metrics | humanize }}]({{ index $maturityLink $data.go.status.metrics }}) | [{{ $data.go.status.logs | humanize }}]({{ index $maturityLink $data.go.status.logs }}) | {{ $profiles := $data.go.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [Java](/docs/languages/java/) | [{{ $data.java.status.traces | humanize }}]({{ index $maturityLink $data.java.status.traces }}) | [{{ $data.java.status.metrics | humanize }}]({{ index $maturityLink $data.java.status.metrics }}) | [{{ $data.java.status.logs | humanize }}]({{ index $maturityLink $data.java.status.logs }}) | {{ $profiles := $data.java.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [JavaScript](/docs/languages/js/) | [{{ $data.js.status.traces | humanize }}]({{ index $maturityLink $data.js.status.traces }}) | [{{ $data.js.status.metrics | humanize }}]({{ index $maturityLink $data.js.status.metrics }}) | [{{ $data.js.status.logs | humanize }}]({{ index $maturityLink $data.js.status.logs }}) | {{ $profiles := $data.js.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [Kotlin](/docs/languages/kotlin/) | [{{ $data.kotlin.status.traces | humanize }}]({{ index $maturityLink $data.kotlin.status.traces }}) | [{{ $data.kotlin.status.metrics | humanize }}]({{ index $maturityLink $data.kotlin.status.metrics }}) | [{{ $data.kotlin.status.logs | humanize }}]({{ index $maturityLink $data.kotlin.status.logs }}) | {{ $profiles := $data.kotlin.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [PHP](/docs/languages/php/) | [{{ $data.php.status.traces | humanize }}]({{ index $maturityLink $data.php.status.traces }}) | [{{ $data.php.status.metrics | humanize }}]({{ index $maturityLink $data.php.status.metrics }}) | [{{ $data.php.status.logs | humanize }}]({{ index $maturityLink $data.php.status.logs }}) | {{ $profiles := $data.php.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [Python](/docs/languages/python/) | [{{ $data.python.status.traces | humanize }}]({{ index $maturityLink $data.python.status.traces }}) | [{{ $data.python.status.metrics | humanize }}]({{ index $maturityLink $data.python.status.metrics }}) | [{{ $data.python.status.logs | humanize }}]({{ index $maturityLink $data.python.status.logs }}) | {{ $profiles := $data.python.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [Ruby](/docs/languages/ruby/) | [{{ $data.ruby.status.traces | humanize }}]({{ index $maturityLink $data.ruby.status.traces }}) | [{{ $data.ruby.status.metrics | humanize }}]({{ index $maturityLink $data.ruby.status.metrics }}) | [{{ $data.ruby.status.logs | humanize }}]({{ index $maturityLink $data.ruby.status.logs }}) | {{ $profiles := $data.ruby.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [Rust](/docs/languages/rust/) | [{{ $data.rust.status.traces | humanize }}]({{ index $maturityLink $data.rust.status.traces }}) | [{{ $data.rust.status.metrics | humanize }}]({{ index $maturityLink $data.rust.status.metrics }}) | [{{ $data.rust.status.logs | humanize }}]({{ index $maturityLink $data.rust.status.logs }}) | {{ $profiles := $data.rust.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
| [Swift](/docs/languages/swift/) | [{{ $data.swift.status.traces | humanize }}]({{ index $maturityLink $data.swift.status.traces }}) | [{{ $data.swift.status.metrics | humanize }}]({{ index $maturityLink $data.swift.status.metrics }}) | [{{ $data.swift.status.logs | humanize }}]({{ index $maturityLink $data.swift.status.logs }}) | {{ $profiles := $data.swift.status.profiles }}{{ if eq $profiles "-" }}-{{ else }}[{{ $profiles | humanize }}]({{ index $maturityLink $profiles }}){{ end }} |
