From 1f2557443841c5e71e3518736acd11c40543e9b2 Mon Sep 17 00:00:00 2001 From: c-cube Date: Tue, 27 May 2025 14:07:49 +0000 Subject: [PATCH] deploy: d9cd7621f54325d80114fc3d5be9ff59c98f7331 --- ppx_trace/_doc-dir/CHANGES.md | 16 ++++++++++++++-- trace-fuchsia/_doc-dir/CHANGES.md | 16 ++++++++++++++-- trace-tef/_doc-dir/CHANGES.md | 16 ++++++++++++++-- trace/Trace/index.html | 8 ++++---- .../Collector/module-type-S/index.html | 2 +- trace/Trace_core/index.html | 8 ++++---- trace/Trace_event/Event/index.html | 2 +- trace/Trace_event/Subscriber/index.html | 4 ++-- trace/Trace_event/index.html | 2 +- trace/_doc-dir/CHANGES.md | 16 ++++++++++++++-- 10 files changed, 69 insertions(+), 21 deletions(-) diff --git a/ppx_trace/_doc-dir/CHANGES.md b/ppx_trace/_doc-dir/CHANGES.md index 0d68d50..55db48f 100644 --- a/ppx_trace/_doc-dir/CHANGES.md +++ b/ppx_trace/_doc-dir/CHANGES.md @@ -1,9 +1,21 @@ -# 0.10 (wip) +# 0.10 - breaking: manual spans now take a `explicit_span_ctx` as parent, that can potentially be transmitted across processes/machines. It also is intended to be more compatible with OTEL. -- depopt on unix for TEF timestamps +- breaking `trace.subscriber`: timestamps are `int64`ns now, not floats +- breaking `trace`: pass a `string` trace_id in manual spans, which helps + for backends such as opentelemetry. It's also useful for extensions. + +- refactor `trace-fuchsia`: full revamp of the library, modularized, using subscriber API +- refactor `trace-tef`: split into exporter,writer,subscriber, using subscriber API +- feat: add `trace.event`, useful for background threads +- feat `trace.subscriber`: add `Span_tbl`, and a depopt on picos_aux +- feat `trace.subscriber`: tee a whole array at once +- feat tef-tldrs: use EMIT_TEF_AT_EXIT +- feat `trace.subscriber`: depopt on unix for timestamps +- refactor `trace-tef`: depopt on unix for TEF timestamps + # 0.9.1 diff --git a/trace-fuchsia/_doc-dir/CHANGES.md b/trace-fuchsia/_doc-dir/CHANGES.md index 0d68d50..55db48f 100644 --- a/trace-fuchsia/_doc-dir/CHANGES.md +++ b/trace-fuchsia/_doc-dir/CHANGES.md @@ -1,9 +1,21 @@ -# 0.10 (wip) +# 0.10 - breaking: manual spans now take a `explicit_span_ctx` as parent, that can potentially be transmitted across processes/machines. It also is intended to be more compatible with OTEL. -- depopt on unix for TEF timestamps +- breaking `trace.subscriber`: timestamps are `int64`ns now, not floats +- breaking `trace`: pass a `string` trace_id in manual spans, which helps + for backends such as opentelemetry. It's also useful for extensions. + +- refactor `trace-fuchsia`: full revamp of the library, modularized, using subscriber API +- refactor `trace-tef`: split into exporter,writer,subscriber, using subscriber API +- feat: add `trace.event`, useful for background threads +- feat `trace.subscriber`: add `Span_tbl`, and a depopt on picos_aux +- feat `trace.subscriber`: tee a whole array at once +- feat tef-tldrs: use EMIT_TEF_AT_EXIT +- feat `trace.subscriber`: depopt on unix for timestamps +- refactor `trace-tef`: depopt on unix for TEF timestamps + # 0.9.1 diff --git a/trace-tef/_doc-dir/CHANGES.md b/trace-tef/_doc-dir/CHANGES.md index 0d68d50..55db48f 100644 --- a/trace-tef/_doc-dir/CHANGES.md +++ b/trace-tef/_doc-dir/CHANGES.md @@ -1,9 +1,21 @@ -# 0.10 (wip) +# 0.10 - breaking: manual spans now take a `explicit_span_ctx` as parent, that can potentially be transmitted across processes/machines. It also is intended to be more compatible with OTEL. -- depopt on unix for TEF timestamps +- breaking `trace.subscriber`: timestamps are `int64`ns now, not floats +- breaking `trace`: pass a `string` trace_id in manual spans, which helps + for backends such as opentelemetry. It's also useful for extensions. + +- refactor `trace-fuchsia`: full revamp of the library, modularized, using subscriber API +- refactor `trace-tef`: split into exporter,writer,subscriber, using subscriber API +- feat: add `trace.event`, useful for background threads +- feat `trace.subscriber`: add `Span_tbl`, and a depopt on picos_aux +- feat `trace.subscriber`: tee a whole array at once +- feat tef-tldrs: use EMIT_TEF_AT_EXIT +- feat `trace.subscriber`: depopt on unix for timestamps +- refactor `trace-tef`: depopt on unix for TEF timestamps + # 0.9.1 diff --git a/trace/Trace/index.html b/trace/Trace/index.html index 68d4dae..6b2a40e 100644 --- a/trace/Trace/index.html +++ b/trace/Trace/index.html @@ -1,5 +1,5 @@ -Trace (trace.Trace)

