Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
Fetching contributors…

Cannot retrieve contributors at this time

326 lines (323 sloc) 17.437 kB
;; -*- mode: text -*-
This is the ChangeLog originally kept at the start of screamer.lisp.
Referring here is a good idea when trying to figure out why thing are
the way they are...
;;; W25Sep91 Qobi
;;; Changed the who calls database code to fix the bug whereby after loading
;;; the definition of a nondeterministic function FOO
;;; (ALL-VALUES (FOO ...)) would not work because FOO would not be recognized
;;; as nondeterministic until at least one DEFUN was expanded. In the process
;;; changed the OLD/NEW-DETERMINISTIC? terminology.
;;; W25Sep91 Qobi
;;; Fixed the bug whereby a function FOO which referenced #'BAR or
;;; #'(LAMBDA (...) ... (BAR ...) ...) would not be recompiled when the
;;; deterministic status of BAR changed. This involved a polarity switch on
;;; NESTED?. This also fixed the bug whereby STATIC-ORDERING and REORDER were
;;; incorrectly classified as nondeterministic.
;;; W25Sep91 Qobi
;;; Made SOLUTION walk its argument.
;;; W25Sep91 Qobi
;;; Separated USE-PACKAGE from IN-PACKAGE.
;;; W25Sep91 Qobi
;;; Added *SCREAMER-VERSION*. Set it to 2.1
;;; H28Sep91 Qobi
;;; Added FLIP. Changed EITHER to a macro which expands into FLIP. Expunged
;;; from the code walker, any notion of EITHER being a special form. Removed
;;; the optimization that inline expanded calls to FAIL. Version 2.2.
;;; W2Oct91 Qobi
;;; Fixed bug in VARIABLES-IN. Version 2.3.
;;; R3Oct91 Qobi
;;; Added COUNT-FAILURES. Version 2.4.
;;; S13Oct91 Qobi
;;; Added :SCREAMER to *FEATURES* at the request of CGDEMARC. Version 2.5.
;;; F25Oct91 Qobi
;;; Fixed bug with FUTURE-COMMON-LISP on Symbolics with SETF, FUNCTION and
;;; LAMBDA. Version 2.6.
;;; M4Nov91 Qobi
;;; Fixed INTEGER-BETWEEN to work correctly with noninteger arguments.
;;; Removed SUBST form of Beta-conversion. Version 2.7.
;;; S1Dec91 Qobi
;;; Changed -NOT- to -NOTV- naming convention to be consistent.
;;; Changed INTEGERV to INTEGERPV, REALV to REALPV, NUMBERV to NUMBERPV and
;;; BOOLEANV to BOOLEANPV to be consistent.
;;; Can now walk EVAL-WHEN, FLET, LABELS, PROGV and THE.
;;; Can now CPS convert THE. Also added types to CPS conversion.
;;; Added WHEN-FAILING and rewrote COUNT-FAILURES.
;;; Added POSSIBLY?
;;; Added LOCAL-I/O
;;; Version 2.8.
;;; T11Feb92 Qobi
;;; Fixed PROCESS-SUBFORMS to fix bug whereby it didn't correctly walk
;;; EVAL-WHEN, FLET and LABELS.
;;; Fixed DEFUN FUNCTION-NAME to support RETURN-FROM FUNCTION-NAME in its
;;; body for both deterministic and nondeterministic cases.
;;; Fixed PEAL-OFF-DOCUMENTATION-STRING-AND-DECLARATIONS to not consider a
;;; lone string in the body as a documentation string.
;;; Version 2.9.
;;; M16Mar92 Qobi
;;; Removed redundant "Improper form" error.
;;; Changed all ''NIL and 'NIL to NIL.
;;; Reorganized FORM-TYPEs.
;;; Changed CONSTANT to QUOTE.
;;; Aesthetic capitalization of ALLOW-OTHER-KEYS.
;;; Renamed BLOCK to SEGMENT to be consistent.
;;; Added SELF-EVALUATING? and QUOTIFY and changed processing of QUOTE and
;;; VARIABLE.
;;; Enforce non-NIL function names.
;;; Added SCREAMER? argument to WALK.
;;; Allow FLET/LABELS to bind SETF functions.
;;; Version 2.10.
;;; T17Mar92 Qobi
;;; Built new mechanism to determine when to recompile functions due to
;;; changing determinism status to solve a long standing bug.
;;; PERFORM-SUBSTITUTIONS had a call to itself rather than a FUNCALL to
;;; FUNCTION.
;;; Removed redundant check for NEEDS-SUBSTITUTION? in CPS-CONVERT since that
;;; was checked by PERFORM-SUBSTITUTION anyway.
;;; Made the check performed by NEEDS-SUBSTITUTION? tighter so that fewer
;;; needless macro expansions take place for deterministic DEFUNs.
;;; Version 2.11.
;;; M6Apr92, T7Apr92, R9Apr92, M13Apr92 Qobi
;;; Changed DEFUN-COMPILE-TIME to compile functions.
;;; Fixed bug in CPS-CONVERT introduced by QUOTE change.
;;; Fixed polarity bug of FUNCTION-LAMBDA in NEEDS-SUBSTITUTION?
;;; Got rid of POSITIVE/NEGATIVE-INFINITY and (OR RATIONAL FLOAT) bogosity.
;;; Changed rules to use (NOT (VARIABLE? X)) instead of prior bogosity.
;;; Fixed fence-post error in trail unwinding.
;;; Added UNWIND-TRAIL.
;;; Added COST-FUNCTION and PREDICATE parameters to REORDER
;;; Fixed bug in DOMAIN-SIZE.
;;; Added RANGE-SIZE.
;;; Moved consistency checks to ends of rules to fix a bug.
;;; Removed unsound type propagation from rules relating to Gaussian integers.
;;; Changed naming conventions: MIN->LOWER-BOUND, MAX->UPPER-BOUND.
;;; Added fuzzy comparisons to bounds restrictions.
;;; Added *MINIMUM-SHRINK-RATIO*.
;;; Moved type consistency checks in ASSERT!-INTEGERPV etc. to beginning.
;;; Removed all fuzziness except for RANGE-SIZE. Fuzzy noninteger-real
;;; variables no longer dereference. REORDER cost function must now return
;;; non-NIL value for a variable to be forced.
;;; Fixed =-RULE to `support' complex numbers.
;;; Fixed CHECK-MEMBERV-RESTRICTION to check for groundness rather than
;;; variables.
;;; Fixed RESTRICT-UPPER/LOWER-BOUND! and ASSERT!-INTEGERPV to have integer
;;; bounds for integer variables fixing (INTEGER-BETWEENV 2.1 2.2) problem.
;;; Added RESTRICT-BOUNDS!
;;; Differentiated up versus down rules.
;;; Version 2.12.
;;; R30Apr92 Qobi
;;; Added NECESSARILY? and FOR-EFFECTS.
;;; Changed MAP-VALUES to accept multiple forms.
;;; Changed PRINT-VALUES and ALL-VALUES to use new version of MAP-VALUES.
;;; Changed all &BODY BODY to &BODY FORMS.
;;; Version 2.13
;;; S24May92 Qobi
;;; Changed failure strategy for INTEGER-BETWEEN and MEMBER-OF.
;;; Removed (DECLARE (IGNORE FORM)) from NEEDS-SUBSTITUTION?.
;;; Removed MAP-VALUES and changed all callers to use FOR-EFFECTS.
;;; Added AN-INTEGER, INTEGER-ABOVE, INTEGER-BELOW, A-REALV and AN-INTEGERV.
;;; Changed LINEAR-FORCE to no longer require that an integer variable have
;;; bounds.
;;; Fixed CPS conversion of TAGBODY so that CPS converted code always
;;; evaluates to NIL.
;;; Redid dependency calculations yet again to fix a latent bug.
;;; Removed error messages so that now can RETURN-FROM or GO to deterministic
;;; code from nondeterministic code wrapped in a FOR-EFFECTS but not in a
;;; DEFUN.
;;; Version 2.14
;;; T26May92 Qobi
;;; Fixed a bug in the redone dependency calculations.
;;; Version 2.15
;;; R28May92 Qobi
;;; Fixed a bug in CHECK-MEMBERV-RESTRICTION that prevented BIND! to a
;;; variable. Wrapped FORMS in PROGN in ALL-VALUES and PRINT-VALUES to fix a
;;; bug introduced by the elimination of MAP-VALUES.
;;; Version 2.16
;;; S14Jun92 Qobi
;;; Redid fix for CHECK-MEMBERV-RESTRICTION. Fixed a bug in dependency
;;; calculations so that mutually recursive nondeterministic functions can
;;; become deterministic. Also fixed bug so that macroexpand without compile
;;; doesn't cache definition. Redid PRINT-VARIABLE. Changed NON- to NON.
;;; Fixed bug in EQUALV. Versions of KNOWN?-TRUE-INTERNAL and
;;; KNOWN?-FALSE-INTERNAL without ASSERT!-BOOLEANPV. Type noticers.
;;; Fixed bug in RESTRICT-BOUNDS!. Fixed +V2 -V2 *V2 /V2 MINV2 MAXV2
;;; ASSERT!-=V2 ASSERT!-<=V2 ASSERT!-<V2 ASSERT!-/=V2 to run rule only after
;;; noticers have been attached.
;;; Version 2.17
;;; R18Jun92 Qobi
;;; Completely excised all support for domains containing variables.
;;; EQUAL and EQL don't use = so fixed bug that EQUALV and friends mistakingly
;;; used =V for numbers. As a result it is possible for variables to be bound
;;; to numbers, including complex and real numbers. <=V2 and <V2 asserted
;;; theirs arguments to be numbers which sould be real. Completely redesigned
;;; the constraint package. Must walk body of FOR-EFFECTS.
;;; Version 3.0
;;; W29Jul92 Qobi
;;; Implemented CGDEMARC's version of AN-INTEGER, AN-INTEGER-ABOVE,
;;; AN-INTEGER-BELOW, AN-INTEGER-BETWEEN, A-MEMBER-OF-VECTOR and
;;; A-MEMBER-OF-LIST. Added IScream-based Y-OR-N-P. Fixed stupid efficiency
;;; bug in ITH-VALUE.
;;; Version 3.1
;;; W12Aug92 Qobi
;;; Fixed bug whereby SUPPLIED-P arguments of deterministic surrogate
;;; functions were not ignored. Added VALUE-OF to all primitives. Made
;;; A-MEMBER-OF be one function. Exported *MAXIMUM-DISCRETIZATION-RANGE*.
;;; FIND-BEST now always returns only variables with non-null cost. FIND-BEST
;;; also will not return a corrupted variable, one where a divide-and-conquer
;;; step will not reduce the RANGE-SIZE. REORDER-INTERNAL no longer conses.
;;; DIVIDE-AND-CONQUER-FORCE will stop recursing if a step fails to tighten
;;; the bound it tried to. Added changes from Volker Haarslev to support
;;; MCL 2.0. Changed reference from LISP package to COMMON-LISP. The functions
;;; PRINT-NONDETERMINISTIC-FUNCTION, FAIL, UNWIND-TRAIL, PURGE and
;;; UNWEDGE-SCREAMER are now defined with DEFUN rather than COMMON-LISP:DEFUN.
;;; MCL supports ENVIRONMENT argument to MACRO-FUNCTION. Workaround MCL
;;; MAPHASH bug in CALLERS. Replaced MAPC with DOLIST everywhere.
;;; DEFSTRUCT-COMPILE-TIME VARIABLE. CHECK-LAMBDA-EXPRESSION integrated into
;;; LAMBDA-EXPRESSION?. Fixed bug in CPS-CONVERT-TAGBODY. Added DYNAMIC-EXTENT
;;; optimization.
;;; Version 3.2
;;; F21Aug92 Qobi
;;; Changed RESTRICT-ENUMERATED-DOMAIN! and RESTRICT-ENUMERATED-ANTIDOMAIN! to
;;; call SET-ENUMERATED-DOMAIN! to fix a bug whereby they didn't restrict
;;; upper and lower bounds. Also fixed many bugs in SHARE!. Fixed bug in MINV2
;;; and MAXV2 where they used INFINITY-MIN and INFINITY-MAX incorrectly.
;;; Fixed bug in CORRUPTED? to allow it to work on nonreal variables. Fixed
;;; bug in FIND-BEST so that it dereferences variables. Removed
;;; DEFSTRUCT-COMPILE-TIME VARIABLE since fixed the real bug which was that
;;; GET-SETF-METHOD needed to take the ENVIRONMENT as its argument. Changed
;;; preamble to conform to new style. Changed many calls to LOOP to TAGBODY
;;; since MCL 2.0 macroexpands LOOP into MACROLET which WALK can't handle.
;;; Changed some WHENs to IFs. GET-SETF-METHOD now takes ENVIRONMENT argument.
;;; Removed extra space in PRINT-VALUES Y-OR-N-P. The functions
;;; PRINT-NONDETERMINISTIC-FUNCTION, FAIL, UNWIND-TRAIL, PURGE and
;;; UNWEDGE-SCREAMER are again defined with COMMON-LISP:DEFUN rather than
;;; DEFUN. Modifications to RESTRICT-LOWER-BOUND!, RESTRICT-UPPER-BOUND! and
;;; RESTRICT-BOUNDS! which improves efficiency slightly. Changed calls to
;;; SEQUENCEP to TYPEP SEQUENCE. I don't know why CLtL2 doesn't have
;;; SEQUENCEP while Lucid does. Lifted generators now take optional NAME
;;; argument like MAKE-VARIABLE. Changed = 0, < 0 and > 0 to ZEROP, MINUSP
;;; and PLUSP. Changed INT-CHAR to CODE-CHAR. Changed /-RULE to not divide by
;;; zero. Also *-RULE-UP/DOWN now just FAIL on divide by zero.
;;; Version 3.3
;;; W26Aug92 Qobi
;;; Changed references to COMMON-LISP and COMMON-LISP-USER to CL and CL-USER.
;;; Added DEFINE-SCREAMER-PACKAGE and modified definition of SCREAMER-USER to
;;; use it. All calls to GET-SETF-METHOD and MACRO-FUNCTION now pass
;;; ENVIRONMENT since GENERA 8.1, Lucid 4.0.2 and MCL 2.0 all support this
;;; argument. Added Kludge to support Lucid 4.0.2 without CLIM 1.1 loaded.
;;; Added compile-time switch option whereby variables can be represented
;;; either using DEFSTRUCT or using DEFCLASS. Changed FUTURE-COMMON-LISP to
;;; LISP since now using Ansi-common-lisp syntax for Symbolics.
;;; Version 3.4
;;; F11Sep92 Qobi
;;; Implemented the missing cases of BCP from ANDV and ORV. Changed
;;; VALUE-OF as per suggestions of Volker Haarslev. Removed check whether
;;; *QUERY-IO* was same as *TERMINAL-IO* from Y-OR-N-P since *QUERY-IO* is
;;; usually a synonym stream and Lucid doesn't implement
;;; SYNONYM-STREAM-SYMBOL and even if it did, there would be no way to
;;; determine whether or not a steam is a a synonym stream.
;;; Version 3.5
;;; T27Oct92 Qobi
;;; ATTACH-NOTICER! now runs it. Load extended LOOP macro for MCL since
;;; regular MCL LOOP expands into a MACROLET which WALK can't handle.
;;; Undid change which turned LOOP into TAGBODY. Don't trail unnested LOCAL
;;; SETF and LOCAL-OUTPUT. Special case BOOLEANS. Fixed bug whereby ANDV
;;; didn't return NIL when one argument was known to be NIL and ORV didn't
;;; return T when one argument was known to be T. Added ASSERT!-ORV and
;;; ASSERT!-NOTV-ANDV optimizations. Fixed a really obscure bug in
;;; PERFORM-SUBSTITUTIONS where it didn't perform substitutions on a
;;; RETURN-FROM.
;;; Version 3.6
;;; W3Nov92 Qobi
;;; Fixed bug in DETERMINE-WHETHER-CALLERS-ARE-DETERMINISTIC. Fixed the fix
;;; to the obscure bug in PERFORM-SUBSTITUTIONS. Changed the call to
;;; CPS-CONVERT inside CPS-CONVERT-RETURN-FROM to pass (FOURTH TAG) as VALUE?
;;; to fix an obscure bug due to John Eric Fosler.
;;; Version 3.7
;;; R12Nov92 Qobi
;;; More efficient ANDV, ORV, ASSERT!-NOTV-ANDV and ASSERT!-ORV. Added
;;; COUNT-TRUES and COUNT-TRUESV. Fixed bug in TRANSFORM-ASSERT!. Added
;;; INTERNAL versions of ANDV, ORV, ASSERT!-NOTV-ANDV, ASSERT!-ORV,
;;; COUNT-TRUES and COUNT-TRUESV. Fixed bug in FUNCALLV and APPLYV. Fixed
;;; efficiency bug in CPS-CONVERT-CALL. Fixed bug in RESTRICT-INTEGER!.
;;; Version 3.8
;;; T22Dec92--R25Feb93 Qobi
;;; Exported REAL, REALP, BOOLEAN and BOOLEANP. Added support for partial
;;; evaluator. T is now SELF-EVALUATING. Fixed bug in NEEDS-SUBSTITUTION?
;;; so that NESTED? is T. Fixed CACHE-DEFINITION. Added #||# to IN-PACKAGE.
;;; Added EVAL-WHEN to REQUIRE :LOOP for MCL. Fixed bug in RESTRICT-VALUE!.
;;; Version 3.9
;;; M15Mar93 Qobi
;;; Changed meaning of POLARITY? in KNOWN?-CONSTRAINT, PROPAGATE, and
;;; ASSERT!-CONSTRAINT so that non-NIL result of FUNCALLV or APPLYV is
;;; considered to satisfy constraint.
;;; Version 3.10
;;; S9May93--S11Jul93 Qobi
;;; Added initial values for LAMBDA-LIST, BODY, ENVIRONMENT, CALLEES, and
;;; OLD-DETERMINISTIC? of FUNCTION-RECORD to allow to run under Genera 8.1.1.
;;; Changed WALK of IF to support Genera 8.3. Conditionalized
;;; SPECIAL-OPERATOR-P and GET-SETF-EXPANSION to support both CLtL2 and dpANS.
;;; CACHE-DEFINITION and friends no longer save ENVIRONMENT. Got rid of code
;;; which saved environments in FUNCTION-RECORD in CACHE-ENVIRONMENT and got
;;; rid of COPY-LIST of environments in DEFUN since that was not portable.
;;; Added #-POPLOG ENVIRONMENT to calls to GET-SETF-METHOD and MACRO-FUNCTION.
;;; Added some other conditionalization to support Poplog. Walker
;;; conditionalization for COND now just used for Explorer and not Allegro.
;;; Added wraps around MACRO-FUNCTION to support Allegro. Added support for
;;; nondeterministic functions that return multiple values. Added support for
;;; AKCL. Fixed efficiency bug in ASSERT!-CONSTRAINT. Fixed error messages
;;; for FUNCALLV/APPLYV. FUNCALLV/APPLYV now return ground value when
;;; manifest. Added arc consistency. DEFUN now returns function name.
;;; Completely obliterated all traces of FUNCTION-RECORD-ENVIRONMENT and
;;; commented all cases where current rather than saved environment is used.
;;; Various machinations to get Screamer to run under Harlequin, Allegro, MCL,
;;; and AKCL. Fixed bugs in ASSERT!-MEMBERV-INTERNAL, ASSERT!-MEMBERV,
;;; ASSERT!-NOTV-MEMBERV-INTERNAL, and ASSERT!-NOTV-MEMBERV. FUNCALLV and
;;; APPLYV now propagate to Z when all arguments become bound.
;;; Version 3.11
;;; S12Jul93 Qobi
;;; To consolidate version skew on version 3.11.
;;; Version 3.12
;;; T20Jul93 Qobi
;;; Fixed bug in -V2 (i.e. (-V2 0 <variable>)) by removing bogus special case.
;;; Version 3.13
;;; T27Jul93 Qobi
;;; Since ATTACH-NOTICER! now runs the noticer after attaching it removed the
;;; cases where the noticers were explicitly run by lifted functions.
;;; Version 3.14
;;; W22Sep93 Qobi
;;; Iterate no longer exports FINISH under AKCL since it conflicts with PCL.
;;; TERMINATE is a synonym anyway.
;;; Version 3.15
;;; T28Sep93-M4Oct93 Qobi
;;; Ported to CMU CommonLisp 17b. This change necesitated converting the
;;; LOOPs in Y-OR-N-P, UNWIND-TRAIL, VALUE-OF, VARIABLIZE, and
;;; CHOICE-POINT-INTERNAL into TAGBODY/GO combintations since CMU CommonLisp
;;; expands LOOP into MACROLET. Changed POSSIBLY-BETA-REDUCE-FUNCALL to again
;;; do SUBST optimization. Changed CPS-CONVERT-BLOCK, CPS-CONVERT-IF,
;;; CPS-CONVERT-TAGBODY, and CPS-CONVERT-CALL to use
;;; POSSIBLY-BETA-REDUCE-FUNCALL to encapsulate the *DYNAMIC-EXTENT?*
;;; interface and fix some efficiency bugs. Even Symbolics port now uses
;;; MAGIC. Set *DYNAMIC-EXTENT?* to NIL for Symbolics. Added patch files for
;;; Lucid bug-5511. *TRAIL* now has an initial size of 4096 and a growth rate
;;; of 1024 so that we don't spend much time growing it on implementations
;;; where that is inefficient.
;;; Version 3.16
;;; T26Oct93 Qobi
;;; PERFORM-SUBSTITUTIONS didn't handle FOR-EFFECTS which caused a bug when
;;; a deterministic DEFUN contained a FOR-EFFECTS which had a nested LOCAL
;;; side effect.
;;; Version 3.17
;;; M22Nov93 Qobi
;;; Fixed bug in CPS-CONVERT-RETURN-FROM that surfaced due to the previous
;;; bug fix.
;;; Version 3.18
;;; M27Dec93 Qobi
;;; Fixed bug in WHEN-FAILING so that it now nests.
;;; Version 3.19
;;; T8Mar94 Qobi
;;; Fixes to make work under Allegro 4.2 and Genera 8.3.
;;; Future work includes integrating the Allegro\PC and CLISP mods,
;;; fixing the conditionalization on the DEFTYPE BOOLEAN, and checking that
;;; the new official DEFTYPE BOOLEAN corresponds to what Screamer expects.
;;; Version 3.20
Jump to Line
Something went wrong with that request. Please try again.