sig
  type compiler_msg =
      [ `Msg of string | `Msg_loc of string * Prog.loc * string ]
  val pp_compiler_msg : Format.formatter -> compiler_msg -> unit
  type compiler_msg_parser =
      string -> [ `Loc of string * int * int * string | `Unparsed of string ]
  val compiler_msg_parser_default : compiler_msg_parser
  val compiler_msg_parser_raw : compiler_msg_parser
  type msg =
      [ `Compiler of compiler_msg list
      | `Linker of string list
      | `Missing_attr of prim * string
      | `Msg of string
      | `Unsupported_shaders of prog * Prog.shader list ]
  val pp_msg : Format.formatter -> msg -> unit
  type level = [ `Debug | `Error ]
  type t = level -> msg -> unit
  val of_formatter : Format.formatter -> t
  val split_string : char -> string -> string list
  val lines : string -> string list
  val compiler_msg :
    string ->
    compiler_msg_parser ->
    (int * string) list -> [> `Compiler of compiler_msg list ]
end