commit 6b71c3f1536fdba51ff2b26baf919edeee506b52
parent 2cd0d46e3aa92696567eff424933b228220cf40a
Author: Commit-Bot <unknown>
Date:   Mon, 22 Nov 2010 08:59:21 +0000
Automatic commit from picoLisp.tgz, From: Mon, 22 Nov 2010 08:59:21 GMT
Diffstat:
7 files changed, 32 insertions(+), 33 deletions(-)
diff --git a/doc/ref.html b/doc/ref.html
@@ -1121,9 +1121,9 @@ and exit points, and preserve their environment between invocations.
 functions, and (re)invoked as needed. In this regard coroutines are similar to
 "continuations" in other languages.
 
-<p>When the tag goes out of scope, the coroutine will be garabage collected. In
-cases where this is desired, using a <a href="#transient">transient</a> symbol
-for the tag is recommended.
+<p>When the tag goes out of scope while it is not actively running, the
+coroutine will be garabage collected. In cases where this is desired, using a <a
+href="#transient">transient</a> symbol or a number for the tag is recommended.
 
 <p>A coroutine is created by calling <code><a href="refC.html#co">co</a></code>.
 Its <code>prg</code> body will be executed, and unless <code><a
@@ -1137,17 +1137,15 @@ and already running - coroutine.
 <p>A coroutine is stopped and disposed when
 
 <p><ul>
-<li>it simply falls off the end,
+<li>execution falls off the end
 
 <li>some other (co)routine calls <code><a href="refC.html#co">co</a></code> with
-that tag but without a <code>prg</code> body,
-
-<li>the tag goes out of scope, so that the garbage collector stops it,
+that tag but without a <code>prg</code> body
 
 <li>a <code><a href="refT.html#throw">throw</a></code> into another (co)routine
-environment is executed, or
+environment is executed
 
-<li>an error occurred, and <a href="#errors">error handling</a> was entered.
+<li>an error occurred, and <a href="#errors">error handling</a> was entered
 
 </ul>
 
diff --git a/doc/refC.html b/doc/refC.html
@@ -558,9 +558,9 @@ copied, while atoms are returned unchanged.
 -> T
 </code></pre>
 
-<dt><a name="co"><code>(co 'sym [. prg]) -> any</code></a>
+<dt><a name="co"><code>(co 'any [. prg]) -> any</code></a>
 <dd>(64-bit version only) Starts, resumes or stops a <a
-href="ref.html#coroutines">coroutine</a> with the tag given by <code>sym</code>.
+href="ref.html#coroutines">coroutine</a> with the tag given by <code>any</code>.
 If <code>prg</code> is not given, a coroutine with that tag will be stopped.
 Otherwise, if a coroutine running with that tag is found (pointer equality is
 used for comparison), its execution is resumed. Else a new coroutine with that
diff --git a/doc/refY.html b/doc/refY.html
@@ -11,11 +11,11 @@
 
 <dl>
 
-<dt><a name="yield"><code>(yield 'any ['sym]) -> any</code></a>
+<dt><a name="yield"><code>(yield 'any ['any2]) -> any</code></a>
 <dd>(64-bit version only) Transfers control from the current <a
 href="ref.html#coroutines">coroutine</a> back to the caller (when the
-<code>sym</code> tag is not given), or to some other coroutine (specified by
-<code>sym</code>) to continue execution at the point where that coroutine had
+<code>any2</code> tag is not given), or to some other coroutine (specified by
+<code>any2</code>) to continue execution at the point where that coroutine had
 called <code>yield</code> before. In the first case, the value <code>any</code>
 will be returned from the corresponding <code><a
 href="refC.html#co">co</a></code> call, in the second case it will be the return
diff --git a/ersatz/picolisp.jar b/ersatz/picolisp.jar
Binary files differ.
diff --git a/lib/tags b/lib/tags
@@ -1,5 +1,5 @@
-! (2841 . "@src64/flow.l")
-$ (2943 . "@src64/flow.l")
+! (2842 . "@src64/flow.l")
+$ (2944 . "@src64/flow.l")
 % (2570 . "@src64/big.l")
 & (2791 . "@src64/big.l")
 * (2389 . "@src64/big.l")
@@ -46,7 +46,7 @@ bool (1721 . "@src64/flow.l")
 box (822 . "@src64/flow.l")
 box? (999 . "@src64/sym.l")
 by (1547 . "@src64/apply.l")
-bye (3422 . "@src64/flow.l")
+bye (3423 . "@src64/flow.l")
 caaaar (271 . "@src64/subr.l")
 caaadr (288 . "@src64/subr.l")
 caaar (99 . "@src64/subr.l")
@@ -61,7 +61,7 @@ caddar (409 . "@src64/subr.l")
 cadddr (435 . "@src64/subr.l")
 caddr (156 . "@src64/subr.l")
 cadr (45 . "@src64/subr.l")
-call (3074 . "@src64/flow.l")
+call (3075 . "@src64/flow.l")
 car (5 . "@src64/subr.l")
 case (1962 . "@src64/flow.l")
 catch (2462 . "@src64/flow.l")
@@ -114,7 +114,7 @@ diff (2576 . "@src64/subr.l")
 dir (2800 . "@src64/main.l")
 dm (543 . "@src64/flow.l")
 do (2136 . "@src64/flow.l")
-e (2904 . "@src64/flow.l")
+e (2905 . "@src64/flow.l")
 echo (4289 . "@src64/io.l")
 env (625 . "@src64/main.l")
 eof (3429 . "@src64/io.l")
@@ -139,7 +139,7 @@ flip (1686 . "@src64/subr.l")
 flush (4994 . "@src64/io.l")
 fold (3343 . "@src64/sym.l")
 for (2225 . "@src64/flow.l")
-fork (3248 . "@src64/flow.l")
+fork (3249 . "@src64/flow.l")
 format (2089 . "@src64/big.l")
 free (2047 . "@src64/db.l")
 from (3448 . "@src64/io.l")
@@ -166,12 +166,12 @@ inc (2256 . "@src64/big.l")
 index (2624 . "@src64/subr.l")
 info (2704 . "@src64/main.l")
 intern (875 . "@src64/sym.l")
-ipid (3193 . "@src64/flow.l")
+ipid (3194 . "@src64/flow.l")
 isa (959 . "@src64/flow.l")
 job (1426 . "@src64/flow.l")
 journal (970 . "@src64/db.l")
 key (3279 . "@src64/io.l")
-kill (3225 . "@src64/flow.l")
+kill (3226 . "@src64/flow.l")
 last (2031 . "@src64/subr.l")
 length (2700 . "@src64/subr.l")
 let (1476 . "@src64/flow.l")
@@ -235,7 +235,7 @@ on (1583 . "@src64/sym.l")
 onOff (1613 . "@src64/sym.l")
 one (1646 . "@src64/sym.l")
 open (4220 . "@src64/io.l")
-opid (3209 . "@src64/flow.l")
+opid (3210 . "@src64/flow.l")
 opt (2990 . "@src64/main.l")
 or (1637 . "@src64/flow.l")
 out (4114 . "@src64/io.l")
@@ -312,13 +312,13 @@ super (1218 . "@src64/flow.l")
 sym (3910 . "@src64/io.l")
 sym? (2421 . "@src64/subr.l")
 sync (3091 . "@src64/io.l")
-sys (3045 . "@src64/flow.l")
+sys (3046 . "@src64/flow.l")
 t (1748 . "@src64/flow.l")
 tail (1898 . "@src64/subr.l")
 tell (3163 . "@src64/io.l")
 text (1272 . "@src64/sym.l")
 throw (2488 . "@src64/flow.l")
-tick (3161 . "@src64/flow.l")
+tick (3162 . "@src64/flow.l")
 till (3515 . "@src64/io.l")
 time (2514 . "@src64/main.l")
 touch (1049 . "@src64/sym.l")
@@ -345,7 +345,7 @@ wr (5119 . "@src64/io.l")
 xchg (1538 . "@src64/sym.l")
 xor (1698 . "@src64/flow.l")
 x| (2871 . "@src64/big.l")
-yield (2699 . "@src64/flow.l")
+yield (2700 . "@src64/flow.l")
 yoke (1187 . "@src64/subr.l")
 zap (1063 . "@src64/sym.l")
 zero (1631 . "@src64/sym.l")
diff --git a/src64/flow.l b/src64/flow.l
@@ -1,4 +1,4 @@
-# 12oct10abu
+# 22nov10abu
 # (c) Software Lab. Alexander Burger
 
 (code 'redefMsgEC)
@@ -2540,11 +2540,12 @@
    pop X
    ret
 
-# (co 'sym [. prg]) -> any
+# (co 'any [. prg]) -> any
 (code 'doCo 2)
    push X
    ld X (E CDR)  # Get tag
-   call evSymX_E  # Evaluate to a symbol
+   ld E (X)
+   eval  # Evaluate 'any'
    atom (X CDR)  # 'prg'?
    if z  # Yes
       push Y
@@ -2695,7 +2696,7 @@
    pop X
    ret
 
-# (yield 'any ['sym]) -> any
+# (yield 'any ['any2]) -> any
 (code 'doYield 2)
    push X
    push Y
@@ -2712,7 +2713,7 @@
    link
    ld Y (Y CDR)  # Next arg
    ld E (Y)
-   eval  # Eval optional 'sym'
+   eval  # Eval optional 'any2'
    ld Y 0  # Preload "no target"
    cmp E Nil  # Any?
    if ne  # Yes
diff --git a/src64/version.l b/src64/version.l
@@ -1,6 +1,6 @@
-# 19nov10abu
+# 22nov10abu
 # (c) Software Lab. Alexander Burger
 
-(de *Version 3 0 4 12)
+(de *Version 3 0 4 13)
 
 # vi:et:ts=3:sw=3