179 lines (139 with data), 6.8 kB
Series Version 2.1.3 RELEASE NOTES
Fernando D. Mato Mira
CSEM (Centre Suisse d'Electronique et de Microtechnique)
Jaquet-Droz 1, CH-2007 Neuchatel, Switzerland
14th March, 2000
Series created by Richard C. Waters
Copyright Massachusetts Institute of Technology, Cambridge, Massachusetts.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that this copyright and permission notice appear in all
copies and supporting documentation, and that the name of M.I.T. not
be used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission. M.I.T. makes no
representations about the suitability of this software for any
purpose. It is provided "as is" without express or implied warranty.
M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
Fostering by Raymond Toy
Featuring Fixes by:
Tim Bradshaw (Symbolics)
Bruno Haible (CLISP)
Lieven Marchand (Allegro)
Reginald S. Perry
Pekka Pirinen (Liquid)
Paul Werkowski (CMUCL)
Additional Tests by:
Special Effects by
Many unknown others
***NEW SPECIFICATION RESTRICTIONS***
1. The consequences of using the gatherers introduced by GATHERING outside the dynamic scope of the form are now explicitly stated to be undefined, except for
those declared INDEFINITE-EXTENT.
If you need them to be indefinite extent by default,
evaluate (pushnew :cltl2-series) before compilation (or interpreted load)
After loading series :cltl2-series will indicate if backward-compatibility
mode is enabled.
Rationale for this change:
"Weird code must be the one escaping gatherers so created"
"WHO EVER DID THAT???"
A macro with the same effect as the NEXT-OUT function, but with result undefined.
A macro with the same semantics as the RESULT-OF function,
Like GATHER-NEXT, but the gatherer argument must be a symbol denoting a gatherer bound by FLET.
Like GATHER-RESULT, but the gatherer argument must be a symbol denoting a gatherer bound by FLET.
Like GATHERING, but where the gatherers are bound by FLET instead of LET.
Same extent rules as for GATHERING apply. Remember that where you would use
(declare (indefinite-extent g)) inside GATHERING, you need to do
(declare (indefinite-extent #'g)) with FGATHERING.
The basic construct upon which GATHERING rests. No automatic return
of gatherer results. And no extent restrictions, of course. If you want
something dynamic-extent, you'll have to declare it.
The `F' version of GATHERLET. Duh.
Like COLLECT-SUM, but for #'*. How more obvious does it get?
- MACROLETs or CLOS::VARIABLE-REBINDING declarations do not block optimization under LispWorks.
- Better code generation
- Stricter typing.
- Replaced some SETQs by initializations at LET binding time.
- Removed global function namespace pollution.
- Encapsulated series subfunctions.
- Prevented generation of some dead termination code.
- Whole expression (t) and :loop wrapper placement
(:prolog and :epilog support easy to add, if necessary).
- Improved letification merging.
- Source clean up.
Local series functions are almost there (FLET extension)
Bottom-up definition for improved compilation.
Make source `FLET and LABELS ready'.
Renamed old fragL *fragL. Used new `*type*-free' fragL whenever possible.
Abstracted use of aux component of frags.
Some work done towards multiple assignment support in PRODUCING.
Added private ANSI-compliant eval-when macro when special form is old-style.
Abstracted use of wrapper component of frags.
GENERATOR deftyped to CONS, not LIST, when necessary.
Abstracted use of prolog component of frags.
MERGE-FRAGS no longer depends on the exact order of frag components.
- Does not unintern EXT:COLLECT and EXT:ITERATE anymore under CMUCL!!!
- GATHERING et al. are not bitten by CMUCL DEFSTRUCT bugs.
- Allegro 5.x needs the GENERATOR deftype, too.
- Workaround for ACL 5.0.1 TAGBODY bug.
- ALL-TIME SERIES BUG FIX: wrappers now inserted more precisely.
- Some initial (unread) bindings of variables could be NIL, contradicting
declarations. Uses LOCALLY now for those (and also for all others for which
NIL is OK, but which can be left unbound, if an implementation provides another version of LET that does not do NIL defaulting (and ideally would raise a compilation error if a variable is read before its written to)).
- Full letification works (but disabled because still useless).
Load SERIES, then:
[Don't get scared about "compilation aborted" messages.
If it's reported that all tests passed,
it means it was just the error testing]
Load SERIES, then:
[This will shadow-import extended special forms and install readmacros]
CMUCL 18b (cmucl-2.4.19-2) [SuSE Linux 6.3/Intel]
CMUCL 18c [Solaris]
LispWorks 4.1 [Windows NT 4.0 SP6]
clisp-99.01.08-21 with -a option [SuSE Linux 6.3/Intel]
ACL 5.0.1 [SuSE Linux 6.3/Intel]