unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* why asyncs were created
@ 2002-09-02 22:55 Tom Lord
  2002-09-02 23:42 ` Marius Vollmer
  0 siblings, 1 reply; 4+ messages in thread
From: Tom Lord @ 2002-09-02 22:55 UTC (permalink / raw)
  Cc: lord



Since there is talk of removing the async abstraction, I thought I
would mention, just to provide information, why it was added in the
first place.

The kernel has a built-in facility for interrupting a process, pushing
a new call frame onto a stack, and invoking some function -- handling
a return or longjmp from that function specially -- and treating
interrupts specially while that function runs.

That's a useful facility, but not one that has a unique natural
mapping into RnRS scheme.   

Asyncs were designed to model that facility while reconciling it with
the restrictions against executing arbitrary Scheme code at arbitrary
times.

The farther Scheme signal handling is removed from some abstraction
like asyncs, the less well the corresponding kernel facility is
reflected in the language.

Having designed system asyncs, user-defined asyncs were, I felt, a
natural and easy generalization.

-t



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


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

* Re: why asyncs were created
  2002-09-02 22:55 why asyncs were created Tom Lord
@ 2002-09-02 23:42 ` Marius Vollmer
  2002-09-03  0:05   ` Tom Lord
  0 siblings, 1 reply; 4+ messages in thread
From: Marius Vollmer @ 2002-09-02 23:42 UTC (permalink / raw)
  Cc: guile-devel, guile-user, lord

Tom Lord <lord@regexps.com> writes:

> Since there is talk of removing the async abstraction, [...]

As a clarification, I have in mind to keep the "async" name and the
"async" behavior, but an async does not need to continue to be an
opaque object; it could just be a normal procedure that is used in a
special way.

Instead of

  (let ((a (make-async PROC)))
    (mark-async a))

one could just do

  (mark-async PROC)

with the same meaning.

(make-async would continue to be provided.)

-- 
GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3  331E FAF8 226A D5D4 E405


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


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

* Re: why asyncs were created
  2002-09-03  0:05   ` Tom Lord
@ 2002-09-02 23:57     ` Marius Vollmer
  0 siblings, 0 replies; 4+ messages in thread
From: Marius Vollmer @ 2002-09-02 23:57 UTC (permalink / raw)
  Cc: guile-devel, guile-user

Tom Lord <lord@regexps.com> writes:

> 	> As a clarification, I have in mind to keep the "async" name and the
> 	> "async" behavior, but an async does not need to continue to be an
> 	> opaque object; it could just be a normal procedure that is used in a
> 	> special way.
> 
> 
> Ah -- a representation issue, not a semantic issue?

Yep.

> What replaces the `got_it' flag in an async object?

Instead of setting a flag, you would cons the object onto a list of
objects that are considered marked.  At appropriate times, the list
would be checked to see whether it is non-empty.

Each thread would have such a list.

-- 
GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3  331E FAF8 226A D5D4 E405


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


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

* Re: why asyncs were created
  2002-09-02 23:42 ` Marius Vollmer
@ 2002-09-03  0:05   ` Tom Lord
  2002-09-02 23:57     ` Marius Vollmer
  0 siblings, 1 reply; 4+ messages in thread
From: Tom Lord @ 2002-09-03  0:05 UTC (permalink / raw)
  Cc: guile-devel, guile-user



	> As a clarification, I have in mind to keep the "async" name and the
	> "async" behavior, but an async does not need to continue to be an
	> opaque object; it could just be a normal procedure that is used in a
	> special way.


Ah -- a representation issue, not a semantic issue?

What replaces the `got_it' flag in an async object?  I.e., the bit 
that says an async needs to be run, but could not be run when the
low-level or user-supplied signal was delivered?

-t




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


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

end of thread, other threads:[~2002-09-03  0:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-09-02 22:55 why asyncs were created Tom Lord
2002-09-02 23:42 ` Marius Vollmer
2002-09-03  0:05   ` Tom Lord
2002-09-02 23:57     ` Marius Vollmer

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).