Re: Coroutines, goroutines

Jan Moringen <[email protected]> Thu, 26 Feb 2026 12:12:18 +0000
Newsgroups gmane.lisp.steel-bank.devel
Message-ID <[email protected]>
I don't think it is my place anymore to comment on whether or with
which tools such a feature should be implemented in SBCL but I would
like to add one consideration regarding the process: Except for the
first message, the discussion has focused on tools used for the
implementation and details like stack size or abstraction for machine
code generation.

The original message (and the quoted message) was about requirements of
potential users. Those requirements mentioned a programming model for
asynchronous I/O without "coloring" functions and also delimited
continuations with backtracking in solvers as a possible application.

I feel the discussion should start with the envisioned programming
model, (concurrent) evaluation semantics and user interface of the
continuation/fiber/coroutine feature rather than the details of one
particular implementation that happens to be available and close to
finished. In particular as the original messages were talking about CL
in general not SBCL. I have the impression that a lot of decisions have
to be made (implicitly or, better, explicitly): 
 * coroutines vs. continuations
 * Closing over lexical variables (only applies to the continuation
   model, i guess)
 * Interaction with dynamic variables (are dynamic binding stacks
   concatenated when invoking a continuation in a context that has its
   own bindings?)
 * Interaction with UNWIND-PROTECT when coroutines/continuations are
   suspended
 * DYNAMIC-WIND whether pinning
 * Interaction with blocking I/O, locks, waiting for processes and
   threads, SLEEP, etc.

If this discussion has already happened in a space I'm not aware of, I
apologize for the noise.

Kind regards,
Jan


_______________________________________________
Sbcl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sbcl-devel