Hello,
I am trying to port an experimental language runtime to Solo5. The
runtime features a concurrent and parallel mark and sweep gc for the
major heap, which can also be operated in single-threaded incremental
mode. This way it can be used with Solo5. However I wonder if this would
be a valid use case for adding SMP to the Solo5 runtime? Was something
like this considered (also in the light of multicore Ocaml)? But I am
not sure if there is a possibility to support additional worker jobs
without adding all the threading primitives, which seems undesired.
If my gc is operated in incremental mode, to limit latency, I am using
timeouts via a volatile boolean variable, which is triggered by a timer
interrupt if the runtime is compiled for conventional Unix or Windows
targets. For Solo5 I experimented with a timeout based on counters,
estimating the number of iterations and polling the Solo5 monotonic
clock. I am not sure how the Ocaml runtime handles that, but it seems to
somehow compute the necessary slices based on the allocation rate
instead of relying on some timeout?
Would it make sense to add a primitive to the Solo5 API, which allows to
interrupt incremental work, for example by using signal handler? Or is
the recommended way of doing things to just poll the monotonic clock?
Daniel
- [solo5] Porting a runtime to Solo5 mail
-