[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[shepherd] 12/15: Incorporate more feedback into design doc
From: |
Juliana Sims |
Subject: |
[shepherd] 12/15: Incorporate more feedback into design doc |
Date: |
Tue, 26 Nov 2024 16:46:17 -0500 (EST) |
juli pushed a commit to branch wip-goblinsify
in repository shepherd.
commit 92376dcdd5942d8a3887f7b0d5159496f01eb977
Author: Juliana Sims <juli@incana.org>
AuthorDate: Thu Oct 24 10:57:52 2024 -0400
Incorporate more feedback into design doc
---
goblins-port-design-doc.org | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/goblins-port-design-doc.org b/goblins-port-design-doc.org
index 5c7327b..98cfed7 100644
--- a/goblins-port-design-doc.org
+++ b/goblins-port-design-doc.org
@@ -70,7 +70,8 @@ back and forth, sometimes in messages sent over channels.
Importantly, the Shepherd does not enable parallelism in its core fiber.
Fibers builds parallelism on top of POSIX threads, which are incompatible with
the ~fork~ syscall. Because the Shepherd is charged with spawning and
-monitoring processes, it needs to be able to safely call ~fork~.
+monitoring processes, it needs to be able to safely call ~fork~, and thus it
+uses Fibers in single-threaded mode.
*** Rewrite Goals
@@ -78,7 +79,7 @@ Goblins manages most concurrency complexity for library
users. The primary
abstraction exposed to users is the vat. The Goblins Shepherd will use a
relatively small number of vats and spawn specific actors in different vats to
avoid deadlocks. In particular, the vats we foresee needing are for the main
-Shepherd dæmon REPL, for the service registry, for the process monitor, and
+Shepherd actor, for the service registry, for the process monitor, and
possibly for ~herd~ instances.
It's worth noting that Guile Goblins does not currently support automatically
@@ -87,8 +88,9 @@ reclaim the resources used by a vat, we need to stop it
ourselves. However,
with the exception of the possible ~herd~ vats, vats will likely run for the
lifetime of the dæmon itself and so not need to be stopped and collected in
program code. In the case of ~herd~ vats, execution of a given command will
-be synchronous which should allow traditional ~dynamic-wind~ to handle
-cleanup.
+be synchronous which should allow traditional ~dynamic-wind~ to handle cleanup
+if necessary, and otherwise the kernel will collect the process's resources
+after execution.
Goblins does not disable parallelism in its default scheduler so it may be
necessary to write a custom scheduler for the Shepherd's main process.
- [shepherd] 09/15: scratch: Return demo to working state., (continued)
- [shepherd] 09/15: scratch: Return demo to working state., Juliana Sims, 2024/11/26
- [shepherd] 11/15: Update design doc., Juliana Sims, 2024/11/26
- [shepherd] 15/15: WIP: shepherd: Port core service actor., Juliana Sims, 2024/11/26
- [shepherd] 03/15: Implement service-registry demo., Juliana Sims, 2024/11/26
- [shepherd] 13/15: Incorporate Spritely feedback into design doc, Juliana Sims, 2024/11/26
- [shepherd] 04/15: scratch: Begin prototyping process monitoring., Juliana Sims, 2024/11/26
- [shepherd] 07/15: scratch: First pass at service startup code., Juliana Sims, 2024/11/26
- [shepherd] 05/15: scratch: Stub out timeout support., Juliana Sims, 2024/11/26
- [shepherd] 08/15: goblins port manifest: Update dependency commits, fix inputs., Juliana Sims, 2024/11/26
- [shepherd] 06/15: scratch: Cleanup comments somewhat., Juliana Sims, 2024/11/26
- [shepherd] 12/15: Incorporate more feedback into design doc,
Juliana Sims <=