Module Trace

include module type of struct include Trace_core end
type span = int64

A span identifier.

The meaning of the identifier depends on the collector.

type trace_id = string

A bytestring representing a (possibly distributed) trace made of async spans. With opentelemetry this is 16 bytes.

  • since NEXT_RELEASE
type user_data = [
  1. | `Int of int
  2. | `String of string
  3. | `Bool of bool
  4. | `Float of float
  5. | `None
]

User defined data, generally passed as key/value pairs to whatever collector is installed (if any).

type explicit_span_ctx = Trace_core.explicit_span_ctx = {
  1. span : span;
    (*

    The current span

    *)
  2. trace_id : trace_id;
    (*

    The trace this belongs to

    *)
}

A context, passed around for async traces.

  • since NEXT_RELEASE
type explicit_span = Trace_core.explicit_span = {
  1. span : span;
    (*

    Identifier for this span. Several explicit spans might share the same identifier since we can differentiate between them via meta.

    *)
  2. trace_id : trace_id;
    (*

    The trace this belongs to

    *)
  3. mutable meta : Trace_core.Meta_map.t;
    (*

    Metadata for this span (and its context). This can be used by collectors to carry collector-specific information from the beginning of the span, to the end of the span.

    *)
}

Explicit span, with collector-specific metadata. This is richer than explicit_span_ctx but not intended to be passed around (or sent across the wire), unlike explicit_span_ctx.

module Collector = Trace_core.Collector
module Meta_map = Trace_core.Meta_map
module Level = Trace_core.Level

Tracing

val enabled : unit -> bool

Is there a collector?

This is fast, so that the traced program can check it before creating any span or message.

val get_default_level : unit -> Level.t

Current default level for spans.

  • since 0.7
val set_default_level : Level.t -> unit

Set level used for spans that do not specify it. The default default value is Level.Trace.

  • since 0.7
val ctx_of_span : explicit_span -> explicit_span_ctx

Turn a span into a span context.

  • since NEXT_RELEASE
val with_span : +Trace (trace.Trace)

Module Trace

include module type of struct include Trace_core end
type span = int64

A span identifier.

The meaning of the identifier depends on the collector.

type trace_id = string

A bytestring representing a (possibly distributed) trace made of async spans. With opentelemetry this is 16 bytes.

  • since 0.10
type user_data = [
  1. | `Int of int
  2. | `String of string
  3. | `Bool of bool
  4. | `Float of float
  5. | `None
]

User defined data, generally passed as key/value pairs to whatever collector is installed (if any).

type explicit_span_ctx = Trace_core.explicit_span_ctx = {
  1. span : span;
    (*

    The current span

    *)
  2. trace_id : trace_id;
    (*

    The trace this belongs to

    *)
}

