let of_char_stream cstr =
 let module Buffer = Biocaml_internal_pervasives.Buffer in
 let f _ = match Stream.peek cstr with
  | None -> None
  | Some _ ->
   let ans = Buffer.create 100 in
   let rec loop () =
    try
     let c = Stream.next_exn cstr in
     if c <> '\n' then (Buffer.add_char ans c; loop())
    with Core.Std.Caml.Stream.Failure -> ()
   in
   loop();
   Some (Buffer.contents ans |! Line.of_string_unsafe)
 in
 Stream.from f