Date: 1 Dec. 1982 11:19 pm PST (Wednesday)
Sender: Levin.PA
Subject: Cedar 3.5 release (part 2 of 2)
From: Release Master
To: CedarUsers↑, CedarImplementors↑
cc: CedarCoordinators↑
Reply-To: Levin


System components
-------------------

The following is a complete list of the system components included in this
release.  Details about the relationship of each component to the previous release
and pointers to documentation and DF files appear in the "Summary of Release
Components" section, below.  The components whose names are preceded by an
asterisk can be ignored by the casual Cedar user.

*AMEvents			*New*		Implementation in boot file
AMModel			*New*		Implementation in boot file
AMTypes			*New*		Implementation in boot file
*BasicHeads			*Changed*		Implementation in boot file
BBV				*Changed*		Implementation in boot file
*BCD
Binder
BravoToTioga		*Changed*
*BTrees			*Changed*
BugBane			*Changed*		Implementation in boot file
*CedarControl		*Withdrawn*	Subsumed by CedarRoot
*CedarDB			*Changed*
CedarReals						Implementation in boot file
CedarRoot			*New*		Implementation in boot file
CedarSnapshot		*Changed*		Implementation in boot file
Chat				*Changed*
CIFS				*Changed*		Implementation in boot file
CoFork			*Changed*
ClientFileTool		*New*
Clock				*Changed*
*ColorPackage		*Changed*		Implementation in boot file
*Communication					Implementation in boot file
*CompatibilityPackage	*Changed*		Implementation in boot file
Compiler
*D0Microcode
DateAndTime		*Changed*		Implementation in boot file
DFFiles			*Changed*
*DLionMicrocode
*DoradoMicrocode
*FileSystemCommands	*Changed*
FileTool			*Changed*		Implementation in boot file
FlushUnneededTempFiles	*New*
Forms
*Germ						Separate boot file
GrapevineUser					Implementation in boot file
Graphics			*Changed*		Implementation in boot file
*IFSFile
IncludeChecker		*Changed*
*Inscript			*Changed*		Implementation in boot file
IO				*Changed*		Implementation in boot file
*Lister
ListsAndAtoms		*Changed*		Implementation in boot file
*Loader			*Changed*		Implementation in boot file
Lupine			*Changed*
Maintain			*Changed*
*MakeBoot			*Changed*
MCross			*Changed*
*MesaScanner		*Changed*
Modeller			*Changed*
OnlineMergeSort
Othello			*Changed*		Separate boot file
*Packager
PerfStats			*Changed*	
*PGS	
PilotBootToEtherBoot	*Withdrawn*	Subsumed by MakeBoot
*PilotKernel			*Changed*		Implementation in boot file
*Pine
PlotPackage			*Changed*
Poplar			*Changed*
PressPackage			*Withdrawn*	Subsumed by TSetter
PressScreen			*Withdrawn*	Subsumed by TSetter
Print				*Changed*
PriorityQueue		*Changed*
Pup				*Changed*		Implementation in boot file
*Pupwatch			*Changed*
Random
RedBlackTree		*Changed*
RedBlackTreeRef		*Changed*
Reminder			*Changed*
Rigging			*Changed*		Implementation in boot file
*RPCRuntime		*Changed*		Implementation in boot file
Runtime & RuntimeTypes	*Withdrawn*	See SafeStorage, AM*
SafeStorage			*New*		Implementation in boot file
SampleTool			*Changed*
ScanZones			*New*
*Sequin
Set				*Changed*
SirPress			*Changed*
*SpecialTerminal		*New*		Implementation in boot file
Spy				*Changed*
Squirrel			*Changed*
STPServer			*Changed*
*TerminalMultiplex		*Changed*		Implementation in boot file
TJaMGraphics		*Changed*
TSetter			*Changed*
*TTYIO			*Changed*
UECP				*Changed*
Unique			*Changed*
UserCredentials		*Changed*		Implementation in boot file
UserExec			*Changed*		Implementation in boot file
*VersionMap		*Changed*		Implementation in boot file
*VersionMapBuilder	*Newly Released*	
Viewers & Tioga		*Changed*		Implementation in boot file
ViewRec			*New*
VTables			*Changed*
Walnut			*Changed*
WalnutSend			*Changed*
Watch			*Changed*
Waterlily			*Changed*
*WorldVM			*Changed*		Implementation in boot file


Summary of Release Components
-------------------------------

Note:  In the descriptions that follow, unless otherwise specified, the DF file or
files for a component are located on [Indigo]<Cedar>Top>.  If the documentation
file name is not a path, it is assumed to be accessible using the DF file name and
BringOver, i.e.,

	BringOver /o DocFileName DFFileName

In general, documentation is stored on

	[Indigo]<Cedar>Documentation>ComponentName.press

but there are occasional exceptions.

AMEvents
----------
DF file:  AMEvents.df
Documentation:  None - consult implementor before using
Implementor:  Andrew Birrell 

New package, replacing ClientEvents

AMModel
----------
DF file:  AMModel.df
Documentation:  (See AMModel.mesa) 
Implementor:  Rovner 

AMModel.df replaces the part of Runtime.df that exported RTMiniModel.bcd,
which is now included in AMModelPackage.bcd. This exports the following
interfaces, accessible thru AMModel.df:
  AMMiniModelPrivate, AMModel, AMModelBridge, AMModelLocation,
AMModelPrivate,
  RTMiniModel

AMTypes
----------
DF file:  AMTypes.df
Documentation:  RTTypes.tioga, .press (NOT up to date yet) 
Implementor:  Rovner 