A context, passed around for async traces.

  • since 0.10
type explicit_span = Trace_core.explicit_span = {
  1. span : span;
    (*

    Identifier for this span. Several explicit spans might share the same identifier since we can differentiate between them via meta.

    *)
  2. trace_id : trace_id;
    (*

    The trace this belongs to

    *)
  3. mutable meta : Trace_core.Meta_map.t;
    (*

    Metadata for this span (and its context). This can be used by collectors to carry collector-specific information from the beginning of the span, to the end of the span.

    *)
}

Explicit span, with collector-specific metadata. This is richer than explicit_span_ctx but not intended to be passed around (or sent across the wire), unlike explicit_span_ctx.

module Collector = Trace_core.Collector
module Meta_map = Trace_core.Meta_map
module Level = Trace_core.Level

Tracing

val enabled : unit -> bool

Is there a collector?

This is fast, so that the traced program can check it before creating any span or message.

val get_default_level : unit -> Level.t

Current default level for spans.

  • since 0.7
val set_default_level : Level.t -> unit

Set level used for spans that do not specify it. The default default value is Level.Trace.

  • since 0.7
val ctx_of_span : explicit_span -> explicit_span_ctx

Turn a span into a span context.

  • since 0.10
val with_span : ?level:Level.t -> ?__FUNCTION__:string -> __FILE__:string -> @@ -23,7 +23,7 @@ __LINE__:int -> ?data:(unit -> (string * user_data) list) -> string -> - explicit_span

Like with_span but the caller is responsible for obtaining the parent span from their own caller, and carry the resulting explicit_span to the matching exit_manual_span.

NOTE this replaces enter_manual_sub_span and enter_manual_toplevel_span by just making parent an explicit option. It is breaking anyway because we now pass an explicit_span_ctx instead of a full explicit_span (the reason being that we might receive this explicit_span_ctx from another process or machine).

  • parameter flavor

    a description of the span that can be used by the Collector.S to decide how to represent the span. Typically, `Sync spans start and stop on one thread, and are nested purely by their timestamp; and `Async spans can overlap, migrate between threads, etc. (as happens in Lwt, Eio, Async, etc.) which impacts how the collector might represent them.

  • parameter level

    optional level for this span. since 0.7. Default is set via set_default_level.

  • since NEXT_RELEASE
val enter_manual_sub_span : + explicit_span

Like with_span but the caller is responsible for obtaining the parent span from their own caller, and carry the resulting explicit_span to the matching exit_manual_span.

NOTE this replaces enter_manual_sub_span and enter_manual_toplevel_span by just making parent an explicit option. It is breaking anyway because we now pass an explicit_span_ctx instead of a full explicit_span (the reason being that we might receive this explicit_span_ctx from another process or machine).

  • parameter flavor

    a description of the span that can be used by the Collector.S to decide how to represent the span. Typically, `Sync spans start and stop on one thread, and are nested purely by their timestamp; and `Async spans can overlap, migrate between threads, etc. (as happens in Lwt, Eio, Async, etc.) which impacts how the collector might represent them.

  • parameter level

    optional level for this span. since 0.7. Default is set via set_default_level.

  • since 0.10
val enter_manual_sub_span : parent:explicit_span -> ?flavor:[ `Sync | `Async ] -> ?level:Level.t -> @@ -32,7 +32,7 @@ __LINE__:int -> ?data:(unit -> (string * user_data) list) -> string -> - explicit_span
val enter_manual_toplevel_span : + explicit_span
val enter_manual_toplevel_span : ?flavor:[ `Sync | `Async ] -> ?level:Level.t -> ?__FUNCTION__:string -> @@ -40,7 +40,7 @@ __LINE__:int -> ?data:(unit -> (string * user_data) list) -> string -> - explicit_span
val exit_manual_span : explicit_span -> unit

Exit an explicit span. This can be on another thread, in a fiber or lightweight thread, etc. and will be supported by backends nonetheless. The span can be obtained via enter_manual_sub_span or enter_manual_toplevel_span.

  • since 0.3
