+
+\f
+
+(define* (spawn-repl #:key (path "/tmp/8sync-socket")
+ (socket (make-unix-domain-server-socket #:path path))
+ (poll-every 1/30)
+ (stop? (make-atomic-box #f))
+ (on-update #f))
+ "Spawn a cooperative REPL in a new fiber."
+ (define server
+ (spawn-coop-repl-server socket))
+ (spawn-fiber
+ (lambda ()
+ (while (not (atomic-box-ref stop?))
+ ;; Poll the server
+ (poll-coop-repl-server server)
+ ;; Call update hook, if any
+ (and on-update (on-update))
+ ;; Take a break!
+ (sleep poll-every))
+ (close socket))))