diff --git a/benchs/dune b/benchs/dune index ff0f878b..21b29965 100644 --- a/benchs/dune +++ b/benchs/dune @@ -1,6 +1,6 @@ - (executables (names fib_rec pi) - (preprocess (action + (preprocess + (action (run %{project_root}/src/cpp/cpp.exe %{input-file}))) (libraries moonpool unix trace trace-tef domainslib)) diff --git a/dune b/dune index 00264a6c..9d11cc85 100644 --- a/dune +++ b/dune @@ -1,6 +1,8 @@ - (env - (_ (flags :standard -strict-sequence -warn-error -a+8 -w +a-4-40-42-70))) + (_ + (flags :standard -strict-sequence -warn-error -a+8 -w +a-4-40-42-70))) -(mdx (libraries moonpool threads) - (enabled_if (>= %{ocaml_version} 5.0))) +(mdx + (libraries moonpool threads) + (enabled_if + (>= %{ocaml_version} 5.0))) diff --git a/dune-project b/dune-project index b4e69e84..55cb93f1 100644 --- a/dune-project +++ b/dune-project @@ -29,8 +29,7 @@ :with-test))) (depopts (trace (>= 0.6)) - thread-local-storage - (domain-local-await (>= 0.2))) + thread-local-storage) (tags (thread pool domain futures fork-join))) diff --git a/moonpool.opam b/moonpool.opam index 6ff7c8b0..c8afba80 100644 --- a/moonpool.opam +++ b/moonpool.opam @@ -21,7 +21,6 @@ depends: [ depopts: [ "trace" {>= "0.6"} "thread-local-storage" - "domain-local-await" {>= "0.2"} ] build: [ ["dune" "subst"] {dev} diff --git a/src/bb_queue.ml b/src/core/bb_queue.ml similarity index 100% rename from src/bb_queue.ml rename to src/core/bb_queue.ml diff --git a/src/bb_queue.mli b/src/core/bb_queue.mli similarity index 100% rename from src/bb_queue.mli rename to src/core/bb_queue.mli diff --git a/src/bounded_queue.ml b/src/core/bounded_queue.ml similarity index 100% rename from src/bounded_queue.ml rename to src/core/bounded_queue.ml diff --git a/src/bounded_queue.mli b/src/core/bounded_queue.mli similarity index 100% rename from src/bounded_queue.mli rename to src/core/bounded_queue.mli diff --git a/src/chan.ml b/src/core/chan.ml similarity index 100% rename from src/chan.ml rename to src/core/chan.ml diff --git a/src/chan.mli b/src/core/chan.mli similarity index 100% rename from src/chan.mli rename to src/core/chan.mli diff --git a/src/d_pool_.ml b/src/core/d_pool_.ml similarity index 99% rename from src/d_pool_.ml rename to src/core/d_pool_.ml index d12a4f6a..31f11d26 100644 --- a/src/d_pool_.ml +++ b/src/core/d_pool_.ml @@ -33,8 +33,6 @@ let domains_ : (worker_state option * Domain_.t option) Lock.t array = in a tight loop), and if nothing happens it tries to stop to free resources. *) let work_ idx (st : worker_state) : unit = - Dla_.setup_domain (); - let main_loop () = let continue = ref true in while !continue do diff --git a/src/d_pool_.mli b/src/core/d_pool_.mli similarity index 100% rename from src/d_pool_.mli rename to src/core/d_pool_.mli diff --git a/src/domain_.ml b/src/core/domain_.ml similarity index 100% rename from src/domain_.ml rename to src/core/domain_.ml diff --git a/src/core/dune b/src/core/dune new file mode 100644 index 00000000..8888aada --- /dev/null +++ b/src/core/dune @@ -0,0 +1,9 @@ +(library + (public_name moonpool) + (name moonpool) + (libraries moonpool.private) + (flags :standard -open Moonpool_private) + (private_modules d_pool_) + (preprocess + (action + (run %{project_root}/src/cpp/cpp.exe %{input-file})))) diff --git a/src/fifo_pool.ml b/src/core/fifo_pool.ml similarity index 96% rename from src/fifo_pool.ml rename to src/core/fifo_pool.ml index a4f03116..80841183 100644 --- a/src/fifo_pool.ml +++ b/src/core/fifo_pool.ml @@ -60,11 +60,7 @@ let worker_thread_ (self : state) (runner : t) ~on_exn ~around_task : unit = done in - try - (* handle domain-local await *) - Dla_.using ~prepare_for_await:Suspend_.prepare_for_await - ~while_running:main_loop - with Bb_queue.Closed -> () + try main_loop () with Bb_queue.Closed -> () let default_thread_init_exit_ ~dom_id:_ ~t_id:_ () = () diff --git a/src/fifo_pool.mli b/src/core/fifo_pool.mli similarity index 100% rename from src/fifo_pool.mli rename to src/core/fifo_pool.mli diff --git a/src/fork_join.ml b/src/core/fork_join.ml similarity index 100% rename from src/fork_join.ml rename to src/core/fork_join.ml diff --git a/src/fork_join.mli b/src/core/fork_join.mli similarity index 100% rename from src/fork_join.mli rename to src/core/fork_join.mli diff --git a/src/fut.ml b/src/core/fut.ml similarity index 100% rename from src/fut.ml rename to src/core/fut.ml diff --git a/src/fut.mli b/src/core/fut.mli similarity index 100% rename from src/fut.mli rename to src/core/fut.mli diff --git a/src/immediate_runner.ml b/src/core/immediate_runner.ml similarity index 100% rename from src/immediate_runner.ml rename to src/core/immediate_runner.ml diff --git a/src/immediate_runner.mli b/src/core/immediate_runner.mli similarity index 100% rename from src/immediate_runner.mli rename to src/core/immediate_runner.mli diff --git a/src/lock.ml b/src/core/lock.ml similarity index 100% rename from src/lock.ml rename to src/core/lock.ml diff --git a/src/lock.mli b/src/core/lock.mli similarity index 100% rename from src/lock.mli rename to src/core/lock.mli diff --git a/src/moonpool.ml b/src/core/moonpool.ml similarity index 100% rename from src/moonpool.ml rename to src/core/moonpool.ml diff --git a/src/moonpool.mli b/src/core/moonpool.mli similarity index 100% rename from src/moonpool.mli rename to src/core/moonpool.mli diff --git a/src/runner.ml b/src/core/runner.ml similarity index 100% rename from src/runner.ml rename to src/core/runner.ml diff --git a/src/runner.mli b/src/core/runner.mli similarity index 100% rename from src/runner.mli rename to src/core/runner.mli diff --git a/src/suspend_.ml b/src/core/suspend_.ml similarity index 70% rename from src/suspend_.ml rename to src/core/suspend_.ml index 7824d917..629ce2ff 100644 --- a/src/suspend_.ml +++ b/src/core/suspend_.ml @@ -9,8 +9,6 @@ type suspension_handler = { [@@@ifge 5.0] [@@@ocaml.alert "-unstable"] -module A = Atomic_ - type _ Effect.t += Suspend : suspension_handler -> unit Effect.t let[@inline] suspend h = Effect.perform (Suspend h) @@ -35,24 +33,6 @@ let with_suspend ~name ~on_suspend ~(run : name:string -> task -> unit) E.try_with f () { E.effc } -(* DLA interop *) -let prepare_for_await () : Dla_.t = - (* current state *) - let st : (string * (name:string -> task -> unit) * suspension) option A.t = - A.make None - in - - let release () : unit = - match A.exchange st None with - | None -> () - | Some (name, run, k) -> run ~name (fun () -> k (Ok ())) - and await () : unit = - suspend { handle = (fun ~name ~run k -> A.set st (Some (name, run, k))) } - in - - let t = { Dla_.release; await } in - t - [@@@ocaml.alert "+unstable"] [@@@else_] diff --git a/src/suspend_.mli b/src/core/suspend_.mli similarity index 96% rename from src/suspend_.mli rename to src/core/suspend_.mli index 0334225f..a23bf805 100644 --- a/src/suspend_.mli +++ b/src/core/suspend_.mli @@ -51,9 +51,6 @@ val suspend : suspension_handler -> unit [@@@endif] -val prepare_for_await : unit -> Dla_.t -(** Our stub for DLA. Unstable. *) - val with_suspend : name:string -> on_suspend:(unit -> unit) -> diff --git a/src/util_pool_.ml b/src/core/util_pool_.ml similarity index 100% rename from src/util_pool_.ml rename to src/core/util_pool_.ml diff --git a/src/util_pool_.mli b/src/core/util_pool_.mli similarity index 100% rename from src/util_pool_.mli rename to src/core/util_pool_.mli diff --git a/src/ws_pool.ml b/src/core/ws_pool.ml similarity index 99% rename from src/ws_pool.ml rename to src/core/ws_pool.ml index 364aaa81..9dd7196e 100644 --- a/src/ws_pool.ml +++ b/src/core/ws_pool.ml @@ -227,9 +227,7 @@ let worker_thread_ (self : state) ~(runner : t) (w : worker_state) : unit = tasks *) Mutex.unlock self.mutex in - - (* handle domain-local await *) - Dla_.using ~prepare_for_await:Suspend_.prepare_for_await ~while_running:main + main () let default_thread_init_exit_ ~dom_id:_ ~t_id:_ () = () diff --git a/src/ws_pool.mli b/src/core/ws_pool.mli similarity index 100% rename from src/ws_pool.mli rename to src/core/ws_pool.mli diff --git a/src/cpp/dune b/src/cpp/dune index 6ec12a60..c4c75e8b 100644 --- a/src/cpp/dune +++ b/src/cpp/dune @@ -2,4 +2,5 @@ (executable (name cpp) - (modes (best exe))) + (modes + (best exe))) diff --git a/src/dla_.dummy.ml b/src/dla_.dummy.ml deleted file mode 100644 index 3991ff1a..00000000 --- a/src/dla_.dummy.ml +++ /dev/null @@ -1,13 +0,0 @@ -(** Interface to Domain-local-await. - - This is used to handle the presence or absence of DLA. *) - -type t = { - release: unit -> unit; - await: unit -> unit; -} - -let using : prepare_for_await:(unit -> t) -> while_running:(unit -> 'a) -> 'a = - fun ~prepare_for_await:_ ~while_running -> while_running () - -let setup_domain () = () diff --git a/src/dla_.real.ml b/src/dla_.real.ml deleted file mode 100644 index 5f99d714..00000000 --- a/src/dla_.real.ml +++ /dev/null @@ -1,9 +0,0 @@ -type t = Domain_local_await.t = { - release: unit -> unit; - await: unit -> unit; -} - -let using : prepare_for_await:(unit -> t) -> while_running:(unit -> 'a) -> 'a = - Domain_local_await.using - -let setup_domain () = Domain_local_await.per_thread (module Thread) diff --git a/src/dune b/src/dune deleted file mode 100644 index db4763df..00000000 --- a/src/dune +++ /dev/null @@ -1,17 +0,0 @@ -(library - (public_name moonpool) - (name moonpool) - (private_modules d_pool_ dla_ tracing_) - (preprocess - (action - (run %{project_root}/src/cpp/cpp.exe %{input-file}))) - (libraries threads either - (select thread_local_storage_.ml from - (thread-local-storage -> thread_local_storage_.stub.ml) - (-> thread_local_storage_.real.ml)) - (select tracing_.ml from - (trace.core -> tracing_.real.ml) - (-> tracing_.dummy.ml)) - (select dla_.ml from - (domain-local-await -> dla_.real.ml) - ( -> dla_.dummy.ml)))) diff --git a/src/atomic_.ml b/src/private/atomic_.ml similarity index 100% rename from src/atomic_.ml rename to src/private/atomic_.ml diff --git a/src/private/dune b/src/private/dune new file mode 100644 index 00000000..653a129f --- /dev/null +++ b/src/private/dune @@ -0,0 +1,20 @@ +(library + (name moonpool_private) + (public_name moonpool.private) + (synopsis "Private internal utils for Moonpool") + (preprocess + (action + (run %{project_root}/src/cpp/cpp.exe %{input-file}))) + (libraries + threads + either + (select + thread_local_storage_.ml + from + (thread-local-storage -> thread_local_storage_.stub.ml) + (-> thread_local_storage_.real.ml)) + (select + tracing_.ml + from + (trace.core -> tracing_.real.ml) + (-> tracing_.dummy.ml)))) diff --git a/src/thread_local_storage_.mli b/src/private/thread_local_storage_.mli similarity index 100% rename from src/thread_local_storage_.mli rename to src/private/thread_local_storage_.mli diff --git a/src/thread_local_storage_.real.ml b/src/private/thread_local_storage_.real.ml similarity index 100% rename from src/thread_local_storage_.real.ml rename to src/private/thread_local_storage_.real.ml diff --git a/src/thread_local_storage_.stub.ml b/src/private/thread_local_storage_.stub.ml similarity index 98% rename from src/thread_local_storage_.stub.ml rename to src/private/thread_local_storage_.stub.ml index 88712b6d..82d3ff6d 100644 --- a/src/thread_local_storage_.stub.ml +++ b/src/private/thread_local_storage_.stub.ml @@ -1,3 +1,2 @@ - (* just defer to library *) include Thread_local_storage diff --git a/src/tracing_.dummy.ml b/src/private/tracing_.dummy.ml similarity index 100% rename from src/tracing_.dummy.ml rename to src/private/tracing_.dummy.ml diff --git a/src/tracing_.mli b/src/private/tracing_.mli similarity index 100% rename from src/tracing_.mli rename to src/private/tracing_.mli diff --git a/src/tracing_.real.ml b/src/private/tracing_.real.ml similarity index 100% rename from src/tracing_.real.ml rename to src/private/tracing_.real.ml diff --git a/src/ws_deque_.ml b/src/private/ws_deque_.ml similarity index 100% rename from src/ws_deque_.ml rename to src/private/ws_deque_.ml diff --git a/src/ws_deque_.mli b/src/private/ws_deque_.mli similarity index 100% rename from src/ws_deque_.mli rename to src/private/ws_deque_.mli diff --git a/test/effect-based/dune b/test/effect-based/dune index 9989823f..125ed267 100644 --- a/test/effect-based/dune +++ b/test/effect-based/dune @@ -1,11 +1,23 @@ - (tests - (names t_fib1 t_futs1 t_many t_fib_fork_join - t_fib_fork_join_all t_sort t_fork_join t_fork_join_heavy) - (preprocess (action + (names + t_fib1 + t_futs1 + t_many + t_fib_fork_join + t_fib_fork_join_all + t_sort + t_fork_join + t_fork_join_heavy) + (preprocess + (action (run %{project_root}/src/cpp/cpp.exe %{input-file}))) - (enabled_if (>= %{ocaml_version} 5.0)) - (libraries moonpool trace trace-tef - qcheck-core qcheck-core.runner - ;tracy-client.trace - )) + (enabled_if + (>= %{ocaml_version} 5.0)) + (libraries + moonpool + trace + trace-tef + qcheck-core + qcheck-core.runner + ;tracy-client.trace + ))