val add_data_to_manual_span : + explicit_span
val exit_manual_span : explicit_span -> unit

Exit an explicit span. This can be on another thread, in a fiber or lightweight thread, etc. and will be supported by backends nonetheless. The span can be obtained via enter_manual_sub_span or enter_manual_toplevel_span.

  • since 0.3
val add_data_to_manual_span : explicit_span -> (string * user_data) list -> unit

add_data_explicit esp data adds data to the span esp. The behavior is not specified is the span has been exited already.

  • since 0.4
val message : diff --git a/trace/Trace_core/Collector/module-type-S/index.html b/trace/Trace_core/Collector/module-type-S/index.html index d5b3641..544cfdc 100644 --- a/trace/Trace_core/Collector/module-type-S/index.html +++ b/trace/Trace_core/Collector/module-type-S/index.html @@ -41,7 +41,7 @@ | `None ]) list -> string -> - Trace_core__.Types.explicit_span

Enter an explicit span. Surrounding scope, if any, is provided by parent, and this function can store as much metadata as it wants in the hmap in the explicit_span's meta field.

NOTE the parent argument is now an explicit_span_ctx and not an explicit_span since NEXT_RELEASE.

This means that the collector doesn't need to implement contextual storage mapping span to scopes, metadata, etc. on its side; everything can be transmitted in the explicit_span.

  • since 0.3
val exit_manual_span : Trace_core__.Types.explicit_span -> unit

Exit an explicit span.

  • since 0.3
val add_data_to_span : + Trace_core__.Types.explicit_span

Enter an explicit span. Surrounding scope, if any, is provided by parent, and this function can store as much metadata as it wants in the hmap in the explicit_span's meta field.

NOTE the parent argument is now an explicit_span_ctx and not an explicit_span since 0.10.

This means that the collector doesn't need to implement contextual storage mapping span to scopes, metadata, etc. on its side; everything can be transmitted in the explicit_span.

  • since 0.3
val exit_manual_span : Trace_core__.Types.explicit_span -> unit

Exit an explicit span.

  • since 0.3
val add_data_to_span : int64 -> (string * [ `Int of int diff --git a/trace/Trace_core/index.html b/trace/Trace_core/index.html index ceeeab7..5d12fb2 100644 --- a/trace/Trace_core/index.html +++ b/trace/Trace_core/index.html @@ -1,5 +1,5 @@ -Trace_core (trace.Trace_core)

Module Trace_core

Trace.

type span = int64

A span identifier.

The meaning of the identifier depends on the collector.

type trace_id = string

A bytestring representing a (possibly distributed) trace made of async spans. With opentelemetry this is 16 bytes.

  • since NEXT_RELEASE
type user_data = [
  1. | `Int of int
  2. | `String of string
  3. | `Bool of bool
  4. | `Float of float
  5. | `None
]

User defined data, generally passed as key/value pairs to whatever collector is installed (if any).

type explicit_span_ctx = {
  1. span : span;
    (*

    The current span

    *)
  2. trace_id : trace_id;
    (*

    The trace this belongs to

    *)
}

A context, passed around for async traces.

  • since NEXT_RELEASE
type explicit_span = {
  1. span : span;
    (*

    Identifier for this span. Several explicit spans might share the same identifier since we can differentiate between them via meta.

    *)
  2. trace_id : trace_id;
    (*

    The trace this belongs to

    *)
  3. mutable meta : Meta_map.t;
    (*

    Metadata for this span (and its context). This can be used by collectors to carry collector-specific information from the beginning of the span, to the end of the span.

    *)
}

Explicit span, with collector-specific metadata. This is richer than explicit_span_ctx but not intended to be passed around (or sent across the wire), unlike explicit_span_ctx.

module Collector : sig ... end

A global collector.

module Meta_map : sig ... end
module Level : sig ... end

Tracing levels.

Tracing

val enabled : unit -> bool

Is there a collector?

This is fast, so that the traced program can check it before creating any span or message.

val get_default_level : unit -> Level.t

Current default level for spans.

  • since 0.7
val set_default_level : Level.t -> unit

Set level used for spans that do not specify it. The default default value is Level.Trace.

  • since 0.7
val ctx_of_span : explicit_span -> explicit_span_ctx

Turn a span into a span context.

  • since NEXT_RELEASE
val with_span : +Trace_core (trace.Trace_core)

Module Trace_core

Trace.

type span = int64

A span identifier.

The meaning of the identifier depends on the collector.

type trace_id = string

A bytestring representing a (possibly distributed) trace made of async spans. With opentelemetry this is 16 bytes.

  • since 0.10
type user_data = [
  1. | `Int of int
  2. | `String of string
  3. | `Bool of bool
  4. | `Float of float
  5. | `None
]

