From: Fernando D. Mato Mira
Subject: Series 2.2 released
Date: 
Message-ID: <38DAA4CF.AAB55255@iname.com>
http://series.sourceforge.net/


2.2:

  NEW FEATURES:
  ------------
   - (collect 'set
     Collects a series into a list removing any duplicates in the most
efficient way possible.
   - (collect 'ordered-set
     Collects a series into a list removing any duplicates but keeping
the original series order.
   - SCAN now allows to drop the type specifier for any source
expression
     [:cltl2-series reactivates the old 'list assumption]
   - SCAN now can scan multidimensional arrays in row-major order.

  IMPROVEMENTS:
  ------------
   - Better code generation
     . Some fixnum declarations were further constrained.
     . Optimized scanning of constant sequences.
     . Somewhat optimized scanning of "empty" vectors, ie,
       declared to be of constant 0 length, like in
       (collect (scan '(vector t 0) <gimme-a-huge-array-to-throw-away>)
       now gives you NIL generating/executing less instructions.
       [<gimme-a-huge-array-to-throw-away> is still executed if not
constantp,
        though]
     . Variables of type NULL are replaced by constant NILs.

  BUG FIXES:
  ---------
   - Some incorrect fixnum declarations were relaxed.
   - Improved some declarations to avoid spurious range warnings
regarding
     dead code by not-so-smart compilers.
_____________________________________________________________________________

2.1.5:

  IMPROVEMENTS:
  ------------
   - Documentation
     . Added ChangeLog file.

  DEVELOPMENT:
  -----------
   - Reinstated plain generation support.
   - Fixed letified merge-frags bug.
   - Adapted handle-dflow and non-series-merge for letification.
   - Spawned list->frag1 from list->frag.
   - define-optimizable-series-function uses list->frag1 to
     support letification.
   - Still can't handle all initial fragL bindings because off-line
handling
     seems to move prologs into TAGBODYs.
_____________________________________________________________________________

2.1.4:

  IMPROVEMENTS:
  ------------
    - Better code generation
 . compute-series-macform-2 no longer generates a redundant AND
   when trigger is t.
_____________________________________________________________________________


2.1.3:

  DEVELOPMENT:
  -----------
    . Letification can handle prologs now
_____________________________________________________________________________

2.1.2:
  IMPROVEMENTS:
  ------------
  - Source cleanup
    . MERGE-FRAGS no longer depends on frag component order.
    . Abstracted use of prolog component of frags.
    . purity component of frag is now just a symbol.
_____________________________________________________________________________

2.1.1:

  BUG FIXES:
  ---------
    - 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 it's written to)).
____________________________________________________________________________


2.1:

  IMPROVEMENTS:
  ------------
  - Source cleanup
    . Added eval-when compatibility magic.
    . GENERATOR deftyped to CONS, not LIST, when necessary.
    . Abstracted use of wrapper component of frags.

  DEVELOPMENTS:
  ------------
  - Basic Letification works.
  - Started work on purity analysis.

  BUG FIXES:
  ---------
    . Workaround for ACL 5.0.1 TAGBODY bug added.
    . ALL-TIME SERIES BUG FIX: wrappers now inserted more precisely.
_____________________________________________________________________________

2.0.3:

  BUG FIXES:
  ---------
  - Added missing EVAL-WHEN around the definition of WHEN-BIND.
  - Allegro 5.x needs the GENERATOR deftype, too.
_____________________________________________________________________________


2.0.2:

  BUG FIXES:
  ---------
  - Fixed fragL instead of *fragL bug in COLLECT.
_____________________________________________________________________________


2.0.1:

  IMPROVEMENTS:
  ------------
  - Better code generation
    . Removed NULL-ORs and added THEs.
  - Source cleanup
    . Renamed old fragL as *fragL.
    . New fragL does not do *type* substitution.
    . Simplified inserted aux var initialization.
    . Abstracted all uses of a frag's aux component.
    . Replaced IF by WHEN in non-output code when possible.
    . Removed gratuitous sorting in CODIFY.

  BUG FIXES:
  ---------

  - GATHERING does not elide declarations.
_____________________________________________________________________________


2.0:

  ***NEW SPECIFICATION RESTRICTIONS***
  ------------------------------------

  - 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???"


  NEW FEATURES:
  ------------

  - GATHER-NEXT
    A macro with the same effect as the NEXT-OUT function,
    but with result undefined.
  - GATHER-RESULT
    A macro with the same semantics as the RESULT-OF function,
  - FGATHER-NEXT
    Like GATHER-NEXT, but the gatherer argument must be a symbol
    denoting a gatherer bound by FLET.
  - FGATHER-RESULT
    Like GATHER-RESULT, but the gatherer argument must be a symbol
    denoting a gatherer bound by FLET.
  - FGATHERING
    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.
  - GATHERLET
    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.
  - FGATHERLET
    The `F' version of GATHERLET. Duh.
  - COLLECT-PRODUCT
    Like COLLECT-SUM, but for #'*. How more obvious does it get?
  - INDEFINITE-EXTENT
    Declaration exported.


  IMPROVEMENTS:
  ------------

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

  - Source clean up.
    . Local series functions are almost there (FLET extension)
    . Bottom-up definition for improved compilation.
    . Make source `FLET and LABELS ready'.
    . `readability/documentation' release.
    . Abstracted use of aux component of frags.
    . Some work done towards multiple assignment support in PRODUCING.

  BUG FIXES:
  ---------

  Does not unintern EXT:COLLECT and EXT:ITERATE anymore under CMUCL!!!
  GATHERING et al. are not bitten by CMUCL DEFSTRUCT bugs

--
Fernando D. Mato Mira
Real-Time SW Eng & Networking
Advanced Systems Engineering Division
CSEM
Jaquet-Droz 1                   email: matomira AT acm DOT org
CH-2007 Neuchatel                 tel:       +41 (32) 720-5157
Switzerland                       FAX:       +41 (32) 720-5720

www.csem.ch      www.vrai.com     ligwww.epfl.ch/matomira.html

From: ········@my-deja.com
Subject: Re: Series 2.2 released
Date: 
Message-ID: <8bgh87$e8t$1@nnrp1.deja.com>
While using...
(lisp-implementation-version)
"5.0.1 [Linux/X86] (6/29/99 16:11)"
I got several of the following errors during
(compile-file "s-code")

 ; While compiling (:INTERNAL COMPUTE-BINDS-AND-DECLS 0):
Error: duplicated &optional in arglist beginning at
       ((TYP T) &OPTIONAL (VAR-VALUE NIL VALUE-PROVIDED-P))
  [condition type: PROGRAM-ERROR]

I removed the duplicate &optional in the associated functions causing
the errors, and successfully compiled and completed the tests (No tests
failed).
However, I do not *know* if this was a valid fix.

Dave Linenberg


Sent via Deja.com http://www.deja.com/
Before you buy.
From: Fernando D. Mato Mira
Subject: Re: Series 2.2 released
Date: 
Message-ID: <38DD085E.51C48442@iname.com>
········@my-deja.com wrote:

> While using...
> (lisp-implementation-version)
> "5.0.1 [Linux/X86] (6/29/99 16:11)"
> I got several of the following errors during
> (compile-file "s-code")
>
>  ; While compiling (:INTERNAL COMPUTE-BINDS-AND-DECLS 0):
> Error: duplicated &optional in arglist beginning at
>        ((TYP T) &OPTIONAL (VAR-VALUE NIL VALUE-PROVIDED-P))
>   [condition type: PROGRAM-ERROR]
>
> I removed the duplicate &optional in the associated functions causing
> the errors, and successfully compiled and completed the tests (No tests
> failed).
> However, I do not *know* if this was a valid fix.

This is right. I'll be uploading a new version tonight which is also less
happy at optimizing *CD*Rs,
because someone might get bitten by things like this:

(collect (scan (cdr '(a . #(1 2 3))))

Thanks,

--
Fernando D. Mato Mira
Real-Time SW Eng & Networking
Advanced Systems Engineering Division
CSEM
Jaquet-Droz 1                   email: matomira AT acm DOT org
CH-2007 Neuchatel                 tel:       +41 (32) 720-5157
Switzerland                       FAX:       +41 (32) 720-5720

www.csem.ch      www.vrai.com     ligwww.epfl.ch/matomira.html
From: Fernando D. Mato Mira
Subject: Series 2.2.1 released
Date: 
Message-ID: <38DD3CF4.3FEBF8F7@iname.com>
2.2.1:

  IMPROVEMENTS:
  ------------
   - Better code generation
     . Avoid indirect funcalling through a variable in CHOOSE-IF and basic-collect-fn whenever possible.
     . Avoid consing in MAP-FN.
   - Source cleanup
     . Renamed old funcall-frag as apply-frag, and
       old funcall-literal-frag as apply-literal-frag.
     . Added new funcall-frag, which is more funcall-like than the old one.
     . Added efragL macro. *fragL is deprecated, and will eventually go.
     . Added funcase macro.
     . Renamed poly-funcall as polycall.
     . Added polyapply.
     . Defined multiple-value-polycall the way it should and
       removed silly first argument N.
   - Added series.system file for MK:DEFSYSTEM (Raymond Toy)
   - Added s-install.lisp file [just calls (series::install) when loaded] (Toy)

  BUG FIXES:
  ---------
   - Removed redundant &optional in binding lists. (Dave Linenberg)
   - lister-p was too aggressive regarding *CD*R

--
Fernando D. Mato Mira
Real-Time SW Eng & Networking
Advanced Systems Engineering Division
CSEM
Jaquet-Droz 1                   email: matomira AT acm DOT org
CH-2007 Neuchatel                 tel:       +41 (32) 720-5157
Switzerland                       FAX:       +41 (32) 720-5720

www.csem.ch      www.vrai.com     ligwww.epfl.ch/matomira.html