Fri Jan 13 15:05:29 1984 by jkf the 68k version will now record function argument counts for lambdas. It still doesn't do lexprs (even those with &optional and &rest forms). Wed Dec 7 16:13:08 1983 by sklower changed profiling code to refer to mcnts instead of mcounts so that the C variable could be so renamed to make sure that all names are distinguishable in the first 6 characters. This change is invisible to users. Tue Nov 22 08:59:34 1983 by jkf added the -W switch. After compilation (but before assembly) it aborts the compilation with an error status if there were any warnings. (now: version 8.39) Tue Oct 25 14:45:48 1983 by jkf fixed it so that if a lisp error occurs when compiling a function, the name of the function being compiled will be printed (now: version 8.38) Mon Oct 10 07:42:54 1983 by jkf fixed bug in liszt (tlev) (now: version 8.37) Sat Jul 30 15:37:40 1983 by layer open code vset. Move all vector stuff to vector.l. Files: func.l, decl.l, vector.l, and cmake.l (now: version 8.33) Mon Jul 25 21:29:54 PDT 1983 by layer fixed 'liszt' to mung object file header for the sun File: tlev.l (now: version 8.32) Mon Jul 25 07:05:49 1983 by jkf fix bug whereby -mr would cause an 'comma not in backquote error' because the escape character was / instead of \ when reading /usr/lib/lisp/autorun.xxx (now: version 8.31) Sat Jun 25 13:28:10 1983 by jkf Turn off uctolc converstion before printing bindtab. This is useful for liszt in opus 38.65 and greater since it will eliminate unnecessary |'s in the bindtab if uctolc is need to compile the file (now: version 8.29) Thu Jun 16 21:52:59 1983 by jkf fixed compilation of &aux for vax version. Now &aux (foo foo) will work if foo is special. (now: version 8.28) Wed May 4 18:32:46 1983 by layer added sun autorun header to io.l (now: version 8.27) Thu Mar 24 08:24:53 1983 by jkf -x file will now be placed in the same place as the output file (instead of the input file). (now: version 8.25) Sat Mar 19 17:49:18 1983 by jkf mixed in the 68k liszt source. (now: version 8.24) Mon Mar 14 13:14:26 1983 by jkf liszt used to open code 'times' if all operands were fixnums. Thus (times 256 256 256 256) would open code to a 0 fixnum. This is clearly wrong and liszt will now not convert times, add, etc to their fixnum equivalents. If you want fixnum semantics then you must use fixnums. Another bug was fixed: d-functyp would return the wrong thing give a name bound to a foreign function. now it returns 'lambda. files affected: datab.l decl.l (now: version 8.23) Tue Feb 22 08:43:44 1983 by jkf force jump to vecindexerr to use 'jmp', since the object file might be large and the assembler is stupid (now: version 8.22) Thu Feb 10 20:39:42 1983 by jkf open coded vectorp and vectorip, vsize-... (now: version 8.21) Thu Jan 20 01:57:01 1983 by layer Added three features to liszt command line processing: -e evaluates before compilation. -i loads before compilation. -S -o filename names .s file. file: tlev.l (now: version 8.20) Mon Jan 17 09:41:12 1983 by jkf added arg number checking and open coded &keywords. (now: version 8.19) Sun Jan 16 10:05:01 1983 by jkf fixed nasty bug in d-exp which would show up if a macro returned a recursive call it itself (now: version 8.18) Wed Jan 12 10:43:53 1983 by jkf added open coding of vref functions (now: version 8.17) Wed Oct 27 20:24:47 1982 by jkf removed references to sys_ functions, replaced them with sys: functions so code will be more portable. file: tlev.l Wed Oct 27 08:15:14 1982 by jkf discovered that making 'declare' a function is a bad idea because if the compiler executes an interpreted function with local declarations, those local declarations will seem like declarations for the function begin compiled. Thus declare is no longer a special function in the compiler: it must be seen by the compiler to have an effect. Added the user callable function liszt-declare which will have an effect just like declare used to: the compiler will recognize it when compiling and it can be evaluated by a user function. (now: version 8.16) Mon Oct 25 22:55:37 1982 by jkf removed If macro definition from cmacros.l . It is now in the default franz. Mon Oct 25 09:15:18 1982 by jkf catch the sigterm signal and die after removing the /tmp file. (now: version 8.15) Tue Oct 19 15:56:07 1982 by jkf fixed bugin cc-arg wherein a (arg (foo)) would be compiled incorrectly (it was calling zerop on a non number). Added checks for cmacro and macro-autoload properties. When doing macro expansion, had it stop if the same car was returned. (now: version 8.14) Mon Oct 18 23:27:14 1982 by layer Fixed bug in function cc-quote. Parens in an If statement were messed up. Sat Oct 9 04:35:23 PDT 1982 by layer Np-reg, Lbot-reg, oLbot-reg are now constants. Changes made to expr.l and io.l. Thu Oct 7 01:02:26 1982 by jkf fixed bug in the compiler. The compiler had neglected to enforce the rule that 'macros' not be defined as local functions. Now that is checked (modification to tlev.l). Wed Oct 6 22:53:36 1982 by jkf added check to make sure that a file doesn't declare a function to be local that has already had a compiled call made to it. This is done by placing a t under indicator g-stdref for all symbols called in the 'standard' way. (now: version 8.13) Wed Oct 6 13:29:27 PDT 1982 by layer put the loading of chead.l (in array.l datab.l decl.l expr.l fixnum.l funa.l funb.l func.l io.l tlev.l util.l) under include-if control. Also changed chead.l. Tue Oct 5 23:36:09 PDT 1982 by layer removed function d-call from expr.l, since it isn't used anymore. Tue Oct 5 23:00:09 PDT 1982 by layer added sccs'ed file scmake.l, so that an all interp'd version of the compiler can be made without deleting all the .o files. Changes were also make to the Makefile. snliszt (formerly slownliszt) now depends on source files (like nliszt depends on .o files). Tue Oct 5 22:22:59 1982 by jkf added argument checking. This involved mods to expr.l to do the checking and to tlev.l to save argument number info while compiling. The file /usr/lib/lisp/fcninfo.l contains a description of what is known about C functions. (now: version 8.12) Mon Oct 4 14:23:29 1982 by jkf turn off [load ...] message when loading in lisztrc file Tue Sep 28 09:30:36 1982 by jkf change tmp file name back to jkfnnnnn (now: version 8.11) Wed Jul 21 13:43:56 PDT 1982 by layer function "liszt" in tlev.l now returns the true assembler exit status (if the compile goes that far). Sat Jul 3 18:01:25 1982 by jkf open code getaux and getaccess (now: version 8.10) Wed Jun 30 18:58:32 1982 by jkf look for liszt rc files without extensions. now we look in 12 places for the lisp init file: { . , $HOME } { .lisztrc , lisztrc } { .o , .l , } (now: version 8.09) Thu May 27 08:19:00 1982 by jkf fixed bug in d-fixnump which caused liszt to assume too often that arguments are all fixnums (now: version 8.08) Wed May 12 13:46:03 1982 by jkf new declaration scheme died when the object being declared was a list. e.g (declare (fixnum (foo fixnum flonum)). Fixed declare-handler so that cases like this are ignored. (now: version 8.07) Fri May 7 19:28:04 1982 by jkf allow (function (nlambda ()...)) and (function (lambda () ..)) (now: version 8.06) Thu May 6 15:03:50 1982 by jkf support local declarations. They are stacked on g-decls. localf and macarray don't fit in too well, they should be fixed. fixnum declarations now have meaning. They will allow the compiler to convert from functions like 'add1' to 1+. 'declare' is now a function in the compiler so declarations may be fasl'ed in. [this was removed Oct 27, 1982] Thu Apr 22 20:48:25 1982 by jkf #' returns a symbol now, instead of the getd of the symbol. This was required for maclisp compatibility. (now: version 8.05) Wed Apr 21 07:50:41 1982 by jkf load in init file before compiling. look in . first, then $HOME. look for .liszt.o, .lisztrc.l, lisztrc.o, lisztrc.l Upon interrupt, remove temp file and exit (now: version 8.04) Mon Apr 12 23:22:37 1982 by jkf open code 'function'. Now it will cause another function to be generated and compiled and the function call returns the bcd header for the newly created function liszt-process-forms may be filled with forms to compile while compiling a form. Unlike liszt-eof-forms, liszt-process-forms are compiled at the next opportunity. (now: version 8.03) Wed Mar 31 08:47:46 1982 by jkf fixed bug in which (> (or nil 9) 0) would return true. cc-eq now rebinds g-trueop and g-falseop. (now: version 8.02) Wed Mar 31 08:24:27 1982 by jkf added a new file to liszt: lversion.l It is not sccsed and it just contains the version number. This will allow the version number to be changed with ease whenever a modification is made. start it at 8.01 (now: version 8.01) Fri Mar 19 11:17:12 1982 by jkf did distribution. (now: version 8.00) Fri Feb 19 09:56:50 1982 by jkf fixed e-docomment so that newlines in the comment will not cause assembler problems [io.l] Wed Feb 17 12:46:24 1982 by jkf to version 8.0 (to correspond with Opus 38) Wed Feb 10 21:28:41 1982 by jkf fixed a bug in the return function and a possible bug in go. both bugs have to do with returning or going through a catch or errset, which is a pretty strange thing to do anyway. The fix was to keep track of the number of catches and errsets before the prog to be returned from or gone into. I modified d-pushframe to always push 3 args, so we can know how long each frame we pop will be. Sat Dec 5 11:58:36 1981 by jkf open coded boole (mods to decl.l and funa.l). used the open coding capability of fixnums. Added three internal functions fixnum-BitXor, fixnum-BitAndNot fixnum-BitOr, which are the three functions which the vax can do. Mon Oct 26 21:15:36 1981 by jkf fixed bug in d-supercxr (funa.l) which made this function (cond ((setq y (cxr n zip)) (print 'hi)) (t (print 'lo))) always prints 'hi'. The problem was that only jump on true was checked if the value of a cxr was stored somewhere. In the case above we want to jump on nil. Sat Oct 24 16:41:03 1981 by jkf -*- to version 7.1 -*- Added the 'a' option to liszt, which if set will cause a special form to be output after a function is defined. that special form will put a 'fcn-info' property on the function's property list. the form of the fcn-info property is (argdesc compileinfo) argdesc may be nil or (x . y), the later meaning that there are a minumum of x args required and a maximum of y. Currently lexprs just put 'nil' there, but soon I will introduce a way to declare min and max args for lexprs via a declare. The compileinfo is a string saying what file this came from and when it was compiled. Wed Oct 21 20:19:53 1981 by jkf added functions <&, =&, and >& which are fixnum only versions of <,= and >. Tue Oct 20 22:14:41 1981 by jkf fix < and > compiling so that they are only open coded if we can be sure that both operands are fixnums. For now this amounts to checking that one of the operands is a fixnum. We should augment to this check also for type declarations. Sat Oct 17 11:47:50 1981 by jkf since most fixnums are in the range 0 to 1023 we can probably win by doing inline checking in that range. Thus I've added the function d-fixnumbox which does an inline reboxing if the number is between 0 and 1023 and otherwise calls qnewint. The file changed was fixnum.l Thu Oct 8 23:35:34 1981 by jkf added cc-= to open code = if possible. It looks for a fixnum as one of the arguments and converts the = expression to (eq (cdr ..) (cdr ..)) which should do the trick.