User defined data, generally passed as key/value pairs to whatever collector is installed (if any).

type explicit_span_ctx = {
  1. span : span;
    (*

    The current span

    *)
  2. trace_id : trace_id;
    (*

    The trace this belongs to

    *)
}

A context, passed around for async traces.

  • since 0.10
type explicit_span = {
  1. span : span;
    (*

    Identifier for this span. Several explicit spans might share the same identifier since we can differentiate between them via meta.

    *)
  2. trace_id : trace_id;
    (*

    The trace this belongs to

    *)
  3. mutable meta : Meta_map.t;
    (*

    Metadata for this span (and its context). This can be used by collectors to carry collector-specific information from the beginning of the span, to the end of the span.

    *)
}

Explicit span, with collector-specific metadata. This is richer than explicit_span_ctx but not intended to be passed around (or sent across the wire), unlike explicit_span_ctx.

module Collector : sig ... end

A global collector.

module Meta_map : sig ... end
module Level : sig ... end

Tracing levels.

Tracing

val enabled : unit -> bool

Is there a collector?

This is fast, so that the traced program can check it before creating any span or message.

val get_default_level : unit -> Level.t

Current default level for spans.

  • since 0.7
val set_default_level : Level.t -> unit

Set level used for spans that do not specify it. The default default value is Level.Trace.

  • since 0.7
val ctx_of_span : explicit_span -> explicit_span_ctx

Turn a span into a span context.

  • since 0.10
val with_span : ?level:Level.t -> ?__FUNCTION__:string -> __FILE__:string -> @@ -23,7 +23,7 @@ __LINE__:int -> ?data:(unit -> (string * user_data) list) -> string -> - explicit_span

Like with_span but the caller is responsible for obtaining the parent span from their own caller, and carry the resulting explicit_span to the matching exit_manual_span.

NOTE this replaces enter_manual_sub_span and enter_manual_toplevel_span by just making parent an explicit option. It is breaking anyway because we now pass an explicit_span_ctx instead of a full explicit_span (the reason being that we might receive this explicit_span_ctx from another process or machine).

  • parameter flavor

    a description of the span that can be used by the Collector.S to decide how to represent the span. Typically, `Sync spans start and stop on one thread, and are nested purely by their timestamp; and `Async spans can overlap, migrate between threads, etc. (as happens in Lwt, Eio, Async, etc.) which impacts how the collector might represent them.

  • parameter level

    optional level for this span. since 0.7. Default is set via set_default_level.

  • since NEXT_RELEASE
val enter_manual_sub_span : + explicit_span

Like with_span but the caller is responsible for obtaining the parent span from their own caller, and carry the resulting explicit_span to the matching exit_manual_span.

NOTE this replaces enter_manual_sub_span and enter_manual_toplevel_span by just making parent an explicit option. It is breaking anyway because we now pass an explicit_span_ctx instead of a full explicit_span (the reason being that we might receive this explicit_span_ctx from another process or machine).

  • parameter flavor

    a description of the span that can be used by the Collector.S to decide how to represent the span. Typically, `Sync spans start and stop on one thread, and are nested purely by their timestamp; and `Async spans can overlap, migrate between threads, etc. (as happens in Lwt, Eio, Async, etc.) which impacts how the collector might represent them.

  • parameter level

    optional level for this span. since 0.7. Default is set via set_default_level.

  • since 0.10
