let get_ready_exprs (wr: win_ref) (b: b)
  : task list * b =
    assert (win_valid wr b);
    let task e = {
      task_win = wr;
      task_expr = e;
    } in
    let w = win_assoc_valid wr b in
    let p = page_assoc_valid w.win_page b in
    let (pes_ready, pes') = split_queued_exprs p.page_script_queue in
    let p' = {
      p with
      page_script_queue = pes';
    } in
    let b' = page_update w.win_page p' b in
    (List.map task pes_ready, b')