AMTypes.df replaces the part of Runtime.df that constituted RTT.bcd, which has
been renamed to AMTypesPackage.bcd. This exports the following interfaces,
accessible thru AMTypes.df:
               AMBridge, AMTypes, RemoteRope, RTTCache, RTFiles,
               RTSymbols, RTSymbolsPrivate, RTTBridge, RTTypes, RTTypesExtras,
               RTTypesPrivate, RTTRemoteBridge, RTTypesRemotePrivate,
SymbolTable
Clients of RTTypes should start to use AMTypes instead. AMTypes includes all
of the operations of RTTypes (with a few obscure exceptions and changes).
RTTypes will go away with the next release.

Clients of RTTBridge and RTTRemoteBridge should start to use AMBridge
instead. AMBridge includes all of the operations of RTTBridge and
RTTRemoteBridge (with a few obscure exceptions and changes: TVForFrame
replaces TVForFHReferent; TVForRemoteFrame replaces TVForRemoteFHReferent;
ContextPC replaces BytePC). RTTBridge and RTTRemoteBridge will go away with
the next release.              

BasicHeads
----------
DF file:  
   [Indigo]<Cedar>Heads>BasicHeadsCommon.df
   [Indigo]<Cedar>Heads>BasicHeadsDorado.df
   [Indigo]<Cedar>Heads>BasicHeadsD0.df
   [Indigo]<Cedar>Heads>BasicHeadsDLion.df

Documentation:  none
Implementor:  Taft 

Minor bug fixes only.

BBV
----
DF file:  BBV.df
Documentation:  BBV.doc
Implementor:  Atkinson 

Most users should avoid the BBV viewer and use the UserExec through Work
Areas instead.

BBV now handles remote debugging.  Clients of BBVOps and BBVForUserExec
routines will notice remote debugging related changes in these interfaces.

BCD
----
DF file:  BCD.df
Documentation:  contact implementor
Implementor:  Satterthwaite 

Unchanged from previous release.

Binder
------
DF file:  Binder.df
Documentation:  see Mesa 5.0 Reference Manual and Mesa User's Handbook
Implementor:  Satterthwaite 

Unchanged from previous release.

BravoToTioga
-------------
DF file:  BravoToTioga.df
Documentation:  See interfaces or contact implementor
Caretaker:  Bill Paxton

Recompilation only.

BTrees
------
DF file:  BTrees.df
Documentation:  contact implementor
Implementor:  Levin 

Minor changes.

BugBane
--------
DF file:  BugBane.df
Documentation:  BugBane.doc
Implementor:  Atkinson 

BugBane now supports remote debugging, although this facility is not yet
documented or fully debugged.  Changes to the internals of BugBane to allow
remote debugging have resulted in some loss of performance in handling
breakpoints in Cedar 3.5.  Numerous minor bugs have been fixed (numerous
minor bugs remain).

CedarDB
---------
DF file:  CedarDB.Df
Documentation:  see Cattell
Implementor:  Cattell 

Performance improvements only (only?!)

Cedar Reals
-----------
DF file: CedarReals.df
Documentation:  none
Implementor: Stewart 

Unchanged from previous release.

CedarRoot
---------
DF file:  CedarRoot.df
Documentation:  None
Implementor:  Levin 

This package replaces CedarControl and contains two miscellaneous interfaces
related to Cedar initialization, CedarInitOps and CedarVersion.  These interfaces
have changed only slightly since Cedar 3.4; the changes are upward compatible. 
The installation procedure has changed considerably, though only a few changes
are visible to the user:

1)  Cedar initialization recognizes two boot switches, D and L.  D is intended
primarily for system development and should not be mentioned by normal users. 
L invokes the "long dialogue", which permits semi-arbitrary control of the
installation procedure, and should be invoked only by knowledgeable users, at
least until adequate documentation is available.

2)  A number of "wired-in" parameters relating to the initialization of public
machines can be invoked by answering the "Is this a public machine?" question
affirmatively.  

3)  The size of the Cedar VM backing file is now preset at initialization and
cannot be influenced by the user.  However, the algorithm for its allocation is
now more intelligent and capable of dealing with fragmented disks (including
disks fragmented by bad pages).

CedarSnapshot
--------------
DF file:  CedarSnapshot.df
Documentation:  See comments in CedarSnapshot.mesa
Implementor:  Levin 

No interface changes have been made.  Checkpoint formats have changed
slightly, so new versions of Othello and CedarSnapshotD*.boot files are required. 
There are three significant functional changes.

1)  The checkpoint file is now a permanent file.  This has two major
consequences:

  a)  You can no longer get rid of a checkpoint simply by booting.  The
approved way to do so is to invoke CedarSnapshot.Delete from the interpreter. 
Booting the Booter volume with the "S" switch will have the same effect. 
Someday someone might want to provide a more attractive user interface.
  b)  You can make a checkpoint for the installed boot file, then boot from
another boot file (e.g., BasicCedarDorado) without destroying the checkpoint.  A
subsequent rollback will restore your state relative to the installed boot file.  This
is primarily of interest to Cedar implementors during the development cycle. 

2)  Checkpoint now calls RollbackProcs to cleanup after an unsuccessful
checkpoint attempt.  In the past, it didn't do so and lockups were possible if
Checkpoint was invoked when insufficient disk space was available.  However,
the error recovery in this situation still isn't perfect, and won't be until the
CedarSnapshot interface can next be changed.

3)  Booting from the Booter volume now deals with multiple volumes of type
"normal" in a (semi-)intelligent way.  It will rollback the first volume that
appears to have a valid checkpoint.  If no such volume exists, it will boot the
first volume that appears to have an installed boot file.  If no such volume exists,
it will contemplate its navel, displaying an appropriate maintenance panel code.

