# Module Runtime_events.User

    module User: sig .. end

User events is a way for libraries to provide runtime events that can be consumed by other tools. These events can carry known data types or custom values. The current maximum number of user events is 8192.

    type tag = ..

The type for a user event tag. Tags are used to discriminate between user events of the same type

    type 'value t

The type for a user event. User events describe their tag, carried data type and an unique string-based name

    val register : string ->
           tag ->
           'value Runtime_events.Type.t -> 'value t

`register name tag ty` registers a new event with an unique `name`, carrying a `tag` and values of type `ty`

    val write : 'value t -> 'value -> unit

`write t v` records a new event `t` with value `v`

    val name : 'a t -> string

`name t` is the uniquely identifying name of event `t`

    val tag : 'a t -> tag

`tag t` is the associated tag of event `t`, when it is known. An event can be unknown if it was not registered in the consumer program.