val enter_manual_sub_span : parent:explicit_span -> ?flavor:[ `Sync | `Async ] -> ?level:Level.t -> @@ -32,7 +32,7 @@ __LINE__:int -> ?data:(unit -> (string * user_data) list) -> string -> - explicit_span
val enter_manual_toplevel_span : + explicit_span
val enter_manual_toplevel_span : ?flavor:[ `Sync | `Async ] -> ?level:Level.t -> ?__FUNCTION__:string -> @@ -40,7 +40,7 @@ __LINE__:int -> ?data:(unit -> (string * user_data) list) -> string -> - explicit_span
val exit_manual_span : explicit_span -> unit

Exit an explicit span. This can be on another thread, in a fiber or lightweight thread, etc. and will be supported by backends nonetheless. The span can be obtained via enter_manual_sub_span or enter_manual_toplevel_span.

  • since 0.3
val add_data_to_manual_span : + explicit_span
val exit_manual_span : explicit_span -> unit

Exit an explicit span. This can be on another thread, in a fiber or lightweight thread, etc. and will be supported by backends nonetheless. The span can be obtained via enter_manual_sub_span or enter_manual_toplevel_span.

  • since 0.3
val add_data_to_manual_span : explicit_span -> (string * user_data) list -> unit

add_data_explicit esp data adds data to the span esp. The behavior is not specified is the span has been exited already.

  • since 0.4
val message : diff --git a/trace/Trace_event/Event/index.html b/trace/Trace_event/Event/index.html index 49d41da..8092489 100644 --- a/trace/Trace_event/Event/index.html +++ b/trace/Trace_event/Event/index.html @@ -1,2 +1,2 @@ -Event (trace.Trace_event.Event)

Module Trace_event.Event

module Sub = Trace_subscriber
type t =
  1. | E_tick
  2. | E_init of {
    1. time_ns : int64;
    }
  3. | E_shutdown of {
    1. time_ns : int64;
    }
  4. | E_message of {
    1. tid : int;
    2. msg : string;
    3. time_ns : int64;
    4. data : (string * Sub.user_data) list;
    }
  5. | E_define_span of {
    1. tid : int;
    2. name : string;
    3. time_ns : int64;
    4. id : Trace_core.span;
    5. fun_name : string option;
    6. data : (string * Sub.user_data) list;
    }
  6. | E_exit_span of {
    1. id : Trace_core.span;
    2. time_ns : int64;
    }
  7. | E_add_data of {
    1. id : Trace_core.span;
    2. data : (string * Sub.user_data) list;
    }
  8. | E_enter_manual_span of {
    1. tid : int;
    2. name : string;
    3. time_ns : int64;
    4. id : Trace_core.trace_id;
    5. flavor : Sub.flavor option;
    6. fun_name : string option;
    7. data : (string * Sub.user_data) list;
    }
  9. | E_exit_manual_span of {
    1. tid : int;
    2. name : string;
    3. time_ns : int64;
    4. flavor : Sub.flavor option;
    5. data : (string * Sub.user_data) list;
    6. id : Trace_core.trace_id;
    }
  10. | E_counter of {
    1. name : string;
    2. tid : int;
    3. time_ns : int64;
    4. n : float;
    }
  11. | E_name_process of {
    1. name : string;
    }
  12. | E_name_thread of {
    1. tid : int;
    2. name : string;
    }
  13. | E_extension_event of {
    1. tid : int;
    2. time_ns : int64;
    3. ext : Trace_core.extension_event;
    }

An event with TEF/fuchsia semantics

\ No newline at end of file +Event (trace.Trace_event.Event)

Module Trace_event.Event

Events.

Each callback in a subscriber corresponds to an event, which can be for example queued somewhere or batched for further processing.

module Sub = Trace_subscriber
type t =
  1. | E_tick
  2. | E_init of {
    1. time_ns : int64;
    }
  3. | E_shutdown of {
    1. time_ns : int64;
    }
  4. | E_message of {
    1. tid : int;
    2. msg : string;
    3. time_ns : int64;
    4. data : (string * Sub.user_data) list;
    }
  5. | E_define_span of {
    1. tid : int;
    2. name : string;
    3. time_ns : int64;
    4. id : Trace_core.span;
    5. fun_name : string option;
    6. data : (string * Sub.user_data) list;
    }
  6. | E_exit_span of {
    1. id : Trace_core.span;
    2. time_ns : int64;
    }
  7. | E_add_data of {
    1. id : Trace_core.span;
    2. data : (string * Sub.user_data) list;
    }
  8. | E_enter_manual_span of {
    1. tid : int;
    2. name : string;
    3. time_ns : int64;
    4. id : Trace_core.trace_id;
    5. flavor : Sub.flavor option;
    6. fun_name : string option;
    7. data : (string * Sub.user_data) list;
    }
  9. | E_exit_manual_span of {
    1. tid : int;
    2. name : string;
    3. time_ns : int64;
    4. flavor : Sub.flavor option;
    5. data : (string * Sub.user_data) list;
    6. id : Trace_core.trace_id;
    }
  10. | E_counter of {
    1. name : string;
    2. tid : int;
    3. time_ns : int64;
    4. n : float;
    }
  11. | E_name_process of {
    1. name : string;
    }
  12. | E_name_thread of {
    1. tid : int;
    2. name : string;
    }
  13. | E_extension_event of {
    1. tid : int;
    2. time_ns : int64;
    3. ext : Trace_core.extension_event;
    }

An event with TEF/fuchsia semantics

\ No newline at end of file diff --git a/trace/Trace_event/Subscriber/index.html b/trace/Trace_event/Subscriber/index.html index bb74ac3..ef568d1 100644 --- a/trace/Trace_event/Subscriber/index.html +++ b/trace/Trace_event/Subscriber/index.html @@ -1,3 +1,3 @@ -Subscriber (trace.Trace_event.Subscriber)

Module Trace_event.Subscriber

type event_consumer = {
  1. on_event : Event.t -> unit;
}

Callback for events

\ No newline at end of file +Subscriber (trace.Trace_event.Subscriber)

Module Trace_event.Subscriber

Subscriber that emits events

type event_consumer = {
  1. on_event : Event.t -> unit;
}

Callback for events.

A subscriber that turns calls into events that are passed to the event_consumer

\ No newline at end of file diff --git a/trace/Trace_event/index.html b/trace/Trace_event/index.html index 3f42532..ef6072a 100644 --- a/trace/Trace_event/index.html +++ b/trace/Trace_event/index.html @@ -1,2 +1,2 @@ -Trace_event (trace.Trace_event)

Module Trace_event

module Event : sig ... end
module Subscriber : sig ... end
\ No newline at end of file +Trace_event (trace.Trace_event)

Module Trace_event

module Event : sig ... end

Events.

module Subscriber : sig ... end

Subscriber that emits events

\ No newline at end of file diff --git a/trace/_doc-dir/CHANGES.md b/trace/_doc-dir/CHANGES.md index 0d68d50..55db48f 100644 --- a/trace/_doc-dir/CHANGES.md +++ b/trace/_doc-dir/CHANGES.md @@ -1,9 +1,21 @@ -# 0.10 (wip) +# 0.10 - breaking: manual spans now take a `explicit_span_ctx` as parent, that can potentially be transmitted across processes/machines. It also is intended to be more compatible with OTEL. -- depopt on unix for TEF timestamps +- breaking `trace.subscriber`: timestamps are `int64`ns now, not floats +- breaking `trace`: pass a `string` trace_id in manual spans, which helps + for backends such as opentelemetry. It's also useful for extensions. + +- refactor `trace-fuchsia`: full revamp of the library, modularized, using subscriber API +- refactor `trace-tef`: split into exporter,writer,subscriber, using subscriber API +- feat: add `trace.event`, useful for background threads +- feat `trace.subscriber`: add `Span_tbl`, and a depopt on picos_aux +- feat `trace.subscriber`: tee a whole array at once +- feat tef-tldrs: use EMIT_TEF_AT_EXIT +- feat `trace.subscriber`: depopt on unix for timestamps +- refactor `trace-tef`: depopt on unix for TEF timestamps + # 0.9.1