Chat
----
DF file:  Chat.df
Documentation:  contact implementor
Implementor:  Teitelman (not really but I touched it last) 

Recompilation only.

CIFS
----
DF file:  CIFS.df
Documentation:  CIFSManual.(tioga press)
Implementor:  Gifford, Schroeder 

The default free disk pages has been up-ed from 300 to 1000.

ClientFileTool
--------------
DF file:  ClientFileTool.df
Documentation:  none
Last touched by:  Andrew Birrell 

A trivial translation of the Copilot ClientFileTool into Cedar, intended for 4.0

Clock
-----
DF file:  Clock.df
Documentation:  Clock.mesa
Implementor:  Atkinson 

The date is now displayed when the clock is open (non-iconic).

CoFork
-------
DF file:  CoFork.df
Documentation:  none
Implementor:  Sturgis 

Recompilation only.

ColorPackage
-------------
DF file:  ColorPackage.df
Documentation:  See interfaces or contact implementor
Implementor:  Maureen Stone

Bug fixes only.

Communication
---------------
DF file:  Communication.df
Documentation:  Pilot Programmers' Guide and Pup package documentation
Implementor:  Birrell 

Unchanged from previous release.

CompatibilityPackage
--------------------
DF file:  CompatibilityPackage.df
Documentation:  None
Implementor:  Levin 

Rebuilt to include new Pup package.

Compiler
--------
DF file:  Compiler.df
Documentation:  Cedar7T11.press 
Implementor:  Satterthwaite 

Unchanged from previous release.

D0Microcode
------------
DF file:  D0Microcode.df
Documentation:  none
Implementor:  Fiala 

Unchanged from previous release.

DateAndTime
-------------
DF file:  DateAndTime.df
Documentation:  See comments in DateAndTime.mesa
Implementor:  Levin 

Bug fixes only.  DateAndTimeUnsafe.df has gone away, and the interface it
formerly exported, DateAndTimeUnsafe.mesa, is now available through
DateAndTime.df

DFFiles
-------
DF file:  DFFiles.DF
Documentation:  DFFilesRefMan.Press
Implementor:  Schmidt 

One bug fixed: BringOver uses less resident VM now.  The DF software no
longer allocates a single 256-page space;  you are less likely to run out of VM
when starting DF programs.

DLionMicrocode
---------------
DF file:  DLionMicrocode.df
Documentation:  See implementor
Implementor:  Sturgis 

Unchanged from previous release.

DoradoMicrocode
----------------
DF file:  DoradoMicrocode.df
Documentation:  [Indigo]<DoradoDocs>DoradoBooting.press
Implementor:  Taft 

Unchanged from previous release.

FileSystemCommands
--------------------
DF file:  CIFSCommands.df
Documentation:  CIFSManual.(tioga press)
Implementor:  Gifford, Schroeder 

Recompilation only.

FileTool
--------
DF file:  [Indigo]<PreCedar>Top>FileTool.df
Documentation:  Cedar 3.2 documentation
Implementor:  Stewart 

No user visible changes.  Small bug fixed.

FlushUnneededTempFiles
-------------------------
DF file:  FlushUnneededTempFiles.df
Documentation:  None
Implementor:  Levin 

This is a new facility that combs the disk for orphaned temporary files and
reclaims the disk space they occupy.  These files result from repeated rollbacks
and can eventually consume many hundreds of pages of disk space.  To invoke
this program, run FlushUnneededTempFiles.bcd from the Executive.  Because of
various possible races, it is best to do this only when nothing else is going on --
don't edit files or load windows when this program is running (it only takes a
minute or so).

Forms
------
DF file:  Forms.df
Documentation:  Internal
Implementor:  Horning 

Unchanged from previous release.

Germ
-----
DF files:  GermDorado.df, GermD0.df
Documentation:  "Pilot User's Handbook"
Implementor:  Taft 

Unchanged from previous release.

GrapevineUser
--------------
DF file:  GrapevineUser.df
Documentation:  [Indigo]<Grapevine>Docs>Grapevine.press and Interface.press
Implementor:  Birrell 

Unchanged from previous release.

Graphics
--------
DF file:  Graphics.df
Documentation:  see comments in Graphics.mesa
Implementor:  Wyatt 

Minor bug fixes only.

IFSFile
------
DF file:  IFSFile.df
Documentation:  contact implementor
Implementor:  Levin 

Unchanged from previous release.

IncludeChecker
---------------
DF file:  IncludeChecker.df
Documentation:  (SDD documentation)
Implementor:  Rovner 

Recompilation only.

Inscript
-------
DF file:  Inscript.df
Documentation: InscriptImplAppendix.memo; InscriptImplementation.memo, .press
Implementor:  Maureen Stone, Dan Swinehart

Recompilation only.

IO, FileIO, UserProfile
----------------------
DF file:  IO
Documentation:  See interfaces IO.mesa, FileIO.mesa, UserProfile.mesa. Now
heavily commented with some examples.
Implementor:  Teitelman, MBrown 

Changes to IO:

IO.PutThisSignal now called IO.PutSignal.
IO.RS (synonym for CreateInputStreamFromRope) now called RIS. ROS is defined
as a synonym for CreateOutputStreamFromRope.
PutBack is now called Backup.
New procedure CreateFilterCommentsStream which takes an input stream and
returns another input stream which filters out all comments, where comments are
defined in the usual fashion.
The interface has been heavily edited using tioga node structure so as to provide
documentation. IO.Comments and PF.Comments have been merged in. Use level
clipping to suppress detail when viewing it simply to jog your memory.

