💾 Archived View for gemini.spam.works › mirrors › textfiles › humor › COMPUTER › sys286.msg captured on 2022-06-12 at 09:25:05.
View Raw
More Information
-=-=-=-=-=-=-
.c -*- Hey, ZISNAGAZ (ZISNAGAZ Is Not As Good As Zwei), this is bogus Text -*-
RELEASE NOTES FOR SYSTEM 286 (TM)
(c) 1982 Slimebolics Machines Inc.
Enhancements (c) 1982 Metaphorics, Inc.
Enhancements (c) 1982 Digicomputronomatics,
a Division of Flexopneumohydroservosystematization and Control
[better known by its acronym, Flexopneumohydroservosystematization and C]
Enhancements (c) 1982 Hyperbolics, Inc.
(The number 286 is a trademark of Hyperbolics, Inc. Usage of System 286 or
MCR286 (used by systems 231-285) will result in prosecution.)
- ** An invalid MIT copyright notice on OZ:SRC:<L.DOC>SYS286.MSG removed on
- ** 2/31/82 by Hyperbolics personnel. This file had been installed as the
- ** official SLiMi source in direct contravention to instructions to
- ** Digicomputronomatics personnel acting on Metaphorics' behalf.
INTRODUCTION
These notes accompany the Symbolic Lisp Machines Inc. (SLiMi) software release
that includes System version 286 (TM). They cover all important changes since
the System 279 (TM) release notes, except those you get to find out about for
yourself.
This document is in the following files:
EE:LIB:<LISPM.DOCUMENTATION>SYSTEM-286.RELEASE
AI: LMDOC; SYS286 MSG
OZ: SRC: <L.DOC>SYS286.MSG
SCRC:<DOC>MIT-RELEASE-286.TEXT
There have been no particularly major changes in system 286 (TM). There are
the usual slew of minor bug fixes, some slight performance improvements, some
minor new features, and a pile of new bugs. Hoo Boy!
This set of release notes is very, very long. To help make it more manageable,
these release notes are divided into five sections:
o Changes to take note of.
Everybody should read, or at least skim, this section. It tells
about incompatible changes that might break programs, or that might
confuse you. Don't worry, most of them confuse us too.
o Changes that only affect advanced users.
The changes in this section might break programs written by advanced
users, but are very unlikely to affect normal or casual users of the
system. You only have to worry about things in this section if you
work with advanced subsystems and use advanced features. Regretably,
we have yet to locate a normal user of our systems. You'll all have
to slog through this garbage eventually. Get it over with now.
o Upward-compatible changes.
This section documents new features. You can skip this entirely if
you don't feel like reading a lot of stuff. However, there are
several interesting new features that you might like to know about,
and we encourage you to take advantage of them. The mandatory Pascal
syntax required in this release is a good example. Maintainers of
non-SLiMi systems will want to look here to see what code to copy.
o Notes.
This section isn't about changes at all. It answers some commonly
asked questions and provides various news. Of course, you can skip
this entirely if you like, but we haven't got anywhere else to advertise.
We'll know if you skip it, though. Wait till you want help.
o Bugs.
This section really doesn't tell you much, except for which functions
the documention had been deleted as the functions don't work. You
also can safely skip this section, especially if you don't care why
your machine just crashed. A bug in our text formatter (Scribble,
not for non-personnel) has caused this section to disappear.
SUMMARY OF CHANGES.
Changes to take note of.
[1] The garbage collector now works.
[2] Recursion is now obsolete and will generate compiler warnings. Use LOOP.
[3] Common lisp installed.
[4] LOOP is now obsolete and will generate compiler warnings. Use recursion.
[5] Docuemtation for all numbers.
Changes that only affect advanced users.
[1] In Zwei, M-X Visit Other Window in Other Microcode works again.
[2] Change to implementation of WITHOUT-INTERRUPTS and UNWIND-PROTECT.
[3] SK combinators are now the primitive programming elements.
[4] Bug in HALTSP fixed.
Upward-compatible changes.
[1] ZMail has new menu item "IGNORE".
[2] LOOP has been extended.
[3] Advertising.
[4] CAR and CDR now return extra values.
[5] The TV:WIN-BIG special form.
[6] m-X View Function Through Rose Colored Glasses.
[7] New file system editor.
[8] RMail installed.
[9] Password server.
[10] JCL support as alternative to system menu.
[11] A new system, the CIRCULATORY system, has been added.
[12] Compiler optimization.
[13] NIL ;;we're superstitious
[14] New server: EVIL server.
[15] Package DWIM improved.
[16] New special form: WITHOUT-NES
[17] New function: TV:DWIMIFY
[18] Memory storage and allocation improved.
[19] Personality awareness.
[20] New ZWEI commands.
Notes.
[1] New mice.
[2] Helpful hints in using CPT monitors.
[3] Confusion concerning MAPCAR cleared up.
[4] New machine to be relased soon.
[5] New address for bug reports.
CHANGES TO TAKE NOTE OF.
[1] The garbage collector now works. In addition a new, experimental
garbage collection algorithm has been installed.
With SI:%%DSK-GC-QLX-BITS set to 17. [the default] the old garbage
collection algorithm remains in force: when virtual storage is filled,
the machine cold boots itself.
With SI:%%DSK-GC-QLX-BITS set to 23. the new garbage collector is
enabled. Unlike most current garbage collectors, the new gc starts its
mark phase from the mind of the user, rather than from the obarray.
This allows the garbage collection of significantly more Qs. As the
garbage collector runs, it may ask you something like ``Do you remember
what SI:RDTBL-TRANS does?'' and if you can't give a reasonable answer in
thirty seconds, the symbol becomes a candidate for GCing.
The variable SI:%%GC-QLX-LUSER-TM governs how long the GC waits before
timing out the user.
The variable SI:%%GC-QLX-LUSER-STREAM-IS-BACKGROUND if T will
only allow the user to answer GC related questions while to background
window NEVER-GIVE-THE-USER-A-BREAK-IN-ANSWERING-GC-RELATED-QUESTIONS-1
is exposed. This window is created as a background window with as
deexposed typeout action of permit and an exposed typein action of
Other: &ignore.
[2] Recursion is now obsolete. Use LOOP.
Direct use of recursion will be temporarily supported giving only a
style warning from the compiler.
See the new RECURSIVELY keyword to LOOP.
[3] Common lisp installed.
The semantics of most functions have changed to conform to Common Lisp.
Many argument orders have been reversed. Truth and falsity have reverted
to the Lisp 1.5 definitions: T is bound to *T* and F is bound to NIL.
However, code which refers only to primitives in the set {1+, CAR, CDR,
COND, CONS, DEFUN, LAMBDA, SETQ, ZEROP} should continue to function
normally. Note: (NOT T) generates an error.
Numbers are now also EQ so = is now obsolete and will not work.
Also, you should replace (>= A B) with (OR (> A B) (EQ A B)) and
the same goes for <=.
[4] LOOP is now obsolete. Use recursion.
Direct use of LOOP will be temporarily supported giving only a style
warning from the compiler.
Recode your LOOP code using recursion, making sure you have a
terminating clause in the definition.
[5] Number are documented.
As part of our policy of keeping things well documented, all numbers
in the system must be documented. Creation of a number without any
documentation will result in an error. Use of the DESCRIBE function
on a number will print out its documentation. Note that numbers are
EQ now, so don't try to use one number for more than one purpose.
(That's why there's an infinite number of them.) (Well, almost,
as we only have a sex bit machine.)
CHANGES THAT ONLY AFFECT ADVANCED USERS.
[1] In Zwei, m-X Visit Other Window in Other Microcode works again.
As you will recall, this oft-broken feature is a conceptual extension of
c-X O, allowing system designers to visit their competitors' systems in
a second Zwei window. This way, they can test that their new features
will run only in microcodes compatible with their political beliefs
without even rebooting their machines.
[2] Change to implementation of WITHOUT-INTERRUPTS and UNWIND-PROTECT.
In an attempt to reduce the number of control special forms in the
language, WITHOUT-INTERRUPTS and UNWIND-PROTECT are now just ordinary
functions, no longer special forms. Their calling conventions, however,
remain unchanged.
[3] SK combinators are now the primitive programming elements.
(SKK(KSKKS(SKS)(KKS(KKKSKSSSK))(KKS)(SSSKSK((KKS)((SKSS))))))!
They go best with dotted pairs such as ((SKK.(KS.S).(KSKSS)).(S.K))
[4] Bug in HALTSP fixed.
The bug which caused HALTSP to get hung in a tight microcode loop when
given certain pathological arguments (such as its own FEF) has been fixed.
This function now always returns.
UPWARD-COMPATIBLE CHANGES.
[1] ZMail has new menu item "IGNORE".
Mousing this item with a left click will reply to the current message
with one of several cleverly worded messages chosen at random from the
list held by the variable ZWEI:*GLIB-REPLIES*. This list defaultly
includes messages like "Fixed in the new error system.", "Fixed in the
new activity system.", and "Fixed in the new system system."
Other messages include "This is a Twenex bug.", "This is a Multics
bug.", and the quite useful "Loser, that's a feature. Next time mail
to the right list: FEATURE-LISPM."
With a middle click, different tactics are tried. A fake message from
COMSAT or XMAILR is formatted to say that the message was undeliverable
due to microwave bridge sabotage.
A right click will just caused the message to be ignored.
[2] LOOP has been extended.
The new RECURSIVELY keyword handles cases that would seem to require
recursion.
This is simplest to explain with an example. Where formerly you had to
write:
(DEFUN EQUAL (X Y)
(IF (OR (NLISTP X) (NLISTP Y)) (EQ X Y)
(AND (EQUAL (CAR X) (CAR Y)) (EQUAL (CDR X) (CDR Y)))))
you can now write simply:
(DEFUN EQUAL (X Y)
(LOOP RECURSIVELY INTO X AND Y
DESCENDING-UNTIL (OR (NLISTP X) (NLISTP Y))
FAILING-IF (NEQ X Y)
PREMATURELY NIL
FINALLY T
BELATEDLY (FERROR NIL "Bug in LOOP! Please report this to JONL.")))
[3] Advertising.
The function SI:BITBLT-SUBLIMINALLY is now released to users. You've
probably seen it used many times without realizing it. It's the function
that the system uses at random intervals to display the message "Converse
isn't all THAT bad" on the screen in our official corporate font for
50msec. You're probably wondering how we can do anything on the screen in
50msec, but take our word for it that it works. We hardly get any more
bug reports on Converse and we haven't fixed any bugs in it for months.
Note: this function will cause your machine to crash if you use it to
say anything bad about our company or its code.
[4] CAR and CDR now return extra values.
The function CAR now returns two values. Since it has to go to the
trouble to figure out if the object is carcdr-able anyway, we figured
you might as well get both halves at once. For example, the following
code shows how to destructure a cons (SOME-CONS) into its two slots
(THE-CAR and THE-CDR):
(MULTIPLE-VALUE-BIND (THE-CAR THE-CDR) (CAR SOME-CONS) ...)
For symmetry with CAR, CDR returns a second value which is the CAR of
the object.
In a related change, the functions MAKE-ARRAY and CONS have been fixed
so they don't allocate any storage except on the stack. This should
hopefully help people who don't like using the garbage collector because
it cold boots the machine so often.
[5] The TV:WIN-BIG special form is useful for writing window system
code.
The TV:WIN-BIG special form is a macro whose function is to ensure that
all "window system" code executed inside of it will work correctly. This
special form combines all the features of these now obsolete window
system functions:
TV:WITH-BLINKER-READY
TV:SHEET-FORCE-ACCESS
TV:WITH-DEADLY-FORCE-AND-LICENCE-TO-KILL
TV:DELAYING-SCREEN-MANAGMENT
TV:DELAYING-YOUR-PAYCHECK
TV:WITH-MOUSE-GRABBED
TV:WITH-MOUSE-YU-SHIANG-STYLE
TV:OPEN-BLINKER
TV:CLOSE-THE-DOOR
TV:OPEN-DOOR-AT-COMPETIORS
TV:MOUSE-BLINKER-FAST-TRACKING-MIXIN
TV:FAST-NEW-CAR-FOR-CHRISTMAS-MIXIN
TV:STEVES-MIXIN
TV:SWITCH-FROM-VHF-TO-UHF
TV:SCREEN-UNPROTECT
An example of the TV:WIN-BIG special form follows: Where previously it
took pages of code to arrange things so that you could use the mouse to
draw a box on the screen, now all that is needed is:
(TV:WIN-BIG
(DRAW A BOX ON THE TV:SCREEN USING THE FURRY:MOUSE))
OK!
[6] The Zwei command m-X View Function Through Rose Colored Glasses has
been installed. It is also available on h-c-V. This command (invaluable
when reading SLiMi system source code) reads and analyzes the function
that the point is in and recodes it, removing crocks, hacks, obscurities,
and SETQs in COND branches. On machines with color screens, the recoded
definition is also displayed on the color screen in shocking pink. With a
c-U argument, h-c-V will replace the version in the buffer with the
recoded version.
m-X View Function Through Rose Colored Glasses has aesthetic parameters
you can set to suit your own coding style.
ZWEI:*ACCEPTABLE-LOOPING-CONSTRUCTS*, initially set to (LOOP), is a
list of the special forms the command will use in coding loops.
ZWEI:*ALLOW-SETQS-IN-COND-BRANCHES* is for diehard losers.
ZWEI:*REQUIRE-SETQS-IN-COND-BRANCHES* is for our maintenance personnel,
the number of whom is now a bignum.
ZWEI:%%PROG-DENSITY-THRESHOLD is the minimum percentage of PROG's allowed
as a percentage of all lines of code. DO NOT USE A NUMBER LESS THAN 40.
[7] New file system editor.
A meta-level up from Dired, the new File System Editor gives you the
same control of file systems on your machine that Dired used to give you
of files. So if your disk seems overly cluttered with file systems, you
can just type c-X s-D and you'll be put in a window where you can remove
the file systems you don't want with a single keystroke.
[8] RMail windows installed.
Like ZMail windows, but tolerably fast. Built out of essentially the
same flavors but omitting TV:MOLLASSES-MIXIN.
[9] Password server.
If you fail three times to remember your password when asked for it, all
other lisp machine users will be queried to see if they can remember.
This is built on CHAOS:NOTIFY-ALL-LMS. This shouldn't be really have
to be used, as everytime you use a new password, the next patch file
updated to store your password. That's why it takes so long to
read in all of the patch-directories. (For your protection, only
your encrypted password is saved.)
[10] JCL support as alternative to system menu.
In our continuing effort to support languages other than Lisp on the
CADDR, we have developed an OS/360-compatible JCL. This can be used as
a alternative to the standard system menu. Type System J to get to a
JCL interactive read-execute-diagnose loop window. [Note that for 360
compatibility, all input lines are truncated to 80 characters.] This
window also maintains a mouse-sensitive display of critical job
parameters such as dataset allocation, core allocation, channels, etc.
When a JCL syntax error is detected or your job ABENDs, the
window-oriented JCL debugger is entered. The JCL debugger displays
appropriate OS/360 error messages (such as IEC703, ``disk error'') and
allows you to dequeue your job.
[11] A new system, the CIRCULATORY system, has been added.
The long-experimental CIRCULATORY system has been released to users.
The Lisp Machine uses Type B fluid, the L machine uses Type A fluid.
When the switch to Common Lisp occurs both machines will, of course, be
Type O. Please check fluid level by using the DIP stick which is
located in the back of VMI monitors. Unchecked low fluid levels can
cause poor paging performance.
[12] Speed up in efficiency for LET.
Compiler optimizations have been made to macro expand LET
into a WITHOUT-INTERRUPTS special form so that it can PUSH
things into a stack in the LET-OPTIMIZATION area, SETQ
the variables and then POP them back when its done. Don't
worry about this unless you use multiprocessing.
Note that LET *could* have been defined by:
(LET ((LET '`(LET ((LET ',LET))
,LET)))
`(LET ((LET ',LET))
,LET))
This is believed to speed up execution by as much as a factor
of 1.01 or 3.50 depending on whether you believe our friendly
marketing representatives. This code was written by a new
programmer here (we snatched him away from Itty Bitti Machines
where we was writting COUGHBOL code) so to give him confidence
we trusted his vows of "it works pretty well" and installed it.
;;an unlucky number was omitted. (the code didn't work)
[14] New server: EVIL server.
A new server, the EVIL server, has been installed for your pleasure.
Now anyone can connect to your machine cause havoc on your machine.
If there is no data on the next packet you recieve on the EVIL connection,
as random function is called. If you are given a negative number,
you automatically open an EVIL connection on their machine, and send
them as their data, the absolute value of that number. A small fixnum
will cause one of your Chaos connections to be closed. A large fixnum
will cause one of your ZWEI buffers to be killed. A small flonum
will cause a random message to be sent to all objects in your world.
A large flonum will do randomly do a warm boot or cold boot, and a bignum
will start cause you to start EVIL serving all machines at your site,
and then crash your machine.
As usual, most of the user settable variables relavent are undocumented,
but we will tell you that you can set EVIL:ESCALATION-FUNCTION to
some expression to escalate the numbethat you were sent, and start
EVIL serving the person who got you. Note that you can also set
EVIL:*NUMBER-OF-DIRTY-MESSAGES* to an number of insults to be
returned in your SLOW-ANSWER-STRING. The evil server is implimented
using .daemon. flavors.
[15] Package DWIM improved.
So that error handling caused by by typing the name of a function
will be faster, all functions, variables and symbols which are
unique are now globalized. Note that PKG-GOTO is obsolete.
PKG-GOSUB is still maintained for downward compatability.
[16] New special form: WITHOUT-NES
So that error handling will be faster, just wrap a
WITHOUT-NES form around the body. Afterwards, you
will be able to quickly get MUCKLISP style error messags
like ;Bpt: i/o lossage. This form is already wrapped around
LISP-TOPLEVEL99 for you. Just remember to set the variable
*ALLOW-ERROR-IN-ERROR-HANDLER* to T to avoid infinite loops.
[17] New function: TV:DWIMIFY
Pops up a menu window, and runs an AI program to do what
you mean instead of what you click. Great when your
mouse is flakey.
[18] Memory storage and allocation improved.
There is a new special form: WITHOUT-CONSING.
This special form will ensure that now consing is done
evaluating its body. This is used by the garbage
collector to make sure you don't create more garbage
than you free up. Also, if your idle time exceeds
*IDLE-TIME-BEFORE-GC* 60ths of second, a full gc is
ddone for you. Just don't do a HACKS:PIZZA and take
too long eating it.
[19] Personality awareness.
Set the variable *LOSERS* to all the people that you think are losers.
This will cause all the variable *PEOPLE-WHO-THINK-I-AM-A-LOSER*
to be updated in all of your loser's init file. Now you can run
a program on another machine which if there are no free lisp machines,
will free up one just for you, by cold booting it.
[20] New ZWEI command.
SUPER-HYPER-META-CONTROL-SHIFT-GREEK-X Correct Grammar will correct
grammer of buffer the.
SUPER-HYPER-META-CONTROL-SHIFT-GREEK-X Correct Programming Bugs
will correct bugs in your programming, provided you have Set
Default programming language.
SUPER-HYPER-META-CONTROL-SHIFT-GREEK-X Translate Into Language
will prompt you for a two new langauges: the first is the langauge
to translate the program into, the second is the langauge to
translate the comments into. Known langauges are found in the
variable *LINGUA-KNOWLECHEN* (from the Latin and the French).
If you set this variable to include a language it really doesn't
know, it will try hard to find the language on the File-computer
(not yet supported in the default file system).
NOTES.
[1] New mice.
Remember those white mice that were fed 20 liters of strong coffee a
day? New mice in our official corporate colors will arrive soon.
Remember, our mice are much better than our competitor's rats.
[2] Helpful hints in using CPT monitors
A new font is available for users of CPT monitors. FIX200 allows a full
5 x 8 character area of your file to be visible simultaneously, despite
the slight imperfections in the newer CPT monitors [users of older CPT
monitors will have to wait for the upcoming release of FIX400]. A crash
development effort to develop horizontal scrolling in the editor is
underway. Howard is away on vacation, however, and no one else can
fathom the window system code.
Our crack hardware team has announced the availability of retrofit kits
consisting of microscopes with image intensifiers, and a case of
dramamine tablets. Marketing can't decide the price for this, however,
so you'll just have to wait.
[3] There has been some confusion concerning MAPCAR.
(DEFUN MAPCAR (&FUNCTIONAL FCN &EVAL &REST LISTS) ;(c) SLiMi, 1982
(PROG (V P LP)
(SETQ P (LOCF V))
L (SETQ LP LISTS)
(%START-FUNCTION-CALL FCN T (LENGTH LISTS) NIL)
L1 (OR LP (GO L2))
(AND (NULL (CAR LP)) (RETURN V))
(%PUSH (CAAR LP))
(RPLACA LP (CDAR LP))
(SETQ LP (CDR LP))
(GO L1)
L2 (%FINISH-FUNCTION-CALL FCN T (LENGTH LISTS) NIL)
(SETQ LP (%POP))
(RPLACD P (SETQ P (NCONS LP)))
(GO L)))
We hope this clears up the many questions we've had about it.
[4] New address for bug reports.
Bug reports now amount to an average of 12,853 per day. Unfortunately,
this is only a small fraction [ < 1% ] of the mail volume sent to
BUG-SLiMi. In order that we may more expeditiously deal with these
valuable messages, please communicate them by one of the following
paths:
ARPANET sites: "Wastebasket@SLiMiHQ"@AI
Note: AI is not expected to run TCP/IP so mail will not get through
after January 1. So much the better.
UUCP sites: ucb70!progn!a!caddr!cddadr!fubar!go!a!slimivixen!slimivaxen!slimihq!wastebasket
Non-network sites: Federal Express to:
Wastebasket
Room NE43-926
Copernicus, The Moon, 12345-6789
Dialnet number 1-900-555-1212
Our trained operators are on call 24-hours a day. That toll-free number
again is 1-900-555-1212. Try some today. Visa and Mastercharge
accepted. *
Our very rich lawyers assure us that we are not responsible
for any errors in advice given over the phone.