Skip to content

v1.0.0-rc.2

Pre-release
Pre-release

Choose a tag to compare

@michaelbushe michaelbushe released this 23 Aug 19:28
· 2 commits to main since this release

Added

  • OTelAPI.setErrorHandler — a user-configurable global error handler
    (api#94). Internal misuse reports route through it instead of throwing;
    the default handler logs via OTelLog and never throws. A user-installed
    handler that throws propagates deliberately (strict mode), per
    error-handling.md. The handler is factory-held state: OTelFactory
    carries the installed handler and an overridable defaultErrorHandler
    for SDK factories, and a handler installed before any factory exists
    is buffered and adopted at factory installation. Context.runIsolate
    re-installs the parent's handler inside the child isolate (handlers
    are copied; capture a SendPort to aggregate reports across isolates
    — an unsendable handler degrades to the child default and is
    reported).

Fixed (spec compliance)

  • Span.end() no longer promotes status from Unset to Ok (api#60).
    Unset stays Unset; analysis tools can no longer be misled by
    fabricated Ok statuses. The deprecated spanStatus parameter still
    flows through the setStatus rules when passed.
  • CompositePropagator.extract walks propagators in the order they were
    specified
    (api#76), matching inject and every other OpenTelemetry SDK
    (was reversed, so the last-registered propagator no longer wins extract).
  • Context.withSpanContext returns a derived Context instead of throwing
    ArgumentError
    when the context already holds a span from a different
    trace (api#77) — a routine situation during extraction.

Added

  • Semantic conventions regenerated from registry v1.44.0 (previously
    v1.43.0-21-g436fa257). Additive only, per the VERSIONING.md policy: 47
    new identifiers, no renames and no removals.

    The substantial addition is the complete browser.web_vital.* set —
    name, value, delta, id, rating and navigation_type — together
    with their value enums: cls, lcp, fcp, inp, ttfb and the
    obsoleted fid; good / needs-improvement / poor; and the six
    navigation types (navigate, reload, back-forward,
    back-forward-cache, prerender, restore). Web-vitals instrumentation
    now has registry names to emit against instead of inventing its own.

    Also new: browser.platform, hw.errors and hw.status,
    k8s.node.filesystem.inode.count / .free, and the scaleway_cloud
    and scaleway_cloud_compute members.

  • lib/src/api/semantics/candidates/ — a home for attribute keys that are
    not yet in the registry
    , staged for upstream contribution, exported from
    the package barrel and marked @experimental.

    This revisits the rc.1 position that "the API package now contains only
    registry conventions". That rule was right about the problem — a private
    dialect masquerading as OpenTelemetry — but it left no path for the
    conventions we want to propose, which the semantic-conventions CONTRIBUTING
    guide asks be "prototyped in the corresponding instrumentation(s)" first.
    Candidates are kept in a separate directory, under a separate stability
    promise, so a consumer can always tell a published convention from a
    proposal.

    Candidates are unstable in identity but deprecation-cycled: a renamed,
    reshaped or rejected candidate is @Deprecated, pointing at its
    replacement, for a release before it is removed — the same cycle the
    vendor/RUM enums completed. When one is accepted upstream it reappears in
    generated semconv/ output and the candidate is deprecated in its favor.

    Staged: app.start.type (cold/warm/hot), app.launch.id,
    app.screen.previous_id, app.screen.previous_name,
    app.gesture.direction, app.gesture.delta.x, app.gesture.delta.y,
    device.battery.level, device.battery.state, device.battery.save_mode,
    device.emulator, and browser.languages.

  • doc/SEMCONV_CANDIDATES.md — the disposition of all 116 identifiers
    removed in rc.1. Most should return as registry conventions rather than
    candidates: the registry has since gained app.crash, app.jank,
    app.screen.click, app.widget.click, device.app.lifecycle,
    session.start/session.end and browser.web_vital.*, which cover the
    bulk of the removed RUM surface. The document maps each removal to its
    registry replacement, to a candidate, or to a recorded reason for dropping
    it.