val v : ?patch:int -> ?prerelease:string -> ?extra:string -> int -> int -> t
val to_string : ?prerelease_sep:char -> ?sep:char -> t -> string
val of_string : string -> (t, [> `Msg of string ]) result
val of_string_exn : string -> t
val equal : t -> t -> bool
val compare : t -> t -> int
type arch = [
| `Aarch32
| `Aarch64
| `I386
| `Ppc64le
| `Riscv64
| `S390x
| `X86_64
]
val string_of_arch : arch -> string
val arch_of_string : string -> (arch, [> `Msg of string ]) result
val arch_of_string_exn : string -> arch
val arch_is_32bit : arch -> bool
val to_opam_arch : arch -> string
val of_opam_arch : string -> arch option
val to_docker_arch : arch -> string
val of_docker_arch : string -> arch option
val patch : t -> int option
val prerelease : t -> string option
val with_variant : t -> string option -> t
val without_variant : t -> t
val with_patch : t -> int option -> t
val without_patch : t -> t
val with_just_major_and_minor : t -> t
module Since : sig ... end
val compiler_variants : arch -> t -> t list
val trunk_variants : arch -> t list
module Opam : sig ... end