Note that CreateViewerStreams, which calls ViewerIO.CreateViewerStreams, will
now return an input stream that is an edited viewer stream, which means that
the user can edit characters that have been typed but not yet read using the
standard Tioga editing operations. For more details, see ViewerIO release
message.  

Changes to FileIO:

The transaction parameter to FileIO.Open now defaults in a way that is
semantically identical to the old default, but does not force clients to import the
Pilot Transaction interface.

A significant performance bug has been fixed in SetIndex.

A reminder: if you write a file using FileIO, the changes to the file are not
guaranteed to reach the disk unless you call stream.Flush or stream.Close.  If you
do not call stream.Close, then the virtual memory allocated to the stream buffer
will be lost.

There is a documented limitation in the common software directory package such
that file names cannot be longer than 40 characters. If you try to create such a
file, either by calling FileIO.Open directly, or via the exec copy or rename
command, you will get an uncaught signal FileIOCommonImpl.OpenFailed. A
similar problem can occur if your file name is long enough so that adding
<Client>SysDir> to the front causes an overflow. The manifestation here is that
anything involving spelling correction or pattern matching will fail to find the
file. The moral is stay away from very long file names until we get fully into
CIFS.

Changes to UserProfile:
 
The userprofile package now builds a data structure when it parses the user's
profile, which it does once during booting, following a rollback, or when the
profile is edited. Any errors encountered are written to userprofile.log and the
user is alerted via the messagewindow. Open and Close are no longer
implemented because access to the data structure is relatively efficient, i.e. no
disk reads or parsing is going on. The user profile is now insensitive to leading
trailing spaces in an entry, and permits comments to be inserted at any point.

Lister
-----
DF file:  Lister.df
Documentation:  Lister.txt
Implementor:  Satterthwaite 

Unchanged from previous release.

ListsAndAtoms
--------------
DF file:  ListsAndAtoms
Documentation:  See comments in Atom.mesa, List.mesa
Implementor:  Teitelman 

List.NthTail and List.NthElement now take INTs as aruments. Negative numbers
mean count from end of the list, e.g. NthElement[l, -1] is the last element of the
list.
New procedure CopyTopList.

Loader
------
DF file:  Loader.df
Documentation:  contact implementor
Implementor:  Maxwell 

The loader has been completely rewritten.  It now builds and maintains interface
records.

Lupine
-------
DF file:  Lupine.df
Documentation:  LupineUsersGuide.press
Implementor:  Bruce Nelson (meanwhile, Andrew Birrell) 

Recompilation only.

Maintain
---------
DF file:  Maintain.df
Documentation:  Introduction to Cedar, [Indigo]<Grapevine>Docs>Interface.press.
Implementor:  Andrew Birrell 

Recompilation only.

MakeBoot
---------
DF file:  MakeBoot.df
Documentation:  MakeBoot.press
Implementor:  Levin 

This version is mostly bug fixes and performance improvements.  The following
are user-visible changes:

1)  The /E switch is now available and eliminates the need for the
PilotBootToEtherBoot utility progam.  See documentation for details.

2)  MakeBoot can now accept multiple BCDs as input when building a germ file
(/G).

3)  BCDs loaded into the boot file now have separate swap units on the BCD
proper and RT extension.  This should help improve loader performance at
runtime.

MCross
-------
DF file:  MCross.df
Documentation:  MCross.doc
Implementor:  Rovner 

Recompilation only.

MesaScanner
------------
DF file:  MesaScanner.df
Documentation:  MesaScanner.mesa
Implementor:  Atkinson 

Hex literals are supported.  Minor bugs fixes only.

Modeller
--------
DF file:  Modeller.DF
Documentation:  ModelRefMan.Press and see Ed Satterthwaite or implementor
Implementor:  Schmidt 

Recompilation only.  No other changes.

OnlineMergeSort
----------------
DF file:  OnlineMergeSort.df
Documentation:  see comments in ListSort.mesa
Implementor:  MBrown 

Unchanged from previous release.

Othello
-------
DF file:  [Indigo]<Cedar>Othello>Othello.df
Documentation:  Introduction to Cedar; Pilot User's Handbook
Implementor:  Taft 

1. Initial Microcode Fetch is permitted even if you booted with the n switch.

2. RollBack correctly finds the Cedar checkpoint even if there is more than one
volume of type "normal".

Packager
--------
DF file:  Packager.df
Documentation:  Pilot User's Handbook
Implementor:  Levin 

Unchanged from previous release.

PerfStats
--------
DF file:  PerfStats.df
Documentation:  PerfStats.press
Implementor:  MBrown 

Recompiled.

PGS
----
DF file:  [Indigo]<Cedar>PGS>PGS.df
Documentation:  contact implementor
Implementor:  Satterthwaite 

Unchanged from previous release.

PilotKernel
----------
DF file:  PilotInterfaces.df, [Indigo]<Cedar>Pilot>PilotKernel.df and
UtilityPilotKernel.df
Documentation:  Pilot Programmer's Manual
Implementor:  Levin 

There are two functional enhancements and several subtle bug fixes:

1)  Space.GetWindow now works on a subspace of a mapped space.  Previously, it
raised Space.Error[noWindow], which was the documented behavior but less than
ideally useful.  I don't think anyone was depending on this error, but let me
know if this change will affect you adversely.

2)  A provisional informational signal mechanism has been implemented.  An
informational signal is just like a standard Mesa SIGNAL except:

  a) If caught, it must be RESUMEd or REJECTed.  This outlaws GOTOs (or their
disguises: CONTINUE, EXIT, LOOP) out of the catch phrase.
  b) If the signal propagates to the base of the call stack, it is implicitly resumed
