From beb1060ca08d24152a52b0634e75856fc599243d Mon Sep 17 00:00:00 2001 From: Yasunari Watanabe Date: Tue, 11 Nov 2025 09:39:32 +0000 Subject: [PATCH 1/2] prelude: don't set Lwt_engine at top level --- prelude.ml | 3 --- 1 file changed, 3 deletions(-) diff --git a/prelude.ml b/prelude.ml index fe60ade..101bcf9 100644 --- a/prelude.ml +++ b/prelude.ml @@ -54,6 +54,3 @@ let call_me_maybe f x = match f with | None -> () | Some f -> f x - -let () = - Lwt_engine.set @@ new Lwt_engines.poll From d15cb7a3e8b46be4bbaf04651b3a01f37e34efb9 Mon Sep 17 00:00:00 2001 From: Yasunari Watanabe Date: Fri, 14 Nov 2025 01:16:17 +0000 Subject: [PATCH 2/2] prelude: prefer poll over select, except if libev --- prelude.ml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/prelude.ml b/prelude.ml index 101bcf9..ec457e2 100644 --- a/prelude.ml +++ b/prelude.ml @@ -54,3 +54,13 @@ let call_me_maybe f x = match f with | None -> () | Some f -> f x + +(* + If libev backend is available, do nothing (lwt uses it as default). + Otherwise, prefer poll over select, because select can only monitor fds up to 1024, + and poll is guaranteed to be available without the fd limitation. +*) +let () = + if not (Lwt_config._HAVE_LIBEV && Lwt_config.libev_default) then begin + Lwt_engine.set @@ new Lwt_engines.poll + end