unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* Re: guile/workbook/extension/dynamic-root.text
@ 2002-05-30  7:28 Tom Lord
  2002-05-30 12:28 ` guile/workbook/extension/dynamic-root.text Han-Wen Nienhuys
  2002-06-12 16:35 ` guile/workbook/extension/dynamic-root.text Dirk Herrmann
  0 siblings, 2 replies; 7+ messages in thread
From: Tom Lord @ 2002-05-30  7:28 UTC (permalink / raw)




What do you think of moving to a _stackless_ execution model?  In 
a stackless model, eval would never call itself recursively
and a single scheme computation could be resumed from multiple
C stacks or multiple frames in a given C stack.  In a stackless model,
the conservative part of `gc' could be removed.  In a stackless model,
it would be possible to implement a symbolic debugger with _no_
run-time overhead cost.

In a stackless implementation, call/cc would be very fast.

In a stackless implementation, since you can easily have precise GC,
you can easily have _incremental gc_.

With a stackless implementation, you can easily make the interpreter 
single threaded (simplifying programming) but able to multiplex
several real threads by rapidly context switching at virtual
instruction boundaries.  Since it's stackless, those context switches
can be very cheap.

There is a smooth migration path:  if you start by making `eval' and
`apply' stackless, you can still provide "backwards compatible"
interfaces for built-ins that expect a stack-full, conservative-GC
system.  You can gradually fix such built-ins in the core, and perhaps
eventually deprecate the compatability interface.

The big catch: In a stackless implementation, built-ins would no
longer be allowed to call `eval' or `apply' -- they would instead have
to be split up into multiple C functions.  Believe I know that
sometimes the C friendly calling conventions inherited from SCM are
the big win of Guile -- but personally I'm skeptical: I think a
stackless implementation can also be easy to use and will have much
nicer performance and robustness characteristics.

All of this is roughly my plan for systas, which I still sometimes
think about unforking with guile.  I think that guile hackers might
enjoy exploring the wiki running on systas at:

      http://www.regexps.com/labnotes/devo-meta-x/view-topic/---cgi---/---index---

-t

_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2002-06-12 20:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-05-30  7:28 guile/workbook/extension/dynamic-root.text Tom Lord
2002-05-30 12:28 ` guile/workbook/extension/dynamic-root.text Han-Wen Nienhuys
2002-05-30 15:31   ` guile/workbook/extension/dynamic-root.text Rob Browning
2002-05-30 17:28   ` guile/workbook/extension/dynamic-root.text Tom Lord
2002-05-30 20:31     ` guile/workbook/extension/dynamic-root.text Gary Houston
2002-06-12 16:35 ` guile/workbook/extension/dynamic-root.text Dirk Herrmann
2002-06-12 20:37   ` trump C#, C++, and Java Tom Lord

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).