instead of triggering an uncaught signal action in the debugger.

The present implementation follows these semantics but has several deficiencies,
since there is no language support for informational signals yet.  We expect to
correct all of these deficiencies eventually (but not before Cedar 5.0):
  a) An informational signal is presently raise by the procedure
TemporarySignals.InformationalSignal[signal: SIGNAL], rather than a language
construct.  This means it is still possible to say, for such a signal, "SIGNAL
signal" or "ERROR signal".  Both of these are likely to be programming mistakes,
but the compiler can't presently notice them.
  b) Informational signals cannot presently take parameters or return values.
  c) There is no compile-time detection of an attempt to transfer out of catch
phrases for informational signals.  It will be detected at runtime, however, and
treated like REJECT.

If you decide to declare informational signals in interfaces, I suggest the
following form:

SignalName: --INFORMATIONAL-- SIGNAL;
 
3)  A long-standing bug in the file system that tended to strike during
compilation has now been fixed.  The manifestation of this bug was a
trip to CoPilot with the message "SetSize bug" (or something like that).  This
should no longer happen.

4)  RuntimeInternal.EnterGlobalFrame is now properly synchonized with the
loader.

5)  VMHelperProcess and WriteFaultProcess no longer take embarassing page
faults while reporting address and write protect faults.

Pine
----
DF file:  Pine.df
Documentation:  contact implementor
Implementor:  MBrown 

Unchanged from previous release.

PlotPackage
-----------
DF file:  PlotPackage.df
Documentation:  (see interfaces)
Implementor:  Rovner 

Recompilation only.

Poplar
------
DF file:  Poplar.DF
Documentation:  Poplar.Press, EASPL.Press
Implementor:  Schmidt 

Recompilation Only.

Print
-----
DF file:  Print.df
Documentation:    Print.doc
Implementor:  Plass 

Recompilation only.

Known problems:

You will get an unbound imports message from the UserExec when you run
Print.  This is because of some mail-file processing stuff that was removed from
the config a few releases back; don't worry about it.

Don't try to use Print while TSetter is sending something to the printer.

PriorityQueue
-------------
DF file:  PriorityQueue.df
Documentation:  PriorityQueue.mesa
Implementor:  Atkinson 

Recompilation only.

Pup
----
DF file:  Pup.df (most public interfaces are in Communication.df)
Documentation:  [Ivy]<Mesa>*Pup.press
Implementor:  Andrew Birrell 

Handles 256 networks (3.4.1 handled only networks [0..127])

Pupwatch
---------
DF file:  Pupwatch.df
Documentation:  [Indigo]<Grapevine>Pupwatch>Pupwatch.press
Implementor:  Andrew Birrell 

Minor changes

Random
-------
DF file:  Random.df
Documentation:  Random.doc, Random.press
Implementor:  MBrown 

Unchanged from previous release.

RedBlackTree
-------------
DF file:  RedBlackTree.df
Documentation:  OrderedSymbolTable.press
Implementor:  MBrown 

DuplicateKey is now declared as an ERROR instead of a SIGNAL, and releases
the package monitor when raised.

RedBlackTreeRef
----------------
DF file:  RedBlackTreeRef.df
Documentation:  OrderedSymbolTableRef.press
Implementor:  MBrown 

DuplicateKey is now declared as an ERROR instead of a SIGNAL, and releases
the table monitor when raised.  The parameters of an
OrderedSymbolTableRef.CompareProc are now named.

Reminder
---------
DF file:  Reminder.df
Documentation:  (See Reminder.mesa)
Implementor:  Rovner 

Recompilation only.

Rigging
-------
DF file:  Rigging.df
Documentation:  Rope.tioga
Implementor:  Atkinson 

Recompilation only.

RPC Runtime
-------------
DF file:  RPCRuntime.df
Documentation:  LupineUsersGuide.press
Implementor:  Birrell 

Unchanged from previous release.

SafeStorage
-----------
DF file:  SafeStorage.df
Documentation:  SafeStoragePrimer.tioga, .press AND SafeStorage.tioga, .press 
Implementor:  Rovner 

SafeStorage.df replaces the part of Runtime.df that constituted RT.bcd, which has
been renamed to SafeStoragePackage.bcd. This exports the following interfaces,
accessible thru SafeStorage.df:
  AtomsPrivate, RCMapOps, RTBases, RTLoader, RTOS, RTOSExtras, RTProcess,
  RTRefCounts, RTStart, RTStorageAccounting, RTStorageOps, RTTypesBasic,
  RTTypesBasicPrivate, RTZones, SafeStorage, UnsafeStorage

SampleTool
-----------
DF file:  [Indigo]<Precedar>Documentation>SampleTool.df
Documentation:  Self-documenting, with additonal comments in the Cedar
Examples.
Implementor:  McGregor 

Recompilation only.

ScanZones
----------
DF file:  ScanZones.df
Documentation:  See ScanZones.mesa 
Implementor:  Rovner 

ScanZones is a new utility based on Russ Atkinson's CheckRT and LogStorage
stuff for gathering and printing (on the file named Storage.log) information
about the utilization of collectible storage. Use the UserExec to run it, then use
the interpreter to invoke it, as follows:

  ← ScanZones.ShowStorage[wordsCutoff: 100, append: FALSE, specifiedZone:
NIL].              

Sequin
------
DF file:  Sequin.df
Documentation:  contact implementor
Implementor:  Levin 

Unchanged from previous release.

Set
---
DF file:  Set.df
Documentation:  Set.doc
Implementor:  Rovner 

Recompilation only.

SirPress
-------
DF file:  SirPress.df
Documentation:    see comments in SirPress.mesa, PressPrinter.mesa
Implementor:  Plass 

The internal organization has been rearranged to lift the arbitrary limits, and an
unsafe procedure has been added for faster treatment of sampled images and
bitmaps.

SpecialTerminal
---------------
DF file:  SpecialTerminal.df
Documentation:  See implementor
Implementor:  Levin 

This is a new package that permits TTY-style access to the "special" virtual
terminal, the one used by Cedar initialization.  The facilities formerly available
through CedarControl (CedarInitOps and CedarInitPrivate) for using this virtual
terminal are now collected in the interface SpecialTerminal.mesa.  However, this
is still a facility intended primarily for wizards; consult the implementor before
attempting to use this interface.

Spy
---
DF file:  Spy.df
Documentation:  Spy.doc
Implementor:  John Maxwell 

All of the Pilot Spy code has been removed.  
Output now includes source indices.
There are now low level facilities for tracing executions (see implementor).

Squirrel
-------
DF file:  Squirrel.Df
Documentation:  none
Implementor:  Cattell et al 

This package is not yet for general use by Cedar clients, it is contained within
Walnut.  It is included in the release for completeness.  No major changes.

STPServer
---------
DF file:  STPServer.DF
Documentation:  see package catalog
Implementor:  Schmidt 

Recompilation only.

TerminalMultiplex
------------------
DF file:  TerminalMultiplex.df
Documentation:  See comments in TerminalMultiplex.mesa
Implementor:  Levin 

No interface changes.  One functional extension has been made:  it is now
possible to cause a world-swap to a remote debugger, even if a local world-swap
debugger exists.  The following table summarizes the key combinations
recognized by TerminalMultiplex's keyboard watcher:

Control +				Meaning

LeftShift+RightShift		Swap virtual terminals
Swat					Invoke world-swap debugger ("interrupt")
LeftShift+Swat			Invoke world-swap debugger; worry mode
Look+Swat				Invoke remote debugger ("interrupt")
Look+LeftShift+Swat		Invoke remote debugger; worry mode

If there is no locally installed world-swap debugger, the Look key in the
combinations above has no discernable effect, i.e., all debugger transfers are to a
remote debugger.

Note to users of the debugger invocation keys:  the transfer to the debugger will
occur as soon as both Control and Swat are down.  You can therefore avoid
inadvertent transfers to the wrong place by always hitting Swat last.

TJaMGraphics
-------------
DF file:  TJaMGraphics.df
Documentation:  contact implementor
Implementor:  Stone 

Recompilation only.

TSetter
------
DF file:  TSetter.df
Documentation:  TSetterDoc.Tioga, [Indigo]<Cedar>TSetter>TSViewer.mesa
Implementor:  Plass 

 Underlining and strikeout now work.
 PressScreen functionality has been incorporated into the TSetter tool.
 The information windows in the tool are now scrollable logs that grow when
the tool does.
 Unknown fonts are handled more gracefully.
 The Stop button no longer aborts the transmission of files to the printer; use
the new StopSending button instead.
 Multi-column and/or landscape output can now be done.

TTYIO, ViewerIO 
-----------------
DF file:  TTYIO
Documentation:  Contact implementor
Implementor:  Teitelman 

Changes to ViewerIO:

CreateViewerStreams now creates an Edited Viewer Stream if its editedStream
argument is TRUE (the default). The client program will detect no difference in
this stream from the previous type of edited stream which simply buffered its
characters in a rope (which can be obtained by specifying editedStream: FALSE,
and then calling IO.CreateEditedStream directly). From the user's standpoint, the
stream is still editable in the usual way, i.e. he can type control-a or control-w
to delete characters provided the characters have not yet been read, i.e. are still
in the buffer (typically this means no carriage return has been typed). However,
since the buffer for this stream is actually the characters that appear in the
underlying tioga document, the user can also edit what has been typed but not
yet read, exactly as he edits a tioga document, i.e. he can make selections and
delete or insert material. Repositioning the input focus at the end of the
document (which can be done conveniently simply by hitting the next key)
allows him to continue typing in the normal fashion. When he finally completes
his input, e.g. types a carriage return, the corresponding characters, as edited,
will be delivered to the client program. 

For example, 
suppose a program, e.g. a userexec, is reading from a viewer edited stream and
the user types 

bringover userprofile io 

and then realizes he has forgotten the /o switch, and wants to add .bcd after
userprofile. you can simply point between bringover and userprofile, type /o,
yellow select userprofile nearer to the right end, type .bcd, hit the next key, and
type carriage return.

This facility is also very useful in conjunction with ESC (or redo ↑X), which
will produce a previously typed line, but not complete the input operation. The
user can then quickly edit that line to insert or remove characters and then
complete the operation.

Note that as a result of your typescript being editable, simply pointing at some
place in the typescript and starting to type will not have the same effect it used
to: the characters will be inserted at the place you selected. You must point at the
end of the typescript (or point anywhere and then use the next key). This may
take a little getting used to.

Note also that there is no mechanism to prevent the user from editing characters
in the document that have already been read. Of course this has no effect on the
client of the stream.

ViewerIO also includes a new procedure, CreateEditedViewerStream which takes
a viewer stream and makes an edited viewer stream.  This allows specifying a
DeliverWhenProc other than the default. The DeliverWhenProc can also be
changed after the stream has been created via IO.ChangeDeliverWhen. 

UECP
-----
DF file:  UECP.df
Documentation:  None
Implementor:  Gifford, Stewart 

Recompilation only.

Unique
-------
DF file:  Unique.Df
Documentation:  Unique.Doc
Implementor:  Schmidt 

Recompilation only.

UserCredentials
--------------
DF file:  UserCredentials.df
Documentation:  See comments in UserCredentials.mesa
Implementor:  Levin 

There is a new LoginOption, "alwaysPrompt", that forces Login to ask the user to
login.  See details in the interface.

UserCredentialsUnsafe.df has gone away, and the interface it formerly exported,
UserCredentialsUnsafe.mesa, is now available through UserCredentials.df.

UserExec
--------
DF file:  UserExec
Documentation:  some in cedar introduction. Also see comments in UserExec.mesa,
Spell.Mesa, UserExecUtilities.mesa. Contact implementor
Implementor:  Teitelman 

Editable Typescripts:

Are the default. See the ViewerIO release message.

Action Area changes:

All Action area commands are now implemented by stuffing characters into the
executive. This means that everything you can do with buttons you can type,
and further means that there are no synchronization problems, i.e. you can click
set and then click proceed without waiting for the set to complete, because the
proceed won't happen until the set finishes. So feel free to button ahead all you
like. Note that it is still the case that clicking source or set break will grab your
input focus when the operation completes. So you can't for example click set and
then start typing ahead. But you can click ahead all you want. This restriction
will hopefully be eliminated in 3.6.. 

Break at entry, break at exit now work. Break at entry is indicated by yellow
clicking the Set menu button, and break at exit by blue clicking. If the selection
is a point or character selection, a breakpoint is inserted at the entry/exit of the
procedure containing the selection. Otherwise, the selected material is treated as
the name of the procedure to be broken, e.g. IO.GetRope, ViewerOps.FindViewer,
etc.

Blue clicking clear will clear the breakpoint associated with the action area. Red
clicking clear will clear the selected breakpoint. (If you always click source
before clicking clear, it doesn't matter which you click.) 

performance improvements:

A cache of the files on your local disk is automatically built. As a result, if you
have the first character of a file name correct, spelling correction will be on the
average 13 times as fast. Similarly for pattern matching operations such as list
userexec*.

A cache of the global frames is automatically built. The cache is updated when
you run bcds. As a result, if you have the first character of the frame name
correct (case does not matter), spelling correction is much faster.

Miscellaneous:

run now takes a sequence of files.

The CommandsFrom command should be used in your userprofile in place of
PreRun, which has been deimplemented.

Most reported bugs have been fixed. The individual that reported the bug has
been messaged.


NewStuffImpl.bcd

This package comprises a collection of facilities that generally fall under the
category of creature comforts for cedar: they are not essential, but they make life
more pleasant. These facilities are enabled by running NewStuffImpl.bcd, e.g. by
including "run newstuffimpl" in the CommandsFrom entry in your user profile.
They currently include (1) extensions to abbreviation expansion that enable the
construction of "fill-in forms" for various types, e.g. user types
Rope.Find{CTRL-E} producing Rope.Find[s1: ROPE, s2: ROPE, pos1: INT ←
0, case: BOOL ← TRUE]; (2) automatic creation/updating of date of last edit
comments at the front of a document; (3) automatic creation/updating of change
log entries at the end of a document (only works for documents that employ
node structure). For more details, see
[Indigo]<Cedar>Documentation>NewStuff.tioga.

VersionMap
-----------
DF file:  VersionMap.df
Documentation:  VersionMap.mesa
Implementor:  Atkinson 

Recompilation only.

VersionMapBuilder
------------------
DF file:  VersionMapBuilder.df
Documentation:  See implementor.
Implementor:  Atkinson 

Minor changes to improve version map building.

Viewers and Tioga
------------------
DF file:  ViewersAndTioga.df
Documentation:  TiogaDoc.tioga, ViewerDoc.tioga (incomplete), TIP.documentation
Implementor:  TiogaImplementors↑.pa 

Viewers Changes:

The internal workings have been largely restructured, but the new
implementations should not require any source changes in client code.

* The "Grow" menu command is now a toggle, restoring the state of previously
opened viewers if clicked again after growing a viewer to the full size of the
column. (Thanks to Warren).

* MBQueue is a new package that allows a client to serialize menu and button
input.  See the interface for details.


Tioga Changes:

* Clear, Get, GetImpl, PrevFile, and Save are no longer guarded

* "Unsaved" Documents Cache

It is not uncommon to forget to save the contents of a viewer before destroying it
or loading something else into it.  However this is not a disaster since Tioga
holds onto "unsaved" documents so you can reload them with edits preserved. 
The number of such documents that Tioga will remember is set by a profile
entry (UnsavedDocumentsCacheSize); the default is four.  Whenever there are
unsaved documents, Tioga creates a special viewer listing their names.  Unsaved
documents are put into the cache by Destroy, Clear, Get, GetImpl, and PrevFile. 
They are not put in by Reset.  If the cache is already full when a new entry
arrives, the oldest entry is discarded.  Whenever a file is needed for Get,
GetImpl, or PrevFile, the cache is checked to see if an unsaved version is
available.  "No Name" documents are not put into the cache.

* Edit Tool addition to search a list of files

You can use the EditTool to look through a list of files for one in which the
current search specifications are satisfied.  This can be accomplished by clicking
the "SearchEachFile" button after filling in the "Files" field with the file names
(or "@" followed by the name of a file that holds the list of file names).  When
you click SearchEachFile, a new viewer is created, and one-by-one the files will
be loaded and searched until a match is found.  The list of files will be updated
when a match is found, so that when you are finished with one file you can
click SearchEachFile again to look for the next one.  You can hit the "Stop"
button at the top of the EditTool to interrupt the search, but you should not try
doing other operations while the search is in progress since it resets the selection
each time it loads a file.

* Edit Tool Sort Line/Branch ignores leading blanks now.

* Normalize

If the document in this viewer does not contain the selection, scrolls to the start
of the document.  Otherwise scrolls to make the selection visible   click LEFT
to scroll to the start of the selection, RIGHT to scroll to the end, or MIDDLE to
scroll to the caret.

* Automatic Mesa formatting via CTRL-M

As a convenience during typein, the entire caret node is reformatted by
CTRL-M if the selection is a single character or less.

* Select "visible"  expand selection to blanks

* CTRL-V expands the selection to include the nonblank characters on the left
and right ends.  (Mark Brown's suggestion)

* Changing levels when you scroll

	Scroll up and show more levels  hold SHIFT down when click LEFT to
scroll
	Scroll up and show all levels  hold CTRL down when click LEFT to
scroll
	Scroll up and show first level only  hold SHIFT and CTRL down when
click LEFT to scroll

* User profile changes for Tioga:

DefaultTiogaMenus -- This entry specifies which menus, if any, should
automatically be displayed when you create a new Tioga viewer by clicking one
of the buttons in the upper right corner or by giving an Exec command.

OpenFirstLevelOnly -- If set to true, documents will be opened with only their
first level showing.  Default is false.  (Warren Teitelman's suggestion)
	
ExtensionStyles -- This entry specifies the default style to be used with
documents that do not explicitly name a style.  The style is determined by the
extension in the file name.  (Karen Kolling's suggestion)
	
UnsavedDocumentsCacheSize -- This controls the number of unsaved documents
the system will remember.
	
ShowUnsavedDocumentsList -- If this is true, a viewer will be created holding
an up-to-date list of the unsaved documents that can still be reloaded.

* Underline and strikeout are now implemented

* New User Exec Commands for Tioga:

WriteMesaPlain: Same as WritePlain, except inserts double dashes at start of
comment nodes.

DoTiogaOps: Expects a command line containing operations in the same format as
in the EditTool operations field.  Among other things, you can use this to
initialize various EditTool choices such as IgnoreCase or MatchWords.

* Did you know that ...

You can extend a selection into a split viewer.

Clicking MIDDLE on Find, Word, Def, and Search causes them to look both after
the selection and before it.

You can use NEXT (middle blank key on right) to move to the next text field in
tools like the File Tool.  Shift-NEXT goes to the previous one.

Tioga will warn you when you save a file if there is a newer version on the
disk than the one you read.

When you Rollback, Tioga automatically does a Reset on any viewer for which
the file on the disk has a newer create date than the time of the Checkpoint.

You don't need to reselect the document for an EditTool search or substitute. (In
order to do a search or substitute, you will typically need to fill in the Target or
Replacement fields in the Edit Tool.  Naturally, this changes the selection, and
before you can do the operation, you must restore the selection to the place
where you actually want it to take place.  The system helps you with this by
saving the primary selection if it is not in the Edit Tool when you click either
the Target or the Replacement button.  The commands along the top of the Edit
Tool  Seach, Substitute, Yes, No, Replace, and Count  restore the saved
selection if the primary selection is in the Edit Tool when they are clicked.  The
net effect is that if you start out with the selection in the right place, you can
click the Target or Replacement buttons, fill in the needed information, and then
directly click one of the commands without needing to reselect since the system
will do it for you.)  Warren's suggestion.

ViewRec
---------
DF file:  ViewRec.DF
Documentation:  ViewRec.Doc
Implementor:  Spreitzer 

ViewRec is intended for quick and easy user interface construction. Given a
record, or the name of a DEFINITIONS module, it will construct a Viewer on the
components of that record that are simple enough (numbers, ROPEs,
enumerations, subranges of simple enough, records of simple enough stuff,
procedures that take simple enough stuff, or explicitly bound by the client). The
procedures may be invoked, and the data may be edited.

VTables
--------
DF file:  VTables.df
Documentation:  VTables.mesa
Implementor:  Atkinson 

Recompilation only.

Walnut
-------
DF file:  Walnut.df
Documentation:  HowToUseWalnut.tioga, .press
Implementor:  Willie-Sue Haugeland 

All Walnut actions are serialized, preventing previous anomolous behavior and
uncaught signals. Database commits run at background priority.

The Walnut control window has been re-arranged.  NewForm appears in the
menu.  Message Set buttons work differently: red-click deselects all and then
selects that one; blue-click "extends" the selection; control-blue deselects that
one.  A Quit button has been added; the viewers' Destroy button does nothing.  
Blue-clicking CloseAll makes the control window one-line high.

Blue-clicking Send in a message sender viewer will cause a new form to be
displayed after the message has been delivered. 

WalnutSend
------------
DF file:  WalnutSend.df
Documentation:  HowToUseWalnut.tioga, .press
Implementor:  Willie-Sue Haugeland 

Recompilation only. 

Watch
------
DF file:  Watch.df
Documentation:  none
Implementor:  Andrew Birrell 

Displays count of words allocated and page faults; displays number of disk
requests.

Waterlily
---------
DF file:  Waterlily.df
Documentation:  via the "?" facility in the UserExec.
Implementor:  Kolling 

Recompilation only.

WorldVM
---------
DF file:  WorldVM.df
Documentation:  None - consult implementor before using
Implementor:  Andrew Birrell 

The users know what changed!



Unless otherwise indicated above, questions about changes in individual
components should be addressed to their implementors.


The Release Master