For what it’s worth, I ported (in a hacky way) eio.core to picos a week or two ago, as proof of concept.
open Eio__core
let () =
Picos_mux_random.run @@ fun () ->
let p, r = Promise.create () in
Fiber.both
(fun () ->
Printf.printf "Hello Fiber 1\n%!"
Promise.await p;
Printf.printf "Bye Fiber 1\n%!")
(fun () ->
Printf.printf "Hello Fiber 2\n%!";
Promise.resolve r ();
Printf.printf "Bye Fiber 2\n%!");
(* Hello Fiber 1
Hello Fiber 2
Bye Fiber 2
Bye Fiber 1 *)
Porting the schedulers to Picos would take a good bit more effort, but it is very doable from the experimenting I’ve done.