Revision history for Punk-OpenTelemetry
0.10 2026-09-16
- ADDS: http.server.request.duration, recorded by the SDK itself.
Claimed by the POD since this distribution was written and never
built. Recorded on EVERY request, including the unsampled ones: a
duration histogram over a sample is not a smaller histogram, it is
a wrong one. Seconds, the conventions' boundaries, and http.route
absent rather than substituted - on a metric that substitution is
a million series.
- ADDS: a `metrics` switch beside server/client/db, and install()
takes the meter. No meter means no clock is even stashed.
- ADDS: a database span is a CHILD of the request that issued it.
Started with a NULL parent it got a fresh trace id, so every
statement was its own trace one span long while the request sat
in another. Needs Punk 0.50 (pk_abi v5 current_of); against an
older Punk it still roots, as before.
- ADDS: an outbound call with no caller-set traceparent is a child
of the request being served, instead of a root.
- ADDS: DBIx::Loop's statement observer is registered. Three
comments here said it was and it never had been; install() now
reports db_loop.
- FIXES: the boot line printed the configured propagators, which
said they did something. The automatic instrumentation reads and
injects W3C traceparent only, whatever OTEL_PROPAGATORS says, so
the line told an operator the opposite of the truth. Dropped from
the banner and documented instead.
0.08 2026-08-27
- This distribution is now an ExtUtils::Depends PROVIDER
- otel_proto.h is installed and published
0.07 2026-08-26
- An outbound call joins the trace it was made from.
- A traceparent the caller already set is honoured as the parent and
replaced in place.
- Punk::OpenTelemetry::SpanRef, a BORROWED span handle with no
DESTROY: the request's span belongs to the instrumentation, and a
handle to it in the owning class would free what the response side
is about to end.
- Span: add sampled, child_of and traceparent.
- The logs signal is the application's own logger: $c->log is tapped
through pk_abi v4 and exported with its request's trace id.
- REMOVED: the $c->otel_log helper
0.06 2026-08-26
- Metrics and logs encode. Both encoders existed in the header and the
exporter never dispatched to them, so every signal but traces was
refused at the last step.
- One eval per signal in flush. A failure in any one signal aborted
the block, so metrics failing to encode meant logs were never
drained: two signals lost to one broken encoder.
0.05 2026-08-23
- Fixed the module failing to load with "undefined symbol:
clock_gettime" on glibc before 2.17 (Debian wheezy, reported by
CPAN Testers on 5.20, 5.22 and 5.24). clock_gettime lives in librt
there, so the configure probe now retries with -lrt and links it
when that is what makes it work.
0.04 2026-08-20
- FIX: change abi version checks from == to <=
- Fixed a SEGFAULT on perls before 5.32, POPs
- Fixed t/07-metrics.t failing on every perl built uselongdouble
0.03 2026-08-20
- Fixed a SEGFAULT on perls before 5.20, reported by CPAN Testers
against 0.01 on 5.18.2 (FreeBSD 9.2, gcc 4.2.1) and 5.18.4
(Linux, gcc 12). Eleven XSUBs returned by assigning &PL_sv_undef to an
SV* RETVAL. The typemap mortalises RETVAL, so each of those
returns decremented the refcount of an IMMORTAL and before
5.20 immortals have no refcount protection, so the decrements
are real and the SV is eventually freed underneath the
interpreter.
0.02 2026-08-19
- Fixed a SEGFAULT on perls before 5.20, reported by CPAN Testers
against 0.01 on 5.18.2 (FreeBSD 9.2, gcc 4.2.1) and 5.18.4
(Linux, gcc 12). Eleven XSUBs returned by assigning &PL_sv_undef to an
SV* RETVAL. The typemap mortalises RETVAL, so each of those
returns decremented the refcount of an IMMORTAL and before
5.20 immortals have no refcount protection, so the decrements
are real and the SV is eventually freed underneath the
interpreter.
0.01 2026-08-19
First version
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)