9-May-83 05:38:52-EDT,676;000000000000 Return-path: Mail-From: HANSON created at 9-May-83 05:36:28 Date: Mon, 9 May 1983 05:36 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: New Mailing List This message is both to announce a new mailing list, and use it for the first time. This mailing list will supersede Scheme-Coders, and should be used for implementation details only. Use bug-scheme and info-scheme for more general things. The new system is now available (Microcode 1.16, Runtime 3.26). A number of bugs have been fixed; the compiler now works, and MOVE-CURSOR has been implemented. See SCM:VERSIONS.SCM for details. Copies are available from me. Chris 9-May-83 05:56:46-EDT,1567;000000000000 Return-path: Mail-From: HANSON created at 9-May-83 05:53:09 Date: Mon, 9 May 1983 05:53 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: Compiler Timings I ran a number of timing tests on the compiler. For each test, I used the following to measure times: (DEFINE (TIME) (LET ((START (RUNTIME))) (TEST) (- (RUNTIME) START))) The first test was a simple loop: (DEFINE (TEST) (LOOP 5000)) (DEFINE (LOOP N) (IF (EQ? 0 N) '() (LOOP (MINUS-ONE-PLUS-FIXNUM N)))) w/primitive combinations w/o interpreted: 9.31 seconds 13.82 seconds compiled: 5.17 8.20 % improvement: 44 41 ratio: 1.8 1.69 I also timed (LOOP 0) just to see how much overhead there was, but it was only .04 seconds, so I disregarded it. The second test was: (DEFINE (TEST) (FIB 15)) (DEFINE (FIB N) (COND ((EQ? 0 N) 0) ((EQ? 1 N) 1) (ELSE (PLUS-FIXNUM (FIB (MINUS-ONE-PLUS-FIXNUM N)) (FIB (MINUS-FIXNUM N 2)))))) w/primitive combinations w/o interpreted: 5.80 seconds 8.68 seconds compiled: 3.14 5.20 % improvement: 46 40 ratio: 1.85 1.67 Well. Considering that these examples were constructed in such a way as to maximize the ratio between interpreted and compiled code, I don't expect that we will get much better performance out of the compiler than a factor of about 1.8 or so. The results are not especially encouraging, but at this point I suppose we should take what we can get. It's time to build a real compiler, I guess. 11-May-83 06:27:44-EDT,1242;000000000000 Return-path: Mail-From: HANSON created at 11-May-83 06:25:59 Date: Wed, 11 May 1983 06:25 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: Microcode 1.17 I have done a number of optimizations in this microcode. The result is a speedup of the interpreter's basic operations by nearly 20%. The timing tests were made using the programs in SRC:TIME-TEST.SCM, and the results were as follows: Microcode Test 1.16 1.17 % 1: Counting loop 13.78 11.24 81.6 2: Fib 8.66 7.01 80.9 3: Counting loop w/prims 9.33 7.58 81.2 4: Fib w/prims 5.80 4.65 80.1 5: 1000 CDR scan loop 1.88 1.55 82.4 6: 1000 CDR scan loop w/prims 1.44 1.17 81.2 All times are in seconds. "w/prims" means that the code was compiled using primitive combinations. Otherwise it uses regular combinations. % is the ratio between the times for 1.17 and 1.16. The changes: (1) The FREE pointer is now always in a machine register. (2) The PCLSR save sequence was rewritten for maximum speed. (3) Many rack operations were in-line coded by hand. I haven't yet found any bugs, but it is likely that one or two is lurking around somewhere... Let me know if anything strange happens. Chris 13-May-83 04:54:18-EDT,761;000000000000 Return-path: Mail-From: HANSON created at 13-May-83 04:49:00 Date: Fri, 13 May 1983 04:48 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: New Cross Syntaxer A number of changes have been installed, including new syntax for ITERATE and COLLECT. The bug which caused (MAKE-ENVIRONMENT) to do the wrong thing has been fixed. I did some tuning of the cross-syntaxer, which involved recoding some of the bottom level routines in MacLisp. This speeded up the syntaxer by 40% or so, at the cost of wiring down the formats for symbols, numbers and strings in MacLisp. Thus any changes made to these in SCM:SCODE.SCM must be reflected into CROSS:SCOLD.LISP. The new syntaxer will be in System 3.28, to be released soon. 15-May-83 03:09:23-EDT,1070;000000000000 Return-path: Mail-From: HANSON created at 15-May-83 03:05:58 Date: Sun, 15 May 1983 03:05 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: History Timing In the spirit of my last message concerning interpreter time, here is the next chapter. I have implemented the history mechanism, and as expected, there is a pretty noticeable decrease in performance. The 20% savings that we got from the last batch of changes has been reduced to 10% by the implementation of history. At least it still goes faster. Here is the updated table: Microcode Test 1.16 1.17 1.18 % 1: Counting loop 13.78 11.24 12.24 88.8 2: Fib 8.66 7.01 7.70 88.9 3: Counting loop w/prims 9.33 7.58 8.38 89.8 4: Fib w/prims 5.80 4.65 5.20 89.7 5: 1000 CDR scan loop 1.88 1.55 1.68 89.4 6: 1000 CDR scan loop w/prims 1.44 1.17 1.28 88.9 All times are in seconds. "w/prims" means that the code was compiled using primitive combinations. Otherwise it uses regular combinations. % is the ratio between the times for 1.18 and 1.16. 26-May-83 09:57:42-EDT,1039;000000000000 Return-path: Mail-From: AC created at 26-May-83 09:57:07 Date: 26 May 1983 0957-EDT From: Anthony J. Courtemanche Subject: Windows To: Hanson@MIT-OZ cc: Scheme-I@MIT-OZ JMILLER and I discussed some of the problems I am having with the window system. Specifically, the speed at which characters are printing. Our conclusion was that tyo-ing over the explode of a structure to be printed may not be the right thing. Basically it is too slow when contained within any type of loop (iterate or not). Jim suggested that string operations might be the right thing. If microcode functions existed which performed things such as truncate-string, append-string, insert-string, remove-unprintable-characters-from-string, etc., output strings of each line in a window could be printed in a jiffy. Until this is decided, I will work on reducing the time it takes to keep track of the cursor etc. Please let me know what you think. Anthony ------- 26-May-83 14:06:02-EDT,1116;000000000000 Return-path: Mail-From: AC created at 26-May-83 14:03:48 Date: 26 May 1983 1403-EDT From: Anthony J. Courtemanche Subject: Windows To: Hanson@MIT-OZ cc: Scheme-I@MIT-OZ After talking with AAB this afternoon, a few more sensible ideas came up. How do these sound? A structure needs to be printed somewhere in a window on the screen. The structure is passed to a formatting package which knows the dimensions of the window. The formatting package pretty-prints the structure to fit the width of the window (we assume we have rectangular windows) but the output of the pretty-printer goes into a vector whose elements are strings corresponding to each line in the window. This vector of strings is passed to the window-package. Each line of the structure has been "custom fit" to the window, so all the window has to worry about is what to do if it gets to the bottom of the window. If at the bottom truncation does occur, the window returns what has been truncated. Let me know if this makes any sense. Anthony ------- 26-May-83 14:35:59-EDT,533;000000000000 Return-path: Mail-From: JMILLER created at 26-May-83 14:32:29 Date: 26 May 1983 1432-EDT Sender: JMILLER at MIT-OZ Subject: Re: Windows From: JMILLER at MIT-OZ To: AC at MIT-OZ Cc: Hanson at MIT-OZ, Scheme-I at MIT-OZ Message-ID: <[MIT-OZ]26-May-83 14:32:28.JMILLER> In-Reply-To: Your message of 26 May 1983 1403-EDT That sounds like the way the Jericho window package works. I am supposedly getting complete documentation on the Jericho libraries (including the window package) to look at. --Jim 26-May-83 16:41:13-EDT,745;000000000000 Return-path: Mail-From: AAB created at 26-May-83 16:41:01 Date: 26 May 1983 1641-EDT From: Andrew A. Berlin Subject: Re: Windows To: AC@MIT-OZ cc: scheme-i@MIT-OZ In-Reply-To: Your message of 26-May-83 1403-EDT One addition to ac's description: The formatting package should also be passed an abbreviation point. If something only needs the first two lines of the printed representation of a structure (i.e. my "look" function), there is no need for the formatter to compute the pretty-printed representation for the rest of the lines. If the abbreviation point is 0, the formatter should return as many lines (vector elements) as are required to print the entire structure. ---Andy ------- 27-May-83 14:40:38-EDT,403;000000000000 Return-path: Mail-From: JMILLER created at 27-May-83 14:36:28 Date: 27 May 1983 1436-EDT Sender: JMILLER at MIT-OZ Subject: PCLuser Timings From: JMILLER at MIT-OZ To: Scheme-I at MIT-OZ Message-ID: <[MIT-OZ]27-May-83 14:36:27.JMILLER> Hal and I did a gross test: we eliminated the PCLuser in EXECUTE_CONT, and found that the interpreter speed increased only 33%. --Jim 28-May-83 10:32:20-EDT,725;000000000000 Return-path: Mail-From: JMILLER created at 28-May-83 10:32:10 Date: 28 May 1983 1032-EDT Sender: JMILLER at MIT-OZ Subject: Compiler Sources From: JMILLER at MIT-OZ To: Scheme-I at MIT-OZ Message-ID: <[MIT-OZ]28-May-83 10:32:08.JMILLER> I have moved the current (believed to be working) compiler sources and .HEX to RSCM: ... I don't believe that this will be loaded into the default bands, but I leave that decision to Chris. If I don't hear otherwise, I will move them to CODE: and SCM: on the SRM when I get in on Tuesday. --Jim P.S. -- I am about to start a new round of changes to the compiler sources in SCM: on the 20 ... this will implement open coding of some primitives. 28-May-83 10:37:21-EDT,845;000000000000 Return-path: Mail-From: JMILLER created at 28-May-83 10:36:24 Date: 28 May 1983 1036-EDT Sender: JMILLER at MIT-OZ Subject: SRM setup From: JMILLER at MIT-OZ To: Scheme-I at MIT-OZ Message-ID: <[MIT-OZ]28-May-83 10:36:23.JMILLER> I spent some time on Friday playing around with the SRM setup of files. In my names setup there are declarations for PSLSHAD and so on, so that we can boot PSL and Scheme off of the SRM. The timings went out yesterday. I still don't understand why the end of my AUTOSTART file, which should have loaded PSL and started it going, never got executed at startup time. Maybe someone can look at this. We still need to figure out how to set things up so that when the students use the systems they will each have individual directories for message files or whatever. --Jim 28-May-83 17:04:04-EDT,990;000000000000 Return-path: Mail-From: HANSON created at 28-May-83 13:01:36 Date: Sat, 28 May 1983 13:01 EDT From: HANSON@MIT-OZ To: JMILLER@MIT-OZ Cc: Scheme-I@MIT-OZ Subject: SRM setup In-reply-to: Msg of 28 May 1983 10:36-EDT from JMILLER Date: Saturday, 28 May 1983 10:36-EDT From: JMILLER To: Scheme-I Re: SRM setup I spent some time on Friday playing around with the SRM setup of files. In my names setup there are declarations for PSLSHAD and so on, so that we can boot PSL and Scheme off of the SRM. The timings went out yesterday. Strictly speaking, the extra logical names aren't necessary, but they are nice to have. I still don't understand why the end of my AUTOSTART file, which should have loaded PSL and started it going, never got executed at startup time. Maybe someone can look at this. This is probably because the Pascal system doesn't support recursive calls to stream files. 1-Jun-83 08:06:55-EDT,1957;000000000000 Return-path: Mail-From: JMILLER created at 1-Jun-83 08:04:48 Date: 1 Jun 1983 0804-EDT Sender: JMILLER at MIT-OZ Subject: Things To Do From: JMILLER at MIT-OZ To: Scheme-I at MIT-OZ Message-ID: <[MIT-OZ] 1-Jun-83 08:04:47.JMILLER> Here is a list of things I would like to see happen soon-ish. Most of them Chris has on his list of things to do (which I hope will soon be kept on-line). Once it is on line, people should be free to grab an item, mark it as being worked on, and take it over. I still think Chris should have a look at the end result and make sure it fits well into the overall system -- he is the only one now with an overview of the entire runtime system. (1) MIN and MAX are missing. (2) Add RANDOM function (in my directory on the SRM) ... need to think about the comment in Knuth that the low order bits are not reliable! (3) Make EXPT work right in the generic arithmetic system. (4) Improve operation of generic handling of binary operators with mixed floating and bignum arguments. (5) In preparation for an "automated problem set loader" we need a way to restore a disk band, and perhaps a way to save one with an autostart function to be run when it is reloaded. (6) For same reason as (5), NMODE should look for a well-known file name when SCHEME returns, and should read the name of a file to be loaded if it is found. (7) Start thinking about what we need to do to get rid of the FILER. This probably includes things like adding commands to list files to the spooler, which includes changing the file type to ASCII from TEXT, or somehow making Scheme source files be of type TEXT to begin with. (8) "Prettiness" point: the one line function key display is nice in NMODE, but it ought to go away when you enter Scheme, and it would be nice to mark the boundary between the top and bottom function keys. --Jim 1-Jun-83 09:16:55-EDT,211;000000000000 Return-path: Mail-From: AAB created at 1-Jun-83 09:14:03 Date: 1 Jun 1983 0914-EDT From: Andrew A. Berlin Subject: Min and Max To: scheme-i@MIT-OZ I'll do them. ------- 1-Jun-83 10:27:14-EDT,374;000000000000 Return-path: Mail-From: AAB created at 1-Jun-83 10:25:42 Date: 1 Jun 1983 1025-EDT From: Andrew A. Berlin Subject: Min and Max To: scheme-i@MIT-OZ Min and Max are done. They are in Src:minmax.scm until someone puts them in a better place. They have been tested on the 20 but not on the chipmunks. ---Andy ------- 1-Jun-83 16:20:12-EDT,629;000000000000 Return-path: Mail-From: AC created at 1-Jun-83 15:54:31 Date: 1 Jun 1983 1554-EDT From: Anthony J. Courtemanche Subject: Strings and Windows To: hanson@MIT-OZ cc: scheme-I@MIT-OZ Does the string operation insert-string care how much string space has been allocated to each string? If not, I suppose it would make sense to initialize a window with the null string since the window really doesn't contain anything and if the window doesn't contain anything, a refresh of that window shouldn't print any spaces on the screen. Anthony ------- 1-Jun-83 17:34:26-EDT,526;000000000000 Return-path: Mail-From: AAB created at 1-Jun-83 17:33:01 Date: 1 Jun 1983 1733-EDT From: Andrew A. Berlin Subject: New Mailing List To: scheme-team@MIT-OZ The mailing list SCHEME-TEAM has been created per request of Jim Miller.Miller. Mail sent to SCHEME-TEAM goes to everyone who is currently working on the scheme project (not just people interested in implementation details). Scheme-team is routed via SCHEME-I so that it is logged in src:scheme-i.text. ------- 1-Jun-83 17:35:52-EDT,351;000000000000 Return-path: Mail-From: AAB created at 1-Jun-83 17:35:27 Date: 1 Jun 1983 1735-EDT From: Andrew A. Berlin Subject: Re: Things To Do To: JMILLER@MIT-OZ cc: Scheme-I@MIT-OZ, AAB@MIT-OZ In-Reply-To: Your message of 1-Jun-83 0804-EDT Random is done, but not sufficiently tested for randomness. ---Andy ------- 2-Jun-83 05:47:27-EDT,840;000000000000 Return-path: Mail-From: JMILLER created at 2-Jun-83 05:46:31 Date: 2 Jun 1983 0546-EDT Sender: JMILLER at MIT-OZ Subject: PS2 Problem From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 2-Jun-83 05:46:30.JMILLER> Todd Cass tried to start on Problem Set 2 on the Chipmunks. We gave him a copy of RANDOM as written by AAB and me. Unfortunately, he immediately ran into a problem. It appears that COERCE-BIGNUM-TO-FIXNUM fails to do the coercion in certain cases. If you load #5:/USERS/AAB/RANDOM.SCM and call (RANDOM 10) you will get a "small bignum" (9, I think, though it prints with a leading 0) as the result of the final QUOTIENT operation. This number will not coerce down, and as a result operations such as ">" handle it incorrectly. --Jim (On behalf of Todd and AAB) 2-Jun-83 11:32:04-EDT,385;000000000000 Return-path: Mail-From: JMILLER created at 2-Jun-83 11:29:31 Date: 2 Jun 1983 1129-EDT Sender: JMILLER at MIT-OZ Subject: Meetings (ugh!) From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 2-Jun-83 11:29:30.JMILLER> How about meeting on Tuesdays and Thursdays for lunch in the playroom at noon? Everybody bring your own.... --Jim 2-Jun-83 16:47:25-EDT,1455;000000000000 Return-path: Mail-From: JMILLER created at 2-Jun-83 16:45:03 Date: 2 Jun 1983 1645-EDT Sender: JMILLER at MIT-OZ Subject: Compiler From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 2-Jun-83 16:45:02.JMILLER> There is an apparently working compiler available. On the SRM, the files to load are listed in /USERS/JMILLER/LOAD-COMPILER. You can either load this file itself, or look at it and copy the appropriate files to a local disk and load from there. On the SRM, a band with a loaded compiler is /USERS/JMILLER/SCHEME-COMPILER. To use the compiler, use the function FAST. The suggested mode of operation is to compile a single function at a time (you can compile entire environments, but it isn't worth it). The following seem to work: (FAST FOO) -- compile FOO, yielding a function that works identically (hopefully) to the original. This is an abbreviation for (FAST FOO 'WITH-DELIBERATE-SPEED). (FAST FOO 'CARELESS-SYSTEM-CALLS) -- compile FOO, but in-line code calls to SYSTEM-PAIR-CAR, SYSTEM-PAIR-CDR, SYSTEM-HUNK3-CXR0, SYSTEM-HUNK3-CXR1, SYSTEM-HUNK3-CXR2, and SYSTEM-VECTOR-REF. In-line coded functions are much smaller and faster, but DO NOT do any error checking (non-pair arguments, non-vector arguments, vector range errors). (FAST FOO 'WITH-RECKLESS-ABANDON) -- Same as 'CARELESS-SYSTEM-CALLS, but also in-line code CAR, CDR, and VECTOR-REF. --Jim 2-Jun-83 16:47:45-EDT,356;000000000000 Return-path: Mail-From: JMILLER created at 2-Jun-83 16:47:18 Date: 2 Jun 1983 1647-EDT Sender: JMILLER at MIT-OZ Subject: You Asked For It From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 2-Jun-83 16:47:17.JMILLER> SRC:SCHEME.GLOBAL-VARS has them in alphabetical order. Have fun. --Jim 3-Jun-83 04:04:03-EDT,305;000000000000 Return-path: Mail-From: HANSON created at 3-Jun-83 04:02:25 Date: Fri, 3 Jun 1983 04:02 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: Your Files? The following files will be flushed from SCM: on Monday. If you want them, get your own copies: B.SCM CURSORPOS.SCM 3-Jun-83 05:34:50-EDT,558;000000000000 Return-path: Mail-From: HANSON created at 3-Jun-83 05:33:53 Date: Fri, 3 Jun 1983 05:33 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: New Conventions The next band (4.5) will no longer have the INTERPRETER-DATA-STRUCTURES package. The abstraction has been spread out into separate global names (e.g. ENVIRONMENT-PARENT, ENVIRONMENT-BINDINGS, PROCEDURE-ENVIRONMENT, etc.). For details, see SCM:USTRUC.SCM when the band is released. I took the liberty of changing all of the code in SCM: to reflect this. Chris 3-Jun-83 14:19:16-EDT,598;000000000000 Return-path: Mail-From: AC created at 3-Jun-83 14:16:19 Date: 3 Jun 1983 1416-EDT From: Anthony J. Courtemanche Subject: Compound-procedure? To: hanson@MIT-OZ cc: scheme-team@MIT-OZ While trying to run the pp in band 4.4, the error Unbound Variable compound-procedure? is returned. I checked and compound-procedure? is not called explicitly in my code. My only guess as to the problem is that it might be happening in create-pp-object (access definition procedure interpreter-data-structures). Anthony ------- 3-Jun-83 15:46:58-EDT,475;000000000000 Return-path: Mail-From: AAB created at 3-Jun-83 15:45:41 Date: 3 Jun 1983 1545-EDT From: Andrew A. Berlin Subject: Chipmunk in 749 To: scheme-team@MIT-OZ On Saturday I will copy Chris's disk onto the one in 752. As of this moment, there aren't any useful files on the disk in 749. If you use it between now and Saturday night, please make copies of what you did on a diskette, so that your work won't be lost. ---Andy ------- 3-Jun-83 15:59:55-EDT,351;000000000000 Return-path: Mail-From: AAB created at 3-Jun-83 15:54:26 Date: 3 Jun 1983 1554-EDT From: Andrew A. Berlin Subject: Previous message To: scheme-team@MIT-OZ In my previous message I stated I would copy Chris's disk onto the one in 752. I meant the one in 749 (old habits are hard to break). ---Andy ------- 3-Jun-83 17:16:54-EDT,1036;000000000000 Return-path: Mail-From: AC created at 3-Jun-83 17:12:46 Date: 3 Jun 1983 1712-EDT From: Anthony J. Courtemanche Subject: band 4.5 To: hanson@MIT-OZ cc: scheme-team@MIT-OZ I hope I'm not jumping the gun, but 4.5 has some severe problems. For instance: 1. ==> (trace (access fits-within? scheme-formatter)) [COMPOUND-PROCEDURE MINUS-FIXNUM] likewise: ==> (trace new-line) [COMPOUND-PROCEDURE RESET!-X-CURSOR] On inspection, it is true that the wrong procedure is advised. 2. After (untrace), I started receiving errors of the form: Wrong Number of Arguments ([COMPOUND-PROCEDURE Illegal Datum in first argument position ([PRIMITIVE-PROCEDURE VECTOR-REF] (COMPOUND-PROCEDURE ADVICE-MARKER] ENTRY [COMPOUND-PROCEDURE TRACE-ENTRY-ADVICE]) 0) 3. The function used to unsyntax a structure (procedure) does not work on something like (define foo 14). It returns a "not a procedure" error message. Anthony ------- 4-Jun-83 11:41:11-EDT,444;000000000000 Return-path: Mail-From: JMILLER created at 4-Jun-83 11:37:23 Date: 4 Jun 1983 1137-EDT Sender: JMILLER at MIT-OZ Subject: Global Environment From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 4-Jun-83 11:37:21.JMILLER> I have augmented SRC:SCHEME.GLOBAL-VARS with my suggestions for the classification of the names there. Comments or questions would be appreciated. --Jim 4-Jun-83 11:56:09-EDT,716;000000000000 Return-path: Mail-From: AAB created at 4-Jun-83 11:55:42 Date: 4 Jun 1983 1155-EDT From: Andrew A. Berlin Subject: Global Environment comments To: scheme-team@MIT-OZ Here are some commants on Jim's global variable list: Users already know about *args*, *proc*, and *result*. They were in the dec-20 manual, I believe. Users should have a way to see what procedures are advised. Whether that means telling them about *advised-procedures*, I don't know. Random comment: I think TRACE should default to TRACE-ENTRY, and a new command, TRACE-BOTH should be created which does what trace now does. This avoids tail-recursion lossage. ---Andy ------- 4-Jun-83 12:01:11-EDT,625;000000000000 Return-path: Mail-From: JMILLER created at 4-Jun-83 12:00:07 Date: 4 Jun 1983 1200-EDT Sender: JMILLER at MIT-OZ Subject: New Compiler From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 4-Jun-83 12:00:06.JMILLER> I will shortly release (into /USERS/JMILLER on the SRM, and SCM: on the 20) a new compiler. This one outputs better code for vector references with a constant offset. For those that care, it appears that the total improvement gained so far by compiling selected parts of the reader is 33.3% over the interpreted version using GJS's ChannelTest. --Jim 5-Jun-83 19:41:16-EDT,638;000000000000 Return-path: Mail-From: AAB created at 5-Jun-83 19:37:54 Date: 5 Jun 1983 1937-EDT From: Andrew A. Berlin Subject: List operations To: scheme-i@MIT-OZ I think we should set up a library of list operations. To be included would be such things as DELETE, DELETE!, INSERT, INSERT!, TRUNCATE-LIST, and many more. Most all of us have written these as parts of other things, so it is just a question of putting them in a public place. Perhaps we should even add them to scheme in a list-utilities-package???? If not, they should at least be in a publically accessable file. ---Andy ------- 6-Jun-83 09:47:55-EDT,465;000000000000 Return-path: Mail-From: JMILLER created at 6-Jun-83 09:00:22 Date: 6 Jun 1983 0900-EDT Sender: JMILLER at MIT-OZ Subject: HEX: vs SCM: From: JMILLER at MIT-OZ To: Hanson at MIT-OZ Cc: Scheme-I at MIT-OZ Message-ID: <[MIT-OZ] 6-Jun-83 09:00:19.JMILLER> I have changed COLD to use the prefix HEX: to match the SRM. I'm afraid we will have to change either your disk or the SRM if we want to maintain sanity ... you choose. --Jim 6-Jun-83 20:47:30-EDT,272;000000000000 Return-path: Mail-From: HANSON created at 6-Jun-83 20:45:06 Date: Mon, 6 Jun 1983 20:45 EDT From: HANSON@MIT-OZ To: JMILLER@MIT-OZ Cc: Scheme-I@MIT-OZ Subject: HEX: vs SCM: In-reply-to: Msg of 6 Jun 1983 09:00-EDT from JMILLER HEX wins. 6-Jun-83 20:52:39-EDT,534;000000000000 Return-path: Mail-From: HANSON created at 6-Jun-83 20:50:01 Date: Mon, 6 Jun 1983 20:50 EDT From: HANSON@MIT-OZ To: Anthony J. Courtemanche Cc: scheme-team@MIT-OZ Subject: band 4.5 In-reply-to: Msg of 3 Jun 1983 17:12-EDT from Anthony J. Courtemanche Date: Friday, 3 June 1983 17:12-EDT From: Anthony J. Courtemanche I hope I'm not jumping the gun, but 4.5 has some severe problems. The problems you describe sound quite serious. Please show me tomorrow. 6-Jun-83 20:52:49-EDT,978;000000000000 Return-path: Mail-From: HANSON created at 6-Jun-83 20:50:50 Date: Mon, 6 Jun 1983 20:50 EDT From: HANSON@MIT-OZ To: Anthony J. Courtemanche Cc: scheme-team@MIT-OZ Subject: Compound-procedure? In-reply-to: Msg of 3 Jun 1983 14:16-EDT from Anthony J. Courtemanche Date: Friday, 3 June 1983 14:16-EDT From: Anthony J. Courtemanche To: hanson cc: scheme-team Re: Compound-procedure? While trying to run the pp in band 4.4, the error Unbound Variable compound-procedure? is returned. I checked and compound-procedure? is not called explicitly in my code. My only guess as to the problem is that it might be happening in create-pp-object (access definition procedure interpreter-data-structures). Anthony This was a known bug in 4.4 which (I think) got fixed in 4.5. If not, it is easy to fix. Will be done quickly. 7-Jun-83 10:37:55-EDT,411;000000000000 Return-path: Mail-From: AAB created at 7-Jun-83 10:37:45 Date: 7 Jun 1983 1037-EDT From: Andrew A. Berlin Subject: Vectors To: scheme-i@MIT-OZ I think we should come up with a way for users to enter vectors through the reader (similar to '(foo bar) for lists). Maybe #'(1 2 0 'foo) should create a vector of length 4, with the appropriate elements? ---Andy ------- 7-Jun-83 10:42:40-EDT,608;000000000000 Return-path: Mail-From: HANSON created at 7-Jun-83 10:39:16 Date: Tue, 7 Jun 1983 10:39 EDT From: HANSON@MIT-OZ To: Andrew A. Berlin Cc: scheme-i@MIT-OZ Subject: Vectors In-reply-to: Msg of 7 Jun 1983 10:37-EDT from Andrew A. Berlin Date: Tuesday, 7 June 1983 10:37-EDT From: Andrew A. Berlin I think we should come up with a way for users to enter vectors through the reader (similar to '(foo bar) for lists). Maybe #'(1 2 0 'foo) should create a vector of length 4, with the appropriate elements? Try #(1 2 0 'foo). 7-Jun-83 15:43:34-EDT,646;000000000000 Return-path: Mail-From: HANSON created at 7-Jun-83 15:38:28 Date: Tue, 7 Jun 1983 15:38 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: New Work List The new work list is in SRC:WORK-LIST.TEXT. For those of you with logical names in place, this is the DSCM: directory. I have put instructions for its use inside the file. Please note that I have only marked those items that I am working on currently. There are several things there that others are currently doing; please read the list, and mark down the things you are working on at the present time. Thanks, Chris 7-Jun-83 16:14:39-EDT,676;000000000000 Return-path: Mail-From: HANSON created at 7-Jun-83 16:13:19 Date: Tue, 7 Jun 1983 16:13 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: New Standard for ! For some time there has been some confusion on the use of ! in the names of procedures with side-effects. The new convention adopted by Hal in the book is that the ! should be the last character in the name. This is in contrast to current usage in the system, which has such things as SET!-CAR which will soon become SET-CAR! You may (or may not) wish your internal names to conform to this standard, but please make any external names do so. Thanks. Chris 8-Jun-83 14:27:58-EDT,1972;000000000000 Return-path: Mail-From: AAB created at 8-Jun-83 14:24:36 Date: 8 Jun 1983 1424-EDT From: Andrew A. Berlin Subject: BUGS in SCHEME To: scheme-team@MIT-OZ ------------------Massachusetts Institute of Technology-------------------- * S C H E M E * Official Bug Report Form --------------------------------------------------------------------------- Bug complaints from AAB: Date: 8-JUN-83 Band Number: 4.4? Machine: gjs's Complaint 1: Some characters typed into the type-ahead buffer during a zap back from NMODE are changed into weirdo greek letters. This happens at other times also, but not as consistently as it does when zapping. Complaint 2: (define ^U returns an error, as does just about anything else that is typed and followed by a control u Complaint 3: When making a vector explicitly i.e. #('foo bar), the arguments are not evaluated, unless they are strings!! Complaint 4: The following doesn't work: #("foo)") returns unbound variable # and then some other error. Complaint 5: Where doesn't know about unassigned variables i.e. (define foo). Complaint 6: The error returned by where in the above case is undefined variable L, which may indicate something more serious is wrong. Complaint 7: Non-uniformity of referencers. It is too confusing to have referencers like NTH take arguments in a different order than things like vector-ref. Perhaps NTh should be flushed in favor of (list-ref lst num) ?? Complaint 8: The i/o system doesn't know about illegal characters like null (caps-lock). It should beep at you if you hit a bad character, rather than whatever strange thing it does now. ---Andy ------- 8-Jun-83 16:16:07-EDT,278;000000000000 Return-path: Mail-From: AAB created at 8-Jun-83 16:15:50 Date: 8 Jun 1983 1615-EDT From: Andrew A. Berlin Subject: SCHEME bugs To: scheme-team@MIT-OZ BEWARE of shifted backspace!! It gets the i/o system very confused. ---Andy ------- 8-Jun-83 17:33:42-EDT,342;000000000000 Return-path: Mail-From: HANSON created at 8-Jun-83 17:31:23 Date: Wed, 8 Jun 1983 17:31 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: Meeting Just a reminder: we changed the meeting days from Tuesday/Thursday to Tuesday/Friday. So there is no meeting tomorrow, but is one on Friday. See you there. 8-Jun-83 18:41:19-EDT,376;000000000000 Return-path: Mail-From: HANSON created at 8-Jun-83 18:37:17 Date: Wed, 8 Jun 1983 18:37 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: Copyrights The file SRC:COPYRIGHT.TEXT contains a new copyright notice which should be placed at the beginning of any code you write that will be included in the Scheme sources. Please use it. 9-Jun-83 15:46:30-EDT,530;000000000000 Return-path: Mail-From: HANSON created at 9-Jun-83 15:45:54 Date: Thu, 9 Jun 1983 15:45 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: Incompatible Microcode Change The new microcode 2.8 is incompatible with any band except 4.8. Also, a new cross-syntaxer has been built which is only compatible with microcode 2.8; actually it only matters if you use SCOLD. What this means is that you cannot run band 4.9 with the new microcode, but presumably 4.10 will be built soon and it will be ok. 9-Jun-83 19:03:54-EDT,363;000000000000 Return-path: Mail-From: JMILLER created at 9-Jun-83 18:54:46 Date: 9 Jun 1983 1854-EDT Sender: JMILLER at MIT-OZ Subject: Band 4.10 From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 9-Jun-83 18:54:45.JMILLER> Is available on the SRM. Contains history code, new unsyntaxer, printer that handles QUOTE. --Jim 9-Jun-83 19:04:18-EDT,295;000000000000 Return-path: Mail-From: JMILLER created at 9-Jun-83 18:55:20 Date: 9 Jun 1983 1855-EDT Sender: JMILLER at MIT-OZ Subject: Meeting From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 9-Jun-83 18:55:20.JMILLER> Friday at noon, as planned. --Jim 10-Jun-83 09:47:21-EDT,4417;000000000000 Return-path: Date: 10 Jun 1983 0713-EDT From: James S. Miller Subject: Food For Thought To: Scheme-Team@MIT-OZ (A) I plan to work on the unsyntaxer today to make it convert nested IF statements into CONDs. Since the form of clause with a predicate but no consequents is unusual, I do not plan to allow an initial OR clause to trigger CONDification. Internal ones may or may not continue a COND clause, depending on the difficulty of the code. Hopefully it will work and be testable before I leave today. (B) Hal should tell us when he gets back what the current theory on GET/PUT is. In particular, we need to get a final read-out on the names of the functions (and perhaps implement them). (C) AAB's SORT and ALPHALESS? should be documented and added to the system. Probably into the HUTILS file. Check with Chris on this one. (D) A proposed >> student << model of macros: (1) Scheme users call a special procedure rather than the actual evaluator. This procedure, USER-EVAL, first runs a MACROEXPANDER. This recursively walks the entire program and uses a data-directed dispatch to transform the source code. It handles both SPECIAL FORMS and MACROS. For reasons of implementation clarity, this macro expander is actually called SYNTAX. (2) Since USER-EVAL is called both by the function LOAD and the normal read-eval-print loop, macros are usually expanded at the time a function is defined, rather than when the function is applied to arguments. This improves performance but has the drawback that if a macro is removed from the system, it may already of done (irreversible) "damage" to programs. (3) Scheme has several built-in macros that students know about. DEFINE, LET, COND, CONS-STREAM are examples. Since these are built into the system, the pretty printer knows about them and does its best to print the macro-expanded code with the macros "unexpanded". This explains why code sometimes prints out differently from the way it went in. We do not distinguish these built-in macros from SPECIAL-FORMS, for largely historical reasons. (4) Users can manipulate the macro dispatch table using the procedures (are the names good?) PUT-MACRO!, REMOVE-MACRO!, GET-MACRO, and GET-MACRO-NAMES. The values for this table are functions of one argument: the list which starts with the name of the macro. They return a new list which is to replace the original in the program. Describe the use of backquote to aid in writing macro expanders. Notice that it is quite clear that macros (unlike procedures) are NOT first class objects in Scheme. [Macro >>expanders<< are functions, the macro itself is not!] (5) The pretty printer makes no attempt to "unexpand" user defined macros. This is because they are transient: they may have been added or removed after the code was expanded, making the problem untractable. (E) An >> implementation approach << to macros (1) Chris has a much better model of macros, but it will take some time before it is implemented and described fully. (2) As an interim measure, I suggest we install the miniature syntaxer which Chris wrote and Todd is working on. (3) Add to the current dispatch table a new category of things, user macros. These cause a user supplied function to be called on the current form, and a recursive syntaxing of the new form. (F) Additional suggestions It would probably be nice if top-level SYNTAX took an optional argument of a syntax table, and the functions GET-SYTNAX-TABLE and COPY-SYNTAX-TABLE could be made available. To parallel the GET-MACRO-NAMES function, it would be nice to have GET-SPECIAL-FORM-NAMES and GET-SPECIAL-CHARACTER-LIST available, too. Question: how should the names of special forms be handled when used other than in the function position? Ditto, I guess, for user defined macros? My suggestion is that special forms be considered "reserved words" in the language. It is not legal to use them in any way except their designated function. The list is small and not subject to user extension. Macros, however, are fairly clearly described in the user model as not being first class objects, and are clearly transient. Thus it should be allowable (if bad stylistically) to use a macro's name for a variable. ------- ------- 10-Jun-83 15:17:00-EDT,3637;000000000000 Return-path: Mail-From: HANSON created at 10-Jun-83 15:15:03 Date: Fri, 10 Jun 1983 15:15 EDT From: HANSON@MIT-OZ To: James S. Miller Cc: Scheme-Team@MIT-OZ Subject: Food For Thought In-reply-to: Msg of 10 Jun 1983 07:13-EDT from James S. Miller Date: Friday, 10 June 1983 07:13-EDT From: James S. Miller (C) AAB's SORT and ALPHALESS? should be documented and added to the system. Probably into the HUTILS file. Check with Chris on this one. Into UTILS, since they don't need high level stuff like the reader, printer, syntaxer etc. (1) Scheme users call a special procedure rather than the actual evaluator. This procedure, USER-EVAL, first runs a MACROEXPANDER. This recursively walks the entire program and uses a data-directed dispatch to transform the source code. It handles both SPECIAL FORMS and MACROS. For reasons of implementation clarity, this macro expander is actually called SYNTAX. I don't see that this is significantly different from what currently exists. EVAL calls the syntaxer, which does a recursive walk over the code, and expands any special forms. (2) Since USER-EVAL is called both by the function LOAD and the normal read-eval-print loop, macros are usually expanded at the time a function is defined, rather than when the function is applied to arguments. This improves performance but has the drawback that if a macro is removed from the system, it may already of done (irreversible) "damage" to programs. This is a rather difficult point. I have given this one a great deal of thought, and I strongly believe that this is the only "well-founded" way to look at syntax. The other model, in which when the syntax is changed, the programs change too, seems to me to be not only very hard to implement, but actually incorrect. The important distinction is that "syntax" should not be used in places where "semantics" is required. Syntax is just notation, and if one changes ones notation, then things that were written in the earlier notation are still correct (if they were originally correct), but ONLY RELATIVE TO THE ORIGINAL NOTATION. (4) Users can manipulate the macro dispatch table using the procedures (are the names good?) PUT-MACRO!, REMOVE-MACRO!, GET-MACRO, and GET-MACRO-NAMES. The values for this table are functions of one argument: the list which starts with the name of the macro. Why not have a more abstract interface for naive users, like (DEFINE-MACRO )? While I think that these procedures would be useful, the casual macro user will want a high-level method for describing macros. (F) Additional suggestions It would probably be nice if top-level SYNTAX took an optional argument of a syntax table, It does. Question: how should the names of special forms be handled when used other than in the function position? Ditto, I guess, for user defined macros? My suggestion is that special forms be considered "reserved words" in the language. It is not legal to use them in any way except their designated function. The list is small and not subject to user extension. Macros, however, are fairly clearly described in the user model as not being first class objects, and are clearly transient. Thus it should be allowable (if bad stylistically) to use a macro's name for a variable. Sounds good to me. 14-Jun-83 09:33:50-EDT,923;000000000000 Return-path: Mail-From: AC created at 14-Jun-83 09:29:17 Date: 14 Jun 1983 0929-EDT From: Anthony J. Courtemanche Subject: Bug with dotted tails. To: Scheme-I@MIT-OZ The following error exists in the current (4.11?) Band: ==> (cons 1 2) (1 . 2) ==> (cons 1 (cons 2 3)) Illegal Datum in first argument position ([PRIMITIVE-PROCEDURE LENGTH] Illegal Datum in first argument position ([PRIMITIVE-PROCEDURE LENGTH] Illegal Datum in first argument position ([PRIMITIVE-PROCEDURE LENGTH] Illegal Datum in first argument position ([PRIMITIVE-PROCEDURE LENGTH] . . . . AAB believes he MIGHT have introduced this bug by fixing the printer to print (quote foo) as 'foo. When you create an object of length > 2 with a dotted tail, you can extract the parts; the error is that the object just cannot be printed. Anthony ------- 14-Jun-83 11:49:08-EDT,328;000000000000 Return-path: Mail-From: AAB created at 14-Jun-83 11:45:17 Date: 14 Jun 1983 1145-EDT From: Andrew A. Berlin Subject: Bug with dotted tails (reported by ac) To: scheme-i@MIT-OZ I wrote a new version of print.scm in src: which fixes the bug. (unparse-list). ---Andy ------- 14-Jun-83 11:54:28-EDT,498;000000000000 Return-path: Mail-From: HANSON created at 14-Jun-83 11:53:37 Date: Tue, 14 Jun 1983 11:53 EDT From: HANSON@MIT-OZ To: Andrew A. Berlin Cc: scheme-i@MIT-OZ Subject: Bug with dotted tails (reported by ac) In-reply-to: Msg of 14 Jun 1983 11:45-EDT from Andrew A. Berlin I looked at the code -- there is one bug. You used NIL? (which incidentally isn't implemented yet); this means "the object that is false", not "the empty list" which is NULL?. 15-Jun-83 13:32:58-EDT,282;000000000000 Return-path: Mail-From: AAB created at 15-Jun-83 13:24:55 Date: 15 Jun 1983 1324-EDT From: Andrew A. Berlin Subject: Charles Kimball To: scheme-team@MIT-OZ Charles Kimball has joined the SCHEME TEAM. His user name is CYCLE. ---Andy ------- 16-Jun-83 01:25:46-EDT,345;000000000000 Return-path: Mail-From: AAB created at 15-Jun-83 23:59:31 Date: 15 Jun 1983 2359-EDT From: Andrew A. Berlin Subject: &hunk3-cons To: scheme-i@MIT-OZ In the current band (4.12???), &hunk3-cons has gone away. However, there is a HUNK3-cons (no &). Is this intentional (i.e. permanent?). ---Andy ------- 16-Jun-83 10:17:37-EDT,426;000000000000 Return-path: Mail-From: AC created at 16-Jun-83 10:16:59 Date: 16 Jun 1983 1016-EDT From: Anthony J. Courtemanche Subject: Bang Convention To: scheme-team@MIT-OZ A few weeks ago, we were notified that for mutators, the ! should always appear at the end of the symbol. How soon will set!-car etc. be changed to set-car! etc.? Anthony ------- 16-Jun-83 13:22:05-EDT,569;000000000000 Return-path: Mail-From: HANSON created at 16-Jun-83 13:15:48 Date: Thu, 16 Jun 1983 13:15 EDT From: HANSON@MIT-OZ To: Andrew A. Berlin Cc: scheme-i@MIT-OZ Subject: &hunk3-cons In-reply-to: Msg of 15 Jun 1983 23:59-EDT from Andrew A. Berlin Date: Wednesday, 15 June 1983 23:59-EDT From: Andrew A. Berlin In the current band (4.12???), &hunk3-cons has gone away. However, there is a HUNK3-cons (no &). Is this intentional (i.e. permanent?). There never was one. Use &TYPED-HUNK3-CONS. 17-Jun-83 01:55:13-EDT,296;000000000000 Return-path: Mail-From: AAB created at 17-Jun-83 01:54:16 Date: 17 Jun 1983 0154-EDT From: Andrew A. Berlin Subject: Henry Wu To: scheme-team@MIT-OZ Henry Wu has joined the SCHEME TEAM. His user name is MHWU. He is working on BIGNUMs. ---Andy ------- 17-Jun-83 05:25:10-EDT,549;000000000000 Return-path: Mail-From: HANSON created at 17-Jun-83 05:23:03 Date: Fri, 17 Jun 1983 05:23 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: New Band Band 4.13 is now available on the SRM. It features a new procedure EXAMINE, which is a version of DEBUG which doesn't use the history feature. If you get into an error, just type (EXAMINE) and then ? to find out what you can do. This band also contains the printer fix from 4.12A (thanks to GJS), and PRINT-GC-STATISTICS (thanks to AAB). Have fun. 18-Jun-83 16:42:11-EDT,513;000000000000 Return-path: Date: 18 Jun 1983 1638-EDT From: Andrew A. Berlin Subject: files To: scheme-team at MIT-OZ As many of the problem sets on oz are offline, I have created a directory on oz, T: which contains copies of all the .Scm files which were in the directory on EE as of Friday, 6/17/83. People doing problem sets on the chipmunks should look in T: for the sources refered to in the problem sets. ---Andy ------- 20-Jun-83 05:10:45-EDT,1084;000000000000 Return-path: Mail-From: JINX created at 20-Jun-83 05:08:48 Date: 20 Jun 1983 0508-EDT From: Bill Rozas Subject: New Scheme (Microcode 2.9 band 4.14) To: scheme-team@MIT-OZ cc: JINX@MIT-OZ The microcode features photo and tofu, string-equal? (only works on strings) and list? has been removed as a primitive (it used to be the same procedure as pair?). The band reflects the changes in the microcode plus list? in Scheme (as specified in the manual) eqv? (and memv and assv) different from eq?...* equal? works on vectors extend? * eqv? of flonums of the same magnitude is t as of bignums of same magnitude or strings with the same characters. Note1: I have not yet changed the cross-syntaxer, so if your code references list? and it is declared as a compilable primitive, it won't work. Note2: I have duplicated links to ucode:scm2.9.code to ucode:scheme.code and code:scheme.code. I don't know why the last one is needed since both tools:make-psl.text and tools:make-psl2.text reference the copy in ucode. ------- 20-Jun-83 05:10:51-EDT,284;000000000000 Return-path: Mail-From: JINX created at 20-Jun-83 05:10:17 Date: 20 Jun 1983 0510-EDT From: Bill Rozas Subject: Addendum to last message To: scheme-team@MIT-OZ In the new band (4.14) advice (the old one, now obsolete) has been removed. ------- 20-Jun-83 14:05:20-EDT,1237;000000000000 Return-path: Mail-From: HANSON created at 20-Jun-83 14:03:27 Date: Mon, 20 Jun 1983 14:03 EDT From: HANSON@MIT-OZ To: Bill Rozas Cc: scheme-team@MIT-OZ Subject: New Scheme (Microcode 2.9 band 4.14) In-reply-to: Msg of 20 Jun 1983 05:08-EDT from Bill Rozas Date: Monday, 20 June 1983 05:08-EDT From: Bill Rozas * eqv? of flonums of the same magnitude is t as of bignums of same magnitude or strings with the same characters. What if the flonums/bignums have the same magnitude but different sign? (just kidding, I'm sure you meant not what you said). Note1: I have not yet changed the cross-syntaxer, so if your code references list? and it is declared as a compilable primitive, it won't work. Shouldn't be any such occurrences (I hope). Note2: I have duplicated links to ucode:scm2.9.code to ucode:scheme.code and code:scheme.code. I don't know why the last one is needed since both tools:make-psl.text and tools:make-psl2.text reference the copy in ucode. TOOLS:MAKE-SCM uses the copy in CODE:SCHEME.CODE, which is supposed to be the current "experimental" version, that is, an unreleased copy. 21-Jun-83 22:42:01-EDT,410;000000000000 Return-path: Mail-From: HANSON created at 21-Jun-83 22:37:05 Date: Tue, 21 Jun 1983 22:37 EDT From: HANSON@MIT-OZ To: Scheme-I@MIT-OZ Subject: "Released" Directories Please do not write ANY files into the directories and . These directories should only be written by me, until we get a completely coherent system for doing releases. 21-Jun-83 23:26:43-EDT,1019;000000000000 Return-path: Mail-From: HANSON created at 21-Jun-83 23:21:11 Date: Tue, 21 Jun 1983 23:21 EDT From: HANSON@MIT-OZ To: GJS@MIT-OZ, Jinx@MIT-OZ Cc: Scheme-I@MIT-OZ Subject: Versions I noticed that the file PRIMS.ASM.43 isn't up to date on the SRM. Should it be? Also, while an entry was made for microcode 2.9 in the versions file, no entry was made for runtime system 4.14. Will you do this? Also, JMiller and I had decided that no files should be placed into the and directories unless they were in a band of some kind. That means that the files ARRAYS.SCM.24, BOOT.SCM.34, GARITH.SCM.74, SCODE.SCM.106, UPRIMS.SCM.98, and USTRUC.SCM.52 shouldn't be there until they are built into a band (presumably 4.15). I admit that this system needs some attention. I would like to suggest that the highest priority item on everyone's list should be the formalization of a system to control access to the various source directories in a useful way. 22-Jun-83 03:35:29-EDT,550;000000000000 Return-path: Mail-From: HANSON created at 22-Jun-83 03:33:04 Date: Wed, 22 Jun 1983 03:33 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: New Stuff Microcode 2.10 and runtime system 4.15 are now standard. Features: * NIL? installed (thanks to JINX). * Comment abstraction now has side-effectors (thanks to AAB). * WHERE now prints out things differently; comments solicited. * ENVIRONMENT-PUT!, ENVIRONMENT-GET, and ENVIRONMENT-PROPERTIES can now be used to attach arbitrary information to environments. 22-Jun-83 11:13:38-EDT,689;000000000000 Return-path: Mail-From: AAB created at 22-Jun-83 11:12:02 Date: 22 Jun 1983 1112-EDT From: Andrew A. Berlin Subject: Advice system To: scheme-i@MIT-OZ I'm having a rather serious problem with advice: It runs perfectly with Chris/Todd's mini-syntaxer, but with the real syntaxer, (define (fac x) (If (= x 0) 1 (* x (fac (-1+ x))))) (break-exit fac) (fac 5) gives an error: UNASSIGNED VARIABLE EXP There is no EXP anywhere in my code. There is virtually no way I am going to find this bug. Advice lives in src:advice.scm, and in /USERS/AAB/ADVICE.SCM It requires the scode with comment mutation added. ---Andy ------- 22-Jun-83 11:14:28-EDT,313;000000000000 Return-path: Mail-From: AAB created at 22-Jun-83 11:13:43 Date: 22 Jun 1983 1113-EDT From: Andrew A. Berlin Subject: Advice To: scheme-i@MIT-OZ I almost forgot: There is some preliminary/incomplete documentation on advice in src:advice.doc. ---Andy ------- 23-Jun-83 01:15:45-EDT,355;000000000000 Return-path: Mail-From: HANSON created at 23-Jun-83 01:12:48 Date: Thu, 23 Jun 1983 01:12 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: New Stuff Microcode 2.11 fixes a bug in the interaction between SET! and unbound variables. It is the current microcode on the SRM. The PSL dump LISP2 should be up to date now. 23-Jun-83 15:19:45-EDT,681;000000000000 Return-path: Mail-From: HANSON created at 23-Jun-83 15:16:17 Date: Thu, 23 Jun 1983 15:16 EDT From: HANSON@MIT-OZ To: Todd@MIT-OZ Cc: Scheme-Team@MIT-OZ Subject: New Syntactic Construct I have implemented a new syntactic construct, SCODE-QUOTE, which is similar to QUOTE. This construct is used to obtain a quoted piece of executable code, so for example (SCODE-QUOTE (FOO BAR BAZ)) would not be the list '(FOO BAR BAZ), but instead is the SCODE object which is the combination of FOO called on BAR and BAZ. In other words, (SCODE-EVAL (SCODE-QUOTE (FOO BAR BAZ)) (THE-ENVIRONMENT)) is (essentially) equivalent to (FOO BAR BAZ). 23-Jun-83 16:41:47-EDT,250;000000000000 Return-path: Mail-From: AAB created at 23-Jun-83 16:37:40 Date: 23 Jun 1983 1637-EDT From: Andrew A. Berlin Subject: *MEETING* To: SCHEME-TEAM@MIT-OZ There WILL be a meeting tomorrow at 12:00. ---Andy ------- 24-Jun-83 16:46:15-EDT,856;000000000000 Return-path: Mail-From: AAB created at 24-Jun-83 16:43:58 Date: 24 Jun 1983 1643-EDT From: Andrew A. Berlin Subject: Randoms To: SCHEME-TEAM@MIT-OZ There seem to be a lot of random people around lately. I found one messing with a 9836 in the scheme lab (he tried to visit centipede with nmode and wound up in lisp somehow.) Also, someone re-booted a machine that I had doing a fasload. It ended up in the pascal editor with some garbage typed in. If you see anyone using the machines who doesn't look familiar, ask them to stop. We should come up with some kind of login procedure quick (although it won't stop people from re-booting). Perhaps we should start locking the doors when nobody is actually in the room. (this isn't feasable if everyone doesn't have their own key). ---Andy ------- 27-Jun-83 05:30:47-EDT,897;000000000000 Return-path: Mail-From: JINX created at 27-Jun-83 05:26:50 Date: 27 Jun 1983 0526-EDT From: Bill Rozas Subject: New microcode & band To: scheme-team@MIT-OZ cc: JINX@MIT-OZ The microcode features binary-fasload and primitive-fasdump. The band features ffasl (like fasl but uses binary-fasload), fasdump and translate which takes two arguments, both filenames and translates the first (supposedly in HEX ASCII format) into the second (in binary format). All of the HEX files have been translated and live in #5:/USERS/JINX/BIN (I could not make a subdirectory of /SCHEME since I don't have the password). The band was made from these and since the format is the same as the one that bands are dumped in, even the root (COLD) cen be loaded in this format. If you want to try them do '(ffasl "/USERS/JINX/BIN/ADVICE.2" nil)'. Bill ------- 27-Jun-83 05:50:44-EDT,1876;000000000000 Return-path: Mail-From: JINX created at 27-Jun-83 05:46:37 Date: 27 Jun 1983 0546-EDT From: Bill Rozas Subject: (Medium length message) Directory management on the SRM To: scheme-team@MIT-OZ cc: JINX@MIT-OZ I propose the following convention (I have moved files accordingly): TOOLS: will hold all the stream files neccessary to make a microcode, a band or a dump. Whenever necessary there will be two versions of a file, one for the machines with bootrom, and the others for the ones without it (e.g. MAKE-PSL.TEXT and MAKE-PSL2.TEXT). There are two versions (for each type of machine) of the MAKE-PSL files: MAKE-PSL and MAKE-RPSL, where the only difference is that they take the Scheme microcode and the runtime system band. CODE: holds all the compiled and assembled microcode sources, and the latest version (SCHEME.CODE) of the Scheme microcode. UCODE: holds all the microcodes and the file (SCHEME.CODE) with a duplicate link to one of the others (usually an older one than the one in CODE:). BANDS: holds all the Scheme runtime system bands, a file (SCHEME) with a duplicate link to the latest version, and a file (OSCHEME) with a duplicate link to the released version (consistent with the microcode). SCM-PSL: holds Scheme-PSL dumps by pairs: one for each type of machine. The latest version lives in LISP.DUMP (LISP2.DUMP) which is a duplicate link to the appropriate file. The naming convention I have adopted is LISP.DUMPn (LISP2.DUMPn) where n increases with each revision. Since I don't know which is the current released version, the older versions point to 2.11 and 4.17. They should be changed as soon as a new release is made or to assign them to the true release. I hope this makes it easier to find the appropriate thing to change whenever neccesary. Bill ------- 27-Jun-83 09:40:31-EDT,256;000000000000 Return-path: Mail-From: AAB created at 27-Jun-83 09:39:15 Date: 27 Jun 1983 0939-EDT From: Andrew A. Berlin Subject: Password To: scheme-team@MIT-OZ The password for the scheme directory is ENTROPY. ---Andy ------- 27-Jun-83 11:38:05-EDT,326;000000000000 Return-path: Mail-From: AAB created at 27-Jun-83 11:37:30 Date: 27 Jun 1983 1137-EDT From: Andrew A. Berlin Subject: Starting PSL To: scheme-team@MIT-OZ PSLSHAD:LISP has been renamed to be TOOLS:LISP SYS:LISP2 (for the old machines) has been renamed to be TOOLS:LISP2 ---Andy ------- 27-Jun-83 17:32:03-EDT,680;000000000000 Return-path: Mail-From: HANSON created at 27-Jun-83 17:29:37 Date: Mon, 27 Jun 1983 17:29 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: New Stuff Microcode 2.13/System 4.19 are now available on the SRM. Features: * GET-CURSOR returns a cons of the X and Y cursor coordinates. * SCODE-QUOTE is implemented. Use (SCODE-QUOTE ) instead of (SYNTAX '). * Arbitrary symbol names can be entered using '|...|, where ... is anything that doesn't have | in it. To insert |, use ||. * The reader now reads """" as the string of a single double-quote. However, the printer will print this as """. Use it with caution. 28-Jun-83 02:27:40-EDT,936;000000000000 Return-path: Mail-From: HANSON created at 28-Jun-83 02:26:36 Date: Tue, 28 Jun 1983 02:26 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: Changeover to SRM The Scheme source files were moved tonight from OZ to the SRM. Their new home is in the directory /SCHEME/SCM. Please, please, PLEASE, be very careful to maintain version numbers on these files. The file system won't do it for you. If you screw up and forget, NMODE will write your file back out without a version number. To go with this, there is a band /USERS/HANSON/X4.19 which has the procedures SF and SCOLD implemented. Both SF and SCOLD take three arguments: (SF source-filename binary-filename specification-filename) This stuff will all be streamlined later, but this is sufficient to get the development going on the Chipmunks. I have done preliminary testing and this stuff seems to work OK. Comments to me. 28-Jun-83 02:27:48-EDT,288;000000000000 Return-path: Mail-From: HANSON created at 28-Jun-83 02:27:16 Date: Tue, 28 Jun 1983 02:27 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: ADVICE The new advice package is now installed, thanks to heroic efforts by Jinx. It is available in band 4.20. 28-Jun-83 02:47:24-EDT,667;000000000000 Return-path: Mail-From: HANSON created at 28-Jun-83 02:42:51 Date: Tue, 28 Jun 1983 02:42 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: SRM Backup I started a backup just before going home. Will someone please remove and date the tape when you come in? I again found it necessary to power cycle the disk before I could do a backup. I suspect that there is a bit in the drive which can be set by software, which disables the front panel switches to do backups. The SRM is no doubt setting that bit since we are supposed to use the regular SRM backup facility. We should definitely get a copy of this utility sometime. 28-Jun-83 15:56:03-EDT,293;000000000000 Return-path: Mail-From: AAB created at 28-Jun-83 15:44:39 Date: 28 Jun 1983 1544-EDT From: Andrew A. Berlin Subject: Documentation on advice To: scheme-team@MIT-OZ PRELIMINARY documentation on advice lives in src:advice.doc. ---Andy ------- 28-Jun-83 21:29:03-EDT,1114;000000000000 Return-path: Mail-From: JINX created at 28-Jun-83 21:24:03 Date: 28 Jun 1983 2124-EDT From: Bill Rozas Subject: Cold file in /SCHEME/SCM To: todd@MIT-OZ cc: scheme-team@MIT-OZ, JINX@MIT-OZ The cold file (version 139) did not load. The reason is that it tried to ffasload the mini-syntaxer which is in an inconsistent state. PLEASE,i DO NOT put something in SCM if it has not been tested and it runs. I thought it was consistent and therefore assumed the rror was in the fasloader or the like. Afterwards I noticed it was making it to SCODE-EVAL. The reason for this is that when a new band is made, cold has to be changed, and the previous version should work. It is unreasonable to expect somebody to check all the files. Thanks PS: A bug in the file Syntable is that you do (define *default-syntax-table* (make-syntax-table default-syntax-table-alist)) before defining default-syntax-table-alist, so the variable is unbound. The cold load crashes since the error system has not been installed yet so that there are no handlers. ------- 28-Jun-83 22:42:34-EDT,751;000000000000 Return-path: Mail-From: HANSON created at 28-Jun-83 22:40:02 Date: Tue, 28 Jun 1983 22:40 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: Changeover to SRM My apologies for earlier screwup. The source files for Scheme WILL NOT reside on the SRM, as I had said. The primary copies will remain on OZ, due to the superior file system. However, cross-syntaxing should no longer be done on OZ, but on the 9836's only. This means that the standard sequence to build new systems is: 1. Edit the source on OZ. 2. Transfer the edited source to SRM. 3. Syntax the source to binary form using the syntaxer. 4. Build a new band from the binary. Binary files (and HEX files) will no longer be kept on OZ. 29-Jun-83 00:25:13-EDT,326;000000000000 Return-path: Mail-From: HANSON created at 29-Jun-83 00:24:16 Date: Wed, 29 Jun 1983 00:24 EDT From: HANSON@MIT-OZ To: AAB@MIT-OZ Cc: Scheme-Team@MIT-OZ Subject: New Stuff Microcode 2.14, System 4.22 now available. I believe they solve the problems we discussed earlier re history. Have fun. 29-Jun-83 06:27:36-EDT,517;000000000000 Return-path: Mail-From: JMILLER created at 29-Jun-83 06:25:18 Date: 29 Jun 1983 0625-EDT Sender: JMILLER at MIT-OZ Subject: Re: Cold file in /SCHEME/SCM From: JMILLER at MIT-OZ To: JINX at MIT-OZ Cc: todd at MIT-OZ, scheme-team at MIT-OZ Message-ID: <[MIT-OZ]29-Jun-83 06:25:17.JMILLER> In-Reply-To: Your message of 28 Jun 1983 2124-EDT My fault! And profuse apologies. I'm not yet used to working on the SRM for changes of this kind. I will be more careful in the future. --Jim 29-Jun-83 06:27:42-EDT,647;000000000000 Return-path: Mail-From: JMILLER created at 29-Jun-83 06:27:11 Date: 29 Jun 1983 0627-EDT Sender: JMILLER at MIT-OZ Subject: Re: Changeover to SRM From: JMILLER at MIT-OZ To: HANSON at MIT-OZ Cc: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ]29-Jun-83 06:27:10.JMILLER> In-Reply-To: Your message of Tue, 28 Jun 1983 22:40 EDT I agree with the un-change you are suggesting. However, I find that I do a lot of the editting on the SRM because it is where I am debugging. Can we get a list of machines that are connected to OZ for sending files back and forth? I will look into getting my line connected up. --Jim 30-Jun-83 07:08:44-EDT,320;000000000000 Return-path: Mail-From: JMILLER created at 30-Jun-83 07:08:36 Date: 30 Jun 1983 0708-EDT Sender: JMILLER at MIT-OZ Subject: Reminder From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ]30-Jun-83 07:08:36.JMILLER> Meeting tomorrow (Friday) at noon. See you there. --Jim 30-Jun-83 10:46:36-EDT,608;000000000000 Return-path: Mail-From: CYCLE created at 30-Jun-83 10:45:10 Date: 30 Jun 1983 1045-EDT From: CYCLE@MIT-OZ Subject: bug in scheme number representation To: scheme-team@MIT-OZ If one attempts to have scheme evaluate a number with more than 5 or 6 digits after the decimal point, scheme will return an error: Bad arguments ([COMPOUND-PROCEDURE /] 23455645 100000000) Error! Level: 2 or something like that. I suspect it has to do with bignums, but in any case someone ought to look into it since problem sets depend on many digit decimal numbers in some cases. ------- 30-Jun-83 13:04:20-EDT,552;000000000000 Return-path: Mail-From: MHWU created at 30-Jun-83 13:01:06 Date: 30 Jun 1983 1301-EDT From: MHWU@MIT-OZ Subject: Bug in INTEGER-DIVIDE To: scheme-team@MIT-OZ This is a bug in the Chipmunk's INTEGER-DIVIDE procedure. It gives wrong answers (both qoutient and remainder) when given negative arguments. I don't know whether the problem is connected with the already detected bug with BIGNUM division but this one occurs even when the arguments are not bignums. I hope somebody would look into that. Henry Wu ------- 30-Jun-83 14:24:44-EDT,693;000000000000 Return-path: Mail-From: JINX created at 30-Jun-83 14:23:57 Date: 30 Jun 1983 1423-EDT From: Bill Rozas Subject: Re: Bug in INTEGER-DIVIDE To: MHWU@MIT-OZ cc: scheme-team@MIT-OZ, JINX@MIT-OZ In-Reply-To: Your message of 30-Jun-83 1301-EDT About the previous two bugs: The bug in / is the well known bug of coercion from bignums to flonums. I'll look into that today. Integer-divide is returning the correct result for fixnums, it so happens that the convention followed is that the remainder must have the same sign as the divisor and thus the possible confusion (usual convention is that the remainder always be positive). Jinx ------- 30-Jun-83 18:02:03-EDT,2650;000000000000 Return-path: Mail-From: AC created at 30-Jun-83 17:58:28 Date: 30 Jun 1983 1758-EDT From: Anthony J. Courtemanche Subject: Meeting! To: scheme-team@MIT-OZ Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! Be there! 12:00 Friday. Bring your friends! Shout for joy! [This message was brought to you per order of JMILLER] ------- 1-Jul-83 11:02:07-EDT,471;000000000000 Return-path: Mail-From: CYCLE created at 1-Jul-83 11:00:46 Date: 1 Jul 1983 1100-EDT From: CYCLE@MIT-OZ Subject: Queries on the 9836 To: HAL@MIT-OZ cc: scheme-team@MIT-OZ The second of the two tests in exercise 3, page 262 (from ps8 - the query problem set) returns the answer in about 5 - 6 minutes on the 9836. On the DEC20 at fairly heavy load it re- turned in anywhere from 10 - 20 minutes. Hopefully this is good news! ------- 1-Jul-83 17:40:36-EDT,762;000000000000 Return-path: Mail-From: JMILLER created at 1-Jul-83 17:37:46 Date: 1 Jul 1983 1737-EDT Sender: JMILLER at MIT-OZ Subject: WARNING!!! From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 1-Jul-83 17:37:45.JMILLER> AC and I have editted all the files in SCM: to have the "!" in names with SET!, INSERT!, or DELETE! moved to the end of the atom. The DECLAREs have been examined, and 'duplicate' bindings have been added so that loaded and ffasled will work the same. The files HAVE NOT been tested or moved to the SRM yet. Sorry about that. PLEASE do not write any new versions into SCM based on older sources. I will get to work on syntaxing and testing as soon as possible (probably Monday). --Jim 2-Jul-83 08:20:41-EDT,1792;000000000000 Return-path: Mail-From: JMILLER created at 2-Jul-83 08:20:19 Date: 2 Jul 1983 0820-EDT Sender: JMILLER at MIT-OZ Subject: Syntaxer From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 2-Jul-83 08:20:18.JMILLER> Just a reminder from yesterday's meeting. First, when you start up scheme 4.25, you are in the user-initial-environment, and therefore have the "student" version of the syntax tables and reader. This means that things like back-quote, access, in-package, make-environment, make-package etc. will not be available. Defaulting the environment argument to EVAL will yield the environment you have put the read-eval-print loop into via visit-environment or goto-environment. An explicit NIL (or SYSTEM-GLOBAL-ENVIRONMENT) will yield the user-initial-environment. The function (ENABLE-LANGUAGE-FEATURES) will return things to their former state of affairs. (DISABLE-LANGUAGE-FEATURES) brings you back to the environment you were in when you enabled, and removes any magic that it created. Finally, there are now two (2) syntaxers that must be changed in parallel. The first is SCM:MINSYN.SCM (with tables in SCM:SYNTABLES.SCM). This is the interactive syntaxer used when you load files or type at a normal scheme. The second is in CROSS:CROSS.SCM (with helper files CROSS:CROSSAUX.SCM and CROSS:CROSSTOP.SCM. These are in SCM: in the SRM, but we ought to make a CROSS: sometime there.) To make a new cross syntaxer band on the SRM, be sure that the three files are in BIN:, then load up a clean new band. (LOAD "SCM:MAKE-CROSS.SCM") will load the files. You can then dump it to BANDS:CROSSx.yy and make a duplicate link into BANDS:CROSS when you release the new band and cross syntaxer. --Jim 2-Jul-83 08:24:59-EDT,352;000000000000 Return-path: Mail-From: JMILLER created at 2-Jul-83 08:21:14 Date: 2 Jul 1983 0821-EDT Sender: JMILLER at MIT-OZ Subject: Reminder From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 2-Jul-83 08:21:12.JMILLER> Meetings will be weekly (rather than twice a week). They will be Fridays at noon. --Jim 2-Jul-83 08:25:06-EDT,909;000000000000 Return-path: Mail-From: JMILLER created at 2-Jul-83 08:24:50 Date: 2 Jul 1983 0824-EDT Sender: JMILLER at MIT-OZ Subject: Cross Syntaxer Improvement From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 2-Jul-83 08:24:50.JMILLER> Thanks to Todd, BANDS:CROSS now has an 'automated' way to syntax a list of files. (SYNTAX-FILES '("string1" "string2" ...)) will call SF on each file specified. The string is the full input file name (you can omit defaulted directory or volume, but not version number). The binary file goes to BIN: with the same name and version. The spec file goes to the same place as the source, but with extension SPEC and no version. When Ken finishes the file system interface from scheme, we may go further and add version number defaulting to this as a trial run for a uniform Scheme/Editor version number system. --Jim 2-Jul-83 14:30:11-EDT,271;000000000000 Return-path: Mail-From: AAB created at 2-Jul-83 14:25:19 Date: 2 Jul 1983 1425-EDT From: Andrew A. Berlin Subject: DEBUG To: SCHEME-I@MIT-OZ Do you want debug to be called DEBUG or EXAMINE ? Does anyone care? ---Andy ------- 2-Jul-83 15:30:48-EDT,944;000000000000 Return-path: Mail-From: AAB created at 2-Jul-83 15:30:13 Date: 2 Jul 1983 1530-EDT From: Andrew A. Berlin Subject: The state of the debugger world To: scheme-i@MIT-OZ I have a version of debug in my directory which seems to work. Some minor changes have to be made in WHERE so that it can share its code more effectively. (I didn't want to do these until Jim tested his changes). We need to talk about packaging. History needs to be turned on and a user-level setup-history function has to be written. (lets talk about packaging). Chris said that turning on history meant modifying CATCH, but I didn't want to do that until I spoke to him again to be sure. I don't know what the state of the chipmunk world is as far as where do I put the source that I transfer over to unsyntax, where does the syntaxed copy go, etc. i.e. WHAT IS INVOLVED IN MAKING A NEW BAND??? ---Andy ------- 2-Jul-83 21:10:41-EDT,582;000000000000 Return-path: Mail-From: GJS created at 2-Jul-83 21:08:05 Date: Sat, 2 Jul 1983 21:08 EDT From: GJS@MIT-OZ To: scheme-team@MIT-OZ Currently there is a bug in looping primitives like ASSQ, MEMQ, LENGTH... If given circular structure they go into uninterruptible loops. This should be fixed. There are two possibilities -- 1. Make them poll interrupts around every loop. (or if efficiency is an issue, we could make them poll every 10th time, with a counter, or unroll the loop 10 times) 2. Make a "user's version" which is written in SCHEME. 3-Jul-83 18:33:51-EDT,445;000000000000 Return-path: Mail-From: GJC created at 3-Jul-83 18:30:59 Date: Sun, 3 Jul 1983 18:30 EDT From: GJC@MIT-OZ To: GJS@MIT-OZ cc: scheme-team@MIT-OZ Subject: infinite loops in LENGTH etc. ... Or you could have them coded so as to detect circular structure. Have two pointers into the list, one getting CDR'd the other getting CDDR'd. If they are ever EQ then you have circularity. (This is what they do in VAX-NIL). 4-Jul-83 06:41:05-EDT,973;000000000000 Return-path: Mail-From: GJS created at 4-Jul-83 06:38:11 Date: 4 Jul 1983 0638-EDT From: GJS@MIT-OZ Subject: Hairy new character interrupt system To: scheme-team@MIT-OZ is almost completely operational and fixes all known bugs. It still has some bugs of its own. The system features 1: Input busywaiting under Scheme control. 2: Corrects synchronization of tty stream I/O with interrupts in the stream. 3: Interlocks to prevent bugs in interaction with Pascal tty code. The problems is that we are not finished. Most of the changes are to the microcode. However some changes are to Scheme code. It is essential that ongoing work not delete any of the current runtime system from either the SRM or OZ. Do not make a LISP dump with band 4.27A as it is not compatible with the current code. All our changes have been made in so the new stuff can not screw you. We will merge our stuff in with yours later. ------- 5-Jul-83 12:34:24-EDT,679;000000000000 Return-path: Mail-From: AAB created at 5-Jul-83 12:33:45 Date: 5 Jul 1983 1233-EDT From: Andrew A. Berlin Subject: SCM: FILES To: SCHEME-TEAM@MIT-OZ I think we should make a habit of setting files in scm: which are in the current band to be permanent. This way if someone writes several new versions of a file, the old (current-band) version isn't lost. Potential for great lossage exists if a bug is found in the current-band but the source code for it is gone. Basically, I'm just asking for people to do an @set file permanent scm:*.scm right after they create a band using the current scm: files. ---Andy ------- 5-Jul-83 14:23:43-EDT,610;000000000000 Return-path: Mail-From: AAB created at 5-Jul-83 14:23:08 Date: 5 Jul 1983 1423-EDT From: Andrew A. Berlin Subject: NTHCDR To: scheme-i@MIT-OZ Two questions: 1) Are things like zero? and positive? useable in code or will they be going away? 2) NTHCDR uses ZERO? as it's termination condition. Therefore, if you give it a negative number, you have an infinite loop. This also breaks NTH. Shouldn't things like nth and nthcdr check to make sure their arguments are positive, rather than going into infinite loops? ---Andy ------- 5-Jul-83 15:35:14-EDT,793;000000000000 Return-path: Mail-From: AAB created at 5-Jul-83 15:32:21 Date: 5 Jul 1983 1532-EDT From: Andrew A. Berlin Subject: History broken AGAIN To: SCHEME-TEAM@MIT-OZ Ok, here we go again. At some point since last wednesday, someone made a change in history.scm which has resulted in the number of subproblems for which history is saved to be 2, no matter what history is set up to be. I am referring to the history in the current band, for which we no longer have the source file on oz. I pulled history.scm.30 and .31 off the srm. Changes were made in this code between those two versions, but I'm not sure if that is where the bug was introduced. As there are no user names on the srm, I don't know who to ask about this. ---Andy ------- 6-Jul-83 02:47:14-EDT,428;000000000000 Return-path: Mail-From: HANSON created at 6-Jul-83 02:41:52 Date: Wed, 6 Jul 1983 02:41 EDT From: HANSON@MIT-OZ To: Andrew A. Berlin Cc: SCHEME-I@MIT-OZ Subject: DEBUG In-reply-to: Msg of 2 Jul 1983 14:25-EDT from Andrew A. Berlin Date: Saturday, 2 July 1983 14:25-EDT From: Andrew A. Berlin Do you want debug to be called DEBUG or EXAMINE ? DEBUG. 6-Jul-83 02:47:20-EDT,710;000000000000 Return-path: Mail-From: HANSON created at 6-Jul-83 02:42:54 Date: Wed, 6 Jul 1983 02:42 EDT From: HANSON@MIT-OZ To: Andrew A. Berlin Cc: scheme-i@MIT-OZ Subject: The state of the debugger world In-reply-to: Msg of 2 Jul 1983 15:30-EDT from Andrew A. Berlin Date: Saturday, 2 July 1983 15:30-EDT From: Andrew A. Berlin History needs to be turned on and a user-level setup-history function has to be written. (lets talk about packaging). Chris said that turning on history meant modifying CATCH, but I didn't want to do that until I spoke to him again to be sure. I already made the modifications to CATCH; go ahead. 6-Jul-83 02:47:26-EDT,830;000000000000 Return-path: Mail-From: HANSON created at 6-Jul-83 02:43:57 Date: Wed, 6 Jul 1983 02:43 EDT From: HANSON@MIT-OZ To: GJS@MIT-OZ Cc: scheme-team@MIT-OZ In-reply-to: Msg of 2 Jul 1983 21:08-EDT from GJS Date: Saturday, 2 July 1983 21:08-EDT From: GJS To: scheme-team Currently there is a bug in looping primitives like ASSQ, MEMQ, LENGTH... If given circular structure they go into uninterruptible loops. This should be fixed. There are two possibilities -- 1. Make them poll interrupts around every loop. (or if efficiency is an issue, we could make them poll every 10th time, with a counter, or unroll the loop 10 times) 2. Make a "user's version" which is written in SCHEME. Or: 3. Make ^G work from anywhere in the microcode. 6-Jul-83 02:51:23-EDT,1025;000000000000 Return-path: Mail-From: HANSON created at 6-Jul-83 02:49:16 Date: Wed, 6 Jul 1983 02:49 EDT From: HANSON@MIT-OZ To: Andrew A. Berlin Cc: SCHEME-TEAM@MIT-OZ Subject: SCM: FILES In-reply-to: Msg of 5 Jul 1983 12:33-EDT from Andrew A. Berlin Date: Tuesday, 5 July 1983 12:33-EDT From: Andrew A. Berlin I think we should make a habit of setting files in scm: which are in the current band to be permanent. This way if someone writes several new versions of a file, the old (current-band) version isn't lost. Potential for great lossage exists if a bug is found in the current-band but the source code for it is gone. I agree with the need to save source files. However, I believe that it is more appropriate for us to do so on the SRM, where the space we use doesn't consume resources that others can use. This is not to say that we shouldn't save files on OZ, just that we shouldn't keep alot of old copies there. 6-Jul-83 07:53:03-EDT,806;000000000000 Return-path: Mail-From: JMILLER created at 6-Jul-83 07:52:49 Date: 6 Jul 1983 0752-EDT Sender: JMILLER at MIT-OZ Subject: Re: SCM: FILES From: JMILLER at MIT-OZ To: HANSON at MIT-OZ Cc: AAB at MIT-OZ, SCHEME-TEAM at MIT-OZ Message-ID: <[MIT-OZ] 6-Jul-83 07:52:48.JMILLER> In-Reply-To: Your message of Wed, 6 Jul 1983 02:49 EDT We also had this theory of a release directory. Maybe it is time for the next release. I propose that when we merge my set of name changes, Todd's mini-syntaxer, Gerry & Jinx' new interrupt system, and AC's window package into one working band, we release the system. This means moving all the sources into RSCM and RASM on the 20, and "paring down" ASM and SCM so they contain only files that shadow ones in the release system. --Jim 6-Jul-83 08:31:52-EDT,313;000000000000 Return-path: Mail-From: GJS created at 6-Jul-83 08:28:20 Date: Wed, 6 Jul 1983 08:28 EDT From: GJS@MIT-OZ To: Andrew A. Berlin Cc: scheme-i@MIT-OZ Subject: NTHCDR In-reply-to: Msg of 5 Jul 1983 14:23-EDT from Andrew A. Berlin I agree. I'll put it into worklist. 6-Jul-83 14:16:47-EDT,328;000000000000 Return-path: Mail-From: JMILLER created at 6-Jul-83 14:16:27 Date: 6 Jul 1983 1416-EDT Sender: JMILLER at MIT-OZ Subject: Band 4.28, UCode 2.16 From: JMILLER at MIT-OZ To: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ] 6-Jul-83 14:16:26.JMILLER> Are now released! Thanks to GJS, Jinx, et al. --Jim 6-Jul-83 22:38:48-EDT,431;000000000000 Return-path: Mail-From: JINX created at 6-Jul-83 22:34:49 Date: 6 Jul 1983 2234-EDT From: Bill Rozas Subject: Re: Band 4.28, UCode 2.16 To: JMILLER@MIT-OZ cc: Scheme-Team@MIT-OZ, JINX@MIT-OZ In-Reply-To: Your message of 6-Jul-83 1416-EDT There is (yet) another bug in the new release. Set! does not work. It will be fixed tomorrow morning. We apologize meanwhile. Jinx ------- 11-Jul-83 15:00:41-EDT,1200;000000000000 Return-path: Mail-From: AAB created at 11-Jul-83 14:56:55 Date: 11 Jul 1983 1456-EDT From: Andrew A. Berlin Subject: *read* *This* SCHEME DIRECTORIES INCONSISTENT To: SCHEME-TEAM@MIT-OZ The various scheme directories have gone inconsistent. We have a cold file BIN:COLD.160 on the SRM. The current band (which seems to come from this file), is 4.30. * There is no cold.scm.160 on oz or on the srm. * The most current version on oz is cold.scm.158, band 4.28. * The most current version on the srm is cold.scm.158, band 4.30. * Debug has gone away in the current band, as have prin1-to-string, and the initial setup-history! when time begins. Summary: BIN: on the Srm does not match SCM: on the srm. scm: on the srm does not match scm: on oz. There is no source code in scm: for the current bin:cold.160. Will EVERYBODY who made changes in COLD please send mail to scheme-team explaining how we came to be in this state. WHO CREATED BIN:COLD.160????? WHO CREATED THE CURRENT BAND, and from which COLD file???? If it were done from the scm:cold.scm.158 on the srm, we would still have DEBUG. ---Andy ------- 11-Jul-83 15:19:37-EDT,345;000000000000 Return-path: Mail-From: AAB created at 11-Jul-83 15:09:19 Date: 11 Jul 1983 1509-EDT From: Andrew A. Berlin Subject: Sort To: scheme-i@MIT-OZ I fixed a bug in sort (not sort!) and wrote a new version of UTILS on OZ. This should be installed in a band after the world is cleaned up. ---Andy ------- 11-Jul-83 23:55:57-EDT,663;000000000000 Return-path: Date: 11 July 1983 23:52 EDT From: Pandora B. Berman Subject: files migrated To: bug-scheme @ MIT-OZ for your information ---------- Date: 11 Jul 1983 0108-EDT From: The Mailer Daemon To: Subject: Message of 11-Jul-83 01:04:56 Message failed for the following: CHIPMUNK@MIT-OZ: No such mailbox ------------ Date: 11-Jul-83 01:04:56 From: Dumper Reply-to: File-Retrieve To: CHIPMUNK Subject: Migrated files The following files have been migrated: PS:GFTP.PAS.23 PS:README.TEXT.1 ------- 12-Jul-83 00:50:00-EDT,310;000000000000 Return-path: Mail-From: AAB created at 12-Jul-83 00:47:17 Date: 12 Jul 1983 0047-EDT From: Andrew A. Berlin Subject: Garbling of type-ahead buffer To: scheme-i@MIT-OZ The rate of garbling of characters in the type-ahead buffer in scheme is increasing. ---Andy ------- 12-Jul-83 14:23:47-EDT,569;000000000000 Return-path: Mail-From: AAB created at 12-Jul-83 13:39:01 Date: 12 Jul 1983 1339-EDT From: Andrew A. Berlin Subject: Scode analyser To: HANSON@MIT-OZ cc: SCHEME-I@MIT-OZ My scode analyser APPEARS to work. However, be warned that it is a very difficult thing to test adequately, and I wouldn't be at all surprised to find more bugs hiding somewhere. The code lives in src:anal.scm Anything with a ;* in front of it needs to be looked at/clarified (in terms of what it is supposed to do). ---Andy ------- 13-Jul-83 16:27:57-EDT,1096;000000000000 Return-path: Mail-From: HANSON created at 13-Jul-83 16:25:18 Date: Wed, 13 Jul 1983 16:25 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: Confusion... I have just straightened out all of the screwups that have been causing us trouble over the past week. Microcodes 2.16 and 2.17, and bands 4.29 and 4.30 have been completely redone. The SCM:, BIN:, and ASM: directories have been straightened out, and now agree completely with the directories on OZ (I think!). Part of the problem was that someone has been using the BIN: directory for storing files that weren't in any band. THIS IS FORBIDDEN!!! Use you own directories until the band is released. The following files were moved from BIN: to /USERS/HANSON/RANDOM. If they are yours, you can get them from there: BOOT.42, BOOT.43, COLD.160, MAKE-GLOBAL.1, OCOLD.151, OCOLD.152, OINTRPT.25, OINTRPT.26, OUPRIMS.107, OUTILS.95, REP.214, START.53, START.57, SYNTABLE.18, UTILS.100. Don't let this happen again. Still to be done (not now): CROSS4.29 and CROSS4.30 should be rebuilt. 13-Jul-83 17:37:38-EDT,784;000000000000 Return-path: Mail-From: AC created at 13-Jul-83 17:34:25 Date: 13 Jul 1983 1734-EDT From: Anthony J. Courtemanche Subject: Completing the Unconfusion To: HANSON@MIT-OZ cc: SCHEME-TEAM@MIT-OZ CCOLD.SCM.157 and CCOLD.SCM.158 now match up with their respective COLD files. All that needs to be done is for these files to be cross syntaxed , CCOLDs FFASLed in their respective mircocodes (2.16 and 2.18), and disk-saves to the proper CROSS files. I would have done it myself but I didn't know where to put the SPEC files from cross syntaxing the ccolds. (If you show this bit of text to the average Joe on the street, he'll think I'm either crazy or unable the speak the language.) Anthony ------- 13-Jul-83 21:32:48-EDT,997;000000000000 Return-path: Mail-From: AAB created at 13-Jul-83 21:28:04 Date: 13 Jul 1983 2128-EDT From: Andrew A. Berlin Subject: Internal Advice To: scheme-i@MIT-OZ This afternoon, I came up with a neat little kludge that lets one do internal advice. Several user-interface questions come up: 1) If you unadvise a procedure, should all its internal procedures become unadvised? 2) If you ask for the advice on a procedure, should you see the internal procedures advice also? (There is a way to see the advice on a particular internal procedure). ------------ Ac mentioned that someone told him that it was not really legal to have procedures nested more than two deep, although Scheme currently doesn't stop you. i.e. (define (foo) (define (bar) (define (baz) baz))) isn't legal. This doesn't sound right. Will someone please declare this either legal or illegal. (I don't see what's wrong with it). ---Andy ------- 13-Jul-83 23:03:43-EDT,401;000000000000 Return-path: Mail-From: HANSON created at 13-Jul-83 23:02:51 Date: Wed, 13 Jul 1983 23:02 EDT From: HANSON@MIT-OZ To: Anthony J. Courtemanche Cc: SCHEME-TEAM@MIT-OZ Subject: Completing the Unconfusion In-reply-to: Msg of 13 Jul 1983 17:34-EDT from Anthony J. Courtemanche The microcode 2.18 was never checked by me. It probably needs to be rebuilt. 13-Jul-83 23:07:58-EDT,1519;000000000000 Return-path: Mail-From: HANSON created at 13-Jul-83 23:05:38 Date: Wed, 13 Jul 1983 23:05 EDT From: HANSON@MIT-OZ To: Andrew A. Berlin Cc: scheme-i@MIT-OZ Subject: Internal Advice In-reply-to: Msg of 13 Jul 1983 21:28-EDT from Andrew A. Berlin Date: Wednesday, 13 July 1983 21:28-EDT From: Andrew A. Berlin This afternoon, I came up with a neat little kludge that lets one do internal advice. I'd like to know what it is! I know at least one way to do it. Several user-interface questions come up: 1) If you unadvise a procedure, should all its internal procedures become unadvised? 2) If you ask for the advice on a procedure, should you see the internal procedures advice also? (There is a way to see the advice on a particular internal procedure). I suspect that it should be possible to do it either way. But since I rarely use hairy forms of advice I'm not really qualified. ------------ Ac mentioned that someone told him that it was not really legal to have procedures nested more than two deep, although Scheme currently doesn't stop you. i.e. (define (foo) (define (bar) (define (baz) baz))) isn't legal. This doesn't sound right. Will someone please declare this either legal or illegal. (I don't see what's wrong with it). It is completely legal. Anthony, what substance caused your mind to generate such bits? 14-Jul-83 00:33:08-EDT,2228;000000000000 Return-path: Mail-From: AAB created at 14-Jul-83 00:30:35 Date: 14 Jul 1983 0030-EDT From: Andrew A. Berlin Subject: internal advice (medium length, detailed message). To: hanson@MIT-OZ cc: scheme-i@MIT-OZ Explanation of internal-advice kludge: Well, the current advising procedures want to take a COMPOUND-PROCEDURE as an argument, i.e. (advise-entry COMPOUND-PROCEDURE advice). The trick is to come up with a compound-procedure which points to this internal procedure. For internal procedures, I wrote something that looks like this: (APPLY-FUNCTION-TO-INTERNAL-PROCEDURE function-to-apply function-with-internal-defines path-name optional-arguments) i.e. (define (foo x) (define (bar y) (define (baz z) ...body...))) To advise-entry baz, you would (apply-function-to-internal-procedure advise-entry foo '(bar baz) advisor-procedure) Of course, the user-interface needs to be written. ------- It scans down the scode, until it finds the first definition specified in the path, then it scans down the DEFINITION-VALUE until it finds the next definition in the path. When the last definition in the path has been found, the definition-value is a [PROCEDURE]. I then make a closure that looks like ([procedure] . dummy-environment), and call the specified function with this kludgy-closure as the argument, followed by any other arguments which were specified to the call to "internal-apply." listing advice on an internal procedure comes free: (apply-function-to-internal-procedure advice foo '(bar baz)) ;no arguments this time. This could also be used to pretty-print, or do a WHERE on a internal procedure: (apply-function-to-internal-procedure WHERE foo '(bar baz)) would do a where on baz. I was thinking that some day, we might actually hook advice up to the scode analyser, which could return a list of definition-objects, whose values one could then advise. This would solve the problem of defines within LETs, etc. Is this what you had in mind?? ---Andy ------- 14-Jul-83 01:18:31-EDT,510;000000000000 Return-path: Mail-From: AAB created at 14-Jul-83 01:17:45 Date: 14 Jul 1983 0117-EDT From: Andrew A. Berlin Subject: Correction to previous advice message To: hanson@MIT-OZ cc: scheme-i@MIT-OZ Sorry about that: You can't use APPLY-FUNCTION-TO-INTERNAL-PROCEDURE to do a WHERE on an internal procedure, as the environment doesn't exist yet. You can however use it for PP, advice, break, trace, etc., i.e. anything that doesn't need the environment. ---Andy ------- 14-Jul-83 07:53:36-EDT,1075;000000000000 Return-path: Mail-From: JMILLER created at 14-Jul-83 07:50:34 Date: 14 Jul 1983 0750-EDT Sender: JMILLER at MIT-OZ Subject: Re: Internal Advice From: JMILLER at MIT-OZ To: AAB at MIT-OZ Cc: Scheme-Team at MIT-OZ Message-ID: <[MIT-OZ]14-Jul-83 07:50:34.JMILLER> In-Reply-To: Your message of 13 Jul 1983 2128-EDT (1) Sounds to me like two different procedures ... one does and one doesn't. By the way, if I advise an internal procedure, do you effectively 'clobber' the code part of the procedure object? If so, procedures already returned based on this will become advised. Sometimes this is good, and sometimes it isn't. Let's talk about this one tomorrow morning? (2) I think it should return internal as well, but perhaps in a way that makes it easy to determine which is internal and which is not. (3) I hereby declare it legal to nest up to a depth of 256 levels. Dispensations to go beyond this level can be obtained, but only if the desired code is displayed before introduction into a running Scheme system. --Jim 20-Jul-83 01:21:57-EDT,2376;000000000000 Return-path: Mail-From: HANSON created at 19-Jul-83 19:42:55 Date: Tue, 19 Jul 1983 19:42 EDT From: HANSON@MIT-OZ To: Scheme-Team@MIT-OZ Subject: [AAB: Directories] Date: Tuesday, 19 July 1983 13:45-EDT From: Andrew A. Berlin To: Hanson Re: Directories A summary of what each directory should be used for: On OZ: SCM: (i.e. src:) contains THE current sources. It is THE CURRENT VERSION. Do not edit files in this directory - files should only be put here AFTER you have made the changes in your own directory. RSCM: (ie src: contains older, very well tested, WORKING sources. DO NOT PUT FILES HERE. On the SRM: SCM: contains the sources for the current band, and should match the sources on oz. Nothing should be in this directory which is not also on OZ, although there may be files on oz which have not yet been transfered to the srm. BIN: Contains the cross-syntaxed versions of the scm: files. Nothing should be in this directory which does not have a corresponding entry in SCM: BANDS: Contains the current band, and older bands. DO NOT WRITE A BAND HERE unless you have 1) Tested it (a lisp dump will be made by AC). 2) MOVED THE SOURCES TO SCM: and the syntaxed files to BIN: (keep in mind the rules about scm: matching oz. 3) Updated the versions file on OZ (scm:versions.scm). NOTE: There are many people making changes at once. If you copy a file from scm: to your directory to work on it, make a note of the version number. When you have made your changes, make sure nobody has written a new version before you put it back in scm:. Procedure for making changes: 1) Make the changes in your directory and test them. 2) If nobody else has updated the files you were using, then move them to scm:. If someone else made changes, you will have to merge them with your version before moving yours to scm:. 3) Transfer the files to scm: on the SRM. 4) Cross syntax the files on the srm, putting the binary output into BIN: 5) Dump a band into bands: