$Id: CHANGELOG,v 2.29 2007/01/29 14:17:23 airfoyle Exp $ [- Version 2.1.29 -] 2007-01-28: Added sanity check that 'forall' and 'exists' actually have vars. [- Version 2.1.28 2006/12/01 17:46:16 airfoyle Exp -] 2006-11-01: Moved 'gen-var' from multilet.lisp to util.lisp so it's available when multilet is slurped. [- Version 2.1.28 -] 2006-11-26: chunk.lisp: Expanded allowable time discrepancy for that elusive bug whereby some chunk deriver is returning dates before the current one. [- Version 2.1.27 2006/11/20 04:43:13 airfoyle Exp -] 2006-11-19: multilet.lisp: Convention for new variables changed: macro var bound to run-time var with name #:v-27 is v$ (not -v-, which looks too much like some kind of segment). debug.lisp: Fixed bug whereby all unlabeled values of forms were being discarded. Now they are all saved, with names *, */, *//, *///, */4, etc. [- Version 2.1.24 -] 2006-11-09: debug.lisp: Changed conventions so all values of form in (ev form -vars-) are returned, except for vars enclosed in parens. 2006-08-19: ytload/ytload.lisp: Replaced occurrence of 'memq' with 'member' in 'yt-load'. Added comment to clarify how :if-installed ':start-over works. [- Version 2.1.22 2006/08/04 14:08:07 airfoyle Exp -] 2006-08-02: YTools loader and installer now print version number. [- Version 2.1.21 2006/07/24 11:43:00 airfoyle Exp -] 2006-07-24: Added :end-string argument to 'test' macro. 2006-07-02: Improved format of error message in 'control-nest'. [- Version 2.1.20 2006/06/28 22:56:58 airfoyle Exp -] 2006-06-28: util.lisp: Corrected 'format' calls that lacked control strings. chunk.lisp: 'chunk-internal-term-mgt' didn't actually call 'unmanage' in the case where the chunk had derivees (!). How did this ever work? I fixed it. [- Version 2.1.19 2006/06/26 20:06:48 airfoyle Exp -] 2006-06-11: Corrected bug in Or-chunk/derive-date: If current date is newer than earliest disjunct, stick with current date. setter.lisp: In 'simple-dat-match', any quoted expression should return value 0, because it can contain no free occurrences of | dat|. [- Version 2.1.17 2006/05/30 13:54:47 airfoyle Exp -] 2006-05-30: Defined 'with-gen-vars', around cool new convention that variables bound to generated-variable names in macros are of the form -x-. In debug.lisp: 'g' and all other dbg-stack* searchers now pull the entries they find to the front, so that 'ps' is less likely to flush something useful. [- Version 2.1.16 2006/05/25 20:01:19 airfoyle Exp -] 2006-05-25: Changed query message in 'fload-versions'. Hopefully more accurate. [- Version 2.1.15 2006/05/25 14:17:12 airfoyle Exp -] 2006-05-25: Added code to ensure that (depends-on (:at :read-time) ...) is effective; that is, that the file will be slurped for macros if else. Also altered 'f-l-c-chunk' to return multiple values instead of a list. [- Version 2.1.14 2006/05/23 21:37:10 airfoyle Exp -] 2006-05-23: Fixed bug in definition of 'setter' (setter.lisp), and reversed order of args to setter (and hence to ^-this-val and <-this-val). [- Version 2.1.12 2006/05/22 12:08:37 airfoyle Exp -] 2006-05-21 Introduced 'matches' = 'matchq' with args reversed [- Version 2.1.9c 2006/05/20 01:44:24 airfoyle Exp -] 2006-05-18 Created ytcopy.lisp: Utilities for creating tar files and copying to cyndra. (Yes, the name of the server is hard-wired. Sigh.) [- Version 2.1.9b -] -- sourceforge CVS site down 2006-05-16 Streamlined "start over" hack in ytload, dispensing with :start-over argument and just making :start-over a possible value of :if-installed. [- Version 2.1.9a -] 2006-05-15 Utilities moved from chunk-system code to util.lisp . It should be possible to avoid loading chunk system at all. Added ?(:check e1 ... eK) to setter. Matches if all e's evaluate to true. [- Version 2.1.9 -] 2006-04-10: Added 'setter' to setter.lisp. (setter ) returns a function of two args. (>< (setter p) v fcn) is the same as (!= p (>< fcn v *-*)). The two functions <-this-val and ^-this-val are defined to be used with setter; they ignore the second arg. [- Version 2.1.8 2006/01/22 15:38:50 airfoyle Exp -] 2006-01-13: Defined (>< e -args-) as synonym for (funcall e -args-) [- Version 2.1.6 -] 2006-01-10: Define '_' as a symbol macro that expands to 'nil'. [- Version 2.1.5 2005/12/30 19:16:24 airfoyle Exp -] 2005-12-30: When installing YTools, if YTFM is not yet installed, user is queried whether it should be installed, but is no longer asked the confusing question about whether YTFM should be loaded; the load now happens willy-nilly. Post-file-transduction hooks are now run in reverse chrono order. Replaced occurrences of (set sym val) with (!= (Symbol-value sym) val) in tracearound to make CLISP happy. [- Version 2.1.4 -] 2005-12-28: Allow '_' in (repeat :for ((_ = l :to h)) ...). [- Version 2.1.3 2005/12/26 15:33:18 airfoyle Exp -] 2005-12-26: Add 'sym-val' to debug.lisp. [- Version 2.1.2 2005/12/26 15:21:44 airfoyle Exp -] 2005-12-25: Merge chunk-based YTools into main line! [- Version 2.0.61 -] 2005-12-24: Allow '+' or '-' as responses to question about whether a file should be loaded after being compiled. Fix paren error in 'track-extra-vals' (multilet.lisp). To make "fcompl -f" work correctly for ytools module, added every component of the module to the definition in module.lisp. [- Version 2.0.59 2005/12/23 05:59:18 airfoyle Exp] 2005-12-22: Made 'fcompl' work with modules --- sort of. 2005-12-21: Fixed bug in 'read-y-or-n' (outin.lisp) where output was going to standard output instead of 'srm'. 2005-12-17: Corrected anachronisms in slurp.lisp (use of != and *-*). [- Version 2.0.57 2005/12/17 15:49:41 airfoyle Exp -] 2005-12-15: Rewrite of 'track-extra-vals/extra-vals' for greater flexibility, adding keyword args :num-principal-values, :after; and allowing 'vars' in 'extra-vals' to be omitted in simple cases. Manual and implementation now agree. [- Version 2.0.56 2005/12/14 20:30:42 airfoyle Exp] 2005-12-14: Altered 'cons-funcall' to allow (lambda ...) as well as (\\ ...). Changed name of 'mapeltreduce' to 'mapreduce', and made it macroexpand to 'reduce' in the usual case. [- Version 2.0.55 2005/12/14 15:21:38 airfoyle Exp -] 2005-12-13: Made 'track-extra-vals' more complex for no real reason. [- Version 2.0.54 2005/12/12 16:27:42 airfoyle Exp] 2005-12-09: Changed def-class so that a "key-conser" is always defined, even if the option :nokey was given. That option was undocumented, and has now been emasculated, that is, made equivalent to the absence of :key. [- Version 2.0.50 Id: 1.31.2.50 2005/12/08 17:03:04 airfoyle Exp -] 2005-12-08: New numbering scheme: Minor version number of software package = last version number for CHANGELOG of package E.g., this entry bumps the YTools CHANGELOG to version 1.31.2.50, so this produces version 2.0.50 of YTools. 2005-12-06: Added instrumentation to tell when 'multilet' expands to simple or complex version. 2005-12-04: !' now records symbols it is used with in list syms-used-as-funktions* 2005-11-30: Added feature :ytools back to *features* (somehow it had disappeared at some point). 2005-11-23: Allow extra atoms at front of 'control-nest' as comments. Slight tuning of initialization protocol. New quasi-public routine 'new-source-suffix' for adding strings to 'source-suffixes*'. 2005-11-20: Added debugging aid in chunk. Eliminated error break in 'chunks-update' after careful experimentation showed that it is perfectly possible for 'set-latest-supporter-date' to make a chunk out of date after it has been derived. 2005-11-13: Fixed bug in 'def-ytools-logical-pathname' that caused old bin-directory association to be discarded if no association was specified. Moved fileseg into ytools directory. (Version 2.0.17) 2005-11-09: Corrected error in compiler macro for 'string-concat'. (Version 2.0.16) 2005-11-08: Small change to raw-ytfm-load. 2005-11-06: Switched order of loading init files so that config-directory ytinit (if any) is loaded before home-dir ytinit (if any). 2005-11-03: Changed 'bind' so it doesn't declare built-in globals as special. 'string-concat' moved from nilscompat.lisp to base.lisp (Version 2.0.15) 2005-10-31: Export 'fload-version-suffix*' because it's mentioned in the manual. 2005-10-26: Changed 'temporarily-manage' in chunks-update so it makes management request even if a chunk is already managed. (See comment in that function.) 2005-10-21: Added calls to 'force-output' to make queries work properly under SBCL. Changed parameter ytools-bin-dir-pathname* in ytools.lsy to allow non-relative bin directory for YTools. 2005-10-19: Fixed bug in 'declare-pathname-associate' 2005-10-11: Replaced calls to 'file-write-date' with calls to 'pathname-write-time' in cases where file is not known to exist. (Version 2.0.13.) 2005-10-10: Workarounds for bugs in Open MCL. 2005-10-09: Creating Ever-loaded chunks; not integrated yet (or working correctly, for that matter). Corrected various technicalities to get Open MCL to compile YTools. Created simple repl (repl.lisp) for use in slime debugger. 2005-10-07: Allowed names of config files to be something other than "ytconfig.lisp". Broadened declarations of allowed values of fields in chunks to make openmcl compiler happy. 2005-09-13: Moved facilities of multvalhacks.lisp into multilet.lisp. Changed 'loadeds-check-bases' so it postpones rescans if chunk update is already in progress. (Version 2.0.12) 2005-09-03: Inserted :before method for (setf Chunk-date) on Code-file-chunk to try to catch the mysterious culprit that occasionally tries to set a Code-file-chunk's date to something before its file's write date. No hit so far. 2005-07-29: Added 'on-list-if-new', *current-case-mode* 2005-07-28: Allowed derivers and date-derivers to terminate management of their chunks if found to be defective in some way; chunks-update will then skip any further handling of them. This is used in the case of code-file chunks for nonexistent files. 'fload' and 'fcompl' now remind user if there are postponed file ops. (Version 2.0.11) 2005-07-24: Added 'with-open-files' to multvalhacks.lisp. Revamped the way file-header slurping is related to chunk for file being slurped. (Version 2.0.10) 2005-07-21: Replaced <- and *undef with :<- and :*undef in filedeps.lisp. 2005-06-30: Changed naming convention for form chunks derived from modules, so that redefining module erases the old form chunk rather than just adding a new one. 2005-06-24: Moved keyword-args-extract to misc.lisp. Add 'in-header' (file depend.lisp). Fixed bug in fload (so -x flag works). (Version 2.0.09.) 2005-06-17: Added file multvalhacks.lisp . (Version 2.0.08) Add feature pre-chunk, so that .lsy files can run under either old YTools or YTools 2. Added file multvalhacks.lisp. (Version 1.4.9) 2005-05-30: Added 'find-chunk'. Fixed bug in 'chunk-destroy'. Fixed bugs in request-mgt logic. Added some debugging statements. Changed chunk printer. 2005-05-28: Made flags in 'fload' and 'fcompl' characters, not symbols interned in the yt package. Added -n flag (force "normality"). 2005-05-27: Made scan for "Readtable: " in mode line case-insensitive. 2005-05-04: Gave user options in case fload reports that previous attempt to compile a file failed. (Version 2.0.06) 2005-05-03: Introduced chunk for pathname associates. Dir-associate-chunk (pathname.lisp) keeps track of the association of a property with a pathname. Compiled-file-chunks depend on association of 'bin' properties with directories. (Version 2.0.05) 2005-04-20: Ensured that if bin directory of a source directory changes, fload will notice that the next time it compiles a file in the source directory. (Version 2.0.04) 2005-04-17: Eliminated double-compilation bug in (fload -c ...). Suppressed annoying message about chunk times differing by 1 second. Fixed bug preventing proper reset of basis by 'loaded-chunk-set-basis'. Made sure scan-depends-on is preceded by reset of bases of all relevant chunks. (Version 2.0.03) 2005-04-16: Eliminated bug in logic in 'loaded-chunk-set-basis'. (Version 2.0.02) 2005-04-06: Added slurp handlers for various forms. (Version 2.0.01) 2005-03-27: Rethink of alt-version hack for Code-file-chunks. Reintroduced idea from old YTools of having lightweight version control apply purely at the file-list-parsing level (e.g., in parsing the arguments to 'fload'). Got slurp dependencies right (or more nearly right) in file chunks. 2005-03-16: Rethink of what it means to slurp a module definition. Corrected bug in implementation of -x flag to 'fload'. 2005-03-13: Debugged interaction between 'depends-on' and 'self-compile-dep'. More tuning of ynisp to new chunk system. 2005-03-12: Better cycle detection in chunk network. Implemented 'at-slurp-time' dependencies. 2005-03-06: Further debugging of flags to fload and fcompl. (Version 1.5.1) 2005-03-05: One more retune of derive-date/derive ritual. Made interrogation about what version of files to load more intelligible. Began work on getting force flags to work correctly. (Version 1.5) 2005-03-02: Split derivers into two generic functions, derive-date and derive. Leaf chunks can be out of date. 'derive' is called the same way for leaves and non-leaves. (Version 1.4.11) 2005-02-27: Yet another scheme for controlling chunk updates triggered by chunk derivers: The interrupt is detected by the outer update, which is then restarted. The inner update does not happen again because derivers are called only once at a particular level. Added ability to postpone updates of derivees, to avoid repeated updates of the same irrelevant downstream derivee during debugging of upstream chunk. (Version 1.4.10) 2005-01-25: Add utility 'stream-indent' to outin.lisp 2004-11-07: Resurrected 'intercept' and 'pass' with improved type checking. Altered 'ytools-logical-pathname-def' so it returns a second argument (the 'obj-version' of the pathname) (Version 1.4.8.7) 2004-10-30: Changed output for warning message in 'decipher-readtable' (slurp.lisp). (Version 1.4.8.6) 2004-10-29: Wrapped #+openmcl around code referring to ccl package. (Version 1.4.8.5.) 2004-10-26: Fixed bug in outin whereby nonstreams were making it into the variable 'out-streams*' (probably because Allegro does something odd to streams when it closes them). (Version 1.4.8.4) 2004-10-05: One more tweak to logic of 'compilable' in lprec-check-compile. (Version 1.4.8.3) 2004-10-04: Fixed bugs introduced by fixes of 10-02. Added second value returned by 'ytools-logical-pathname-def' (the bin directory) (Version 1.4.8.2) 2004-10-02: Replaced 'lisp:' with 'cl:' in a couple of files. Stopped 'fload' from trying to compile files with types other than Lisp source. (Version 1.4.8) 2004-10-01: Define 'ytools-logical-pathname-def' to make it easy to find the definition of a YTools logical pathname. (Version 1.4.7) 2004-09-29: Added convenience function (in-ytools), which sets *package* and *readtable* to their proper YTools values. (Version 1.4.6) 2004-09-26: Patch 'subr-synonym' to cope with bug in OpenMCL. (Version 1.4.5) 2004-09-19: Define 'is-list' in base.lisp as synonym for 'listp'. Minor change to 'datafun-table' in datafun.lisp. 2004-09-16: Added field :initbind e to (x :in l) clause of 'repeat'. The expression e is evaluated and bound to x initially. This is purely to satisfy some compilers that complain if x is declared to be of some type incompatible with an initial value of nil. (Version 1.4.4) 2004-09-11: Change 'ytools-module-load' in module.lisp so that expansion of module is evalualated when module is loaded. 2004-09-02: Replace 'assoc' with 'assq' in expansion of 'alist-entry' (to avoid confusing Nisp). (Version 1.4.3) 2004-08-22: Interaction between 'outin' and pretty-printer streamlined. 2004-08-11: Stuff after :proceed and :prompt-for is now a list of args suitable for 'out'. In the case of :prompt-for, the last element is the default, and the out-args don't include that last element. 2004-08-09: Change in bq.lisp to allow other files to use its facilities. Invisible to users. Changed logic in 'fload' so after asking whether to compile a previously uncompiled file it doesn't consider loading old (nonexistent) object code. (Version 1.4.2) 2004-08-06: Introduced :|| as prettier synonym for :\| 2004-08-03: Altered implementation of '!' dispatch macro; change invisible to users. Another invisible change to subr-synonym (allows specification of numargs). 2004-07-30: Made ytdoc.pdf part of the CVS system, so it will be part of the "nightly snapshot." (Version 1.4.1) 2004-07-25: Adding 'nthrest' 2004-07-10: Simplified Qvar as type 2004-07-09: Added gen-var 2004-07-06: Tiny bug fix in setter 2004-06-25: Further enhancements to alref. . Made packages work in names of YTools logical pathnames. Fixed bug in 'repeat' for var notation (v e0 :then e1) so it's the same as (v = e0 :then e1). Got 'fload-recheck' working correctly. Version 1.4 2004-06-24: Improved definition of 'alref.' so it allows specification of equality test, access method, and new-entry builder. Allow package names to occur inside YTools logical pathnames. 2004-04-20: Added 'val-or-initialize' and its notational variant, 'memoize-val', to misc. Tightened definitions of 'alref' and 'alref.' . 2004-03-14: Added debug.lisp 2004-03-09: Changes for portability. 2003-12-17: (branch ytools-1-2-dev) Rejiggered logic to checking whether to recompile in files.lisp. Eventually this will be right, by the monkeys-and-typewriters theorem. 2003-12-11: (branch ytools-1-2-dev) Rewrote file-update checker to get right the logic of when to recompile or reload a file. 2003-11-08: Slight change to an error message in pathname.lisp. 2003-10-28: Changed ytload.lisp to allow .lmd files to be in arbitrary places 2003-10-27: Eliminated Allegro check in depend.lisp" 2003-10-26: Added 'ytcopy.lisp' utility 2003-08-24: Declared var fload-compile* properly. Better y-n query handling in one place Still struggling with precise definition of 'depends-on' 2003-08-15: Slight reorganization of 'repeat.lisp' to split some local functions off so they can be used elsewhere. 2003-08-14: Changed handling of datafuns on property lists, adding 'datafun-on-plist'. In mapper.lisp, had to explicitly declare that 'mapmac' property is stored on symbol plists. Ditto for 'match-code' property in setter.lisp. Slight bug fix in setter.lisp 2003-08-06: Fixed bug in pathname.lisp 2003-08-03: Added '--' to base.lisp 2003-07-13: Replaced :continue with :proceed in 'signal-problem'. Made the string after :proceed evaluable. Local Variables: mode:text fill-prefix:" " End: