Cedar10.0PreReleaseMessage.tioga
Copyright Ó 1992 by Xerox Corporation. All rights reserved.
Michael Plass, January 17, 1992 4:46 pm PST
Willie-s, January 28, 1992 6:53 pm PST
CEDAR 10.0 PRE-RELEASE
CEDAR 10.0 FOR INTERNAL XEROX USE ONLY
Cedar 10.0 Pre-Release
Subtitle, if any
Ó Copyright 1992 Xerox Corporation. All rights reserved.
Abstract: The abstract goes here.
Created by: Package creator(s)
Maintained by: Package maintainer(s) <RName>
Keywords: keyword1, keyword2, ... 
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

For Internal Xerox Use Only
Significant changes for Cedar 10.0
Directory structure
The use of the automount map /pseudo has been dropped. There will only be a /project/cedar10.0 map used; all of the pieces of Cedar10 will be subdirectories of /project/cedar10.0. The .mesa, .c2c.o, etc files are in the subdirectory release; that is, the counterpart of /pseudo/pcedar2.0 is now /project/cedar10.0/release. The files that are in /project/pcedar2.0 will be moved to /project/cedar10.0; the only current resident is GenerateCedarScript, which is different in the two worlds.
For this pre-release, it is assumed that you have an existing PCedar2.0 environment.
DF file structure
The structure of the DF files that describe the release have been simplified. There is no longer any source sharing with D-Cedar; only a single DF file per component is used, rather than the DF suite of PCedar2.0.
The only object files modelled by the DF files are the optimized sun4 versions; these are under the sun4 subdirectory in each component.
(Strategies for modelling debuggable versions are TBD).
Documentation files, as a rule, now live within each component, rather than being under a separate Documentation directory.
The web of tangled interdependencies among the PCedar2.0 DF files has been sorted out, so that the DF files are now partially ordered.
The use of DFPorter for moving components to Cedar10.0 is strongly encouraged.
Character code changes
The source files have been changed to use the Xerox Character Codes for left-arrow and up-arrow, instead of the ascii code for underscore and circumflex. To type these, use the arrow keys on the keypad (R10 for left-arrow, R8 for up-arrow). There is a command named "FixupCedarFile" that will fix up an existing source file.
We have not changed the commands (e.g., Copy, Rename) that are expecting underscore to mean left-arrow.
Interface changes
Many low-level interfaces have been changed in some way; but an effort has been made to limit the required changes in client source code to a reasonable level. Almost all of the required changes should be detectable by the compiler, so a reasonable porting strategy is to rely on the Mimosa compiler for guidance. Look elsewhere for details of the changes, but here are the highlights:
Basics - the move and copy routines have been rationalized, and re-implemented efficiently. Some unused/unimplemented procs have been removed.
Char - This is a new interface describing an extended 32-bit character representation.
Rope - A new variant was added to the record definition that will allow a wide-character supertype of ROPE to be defined. Also, Rope.Cat demands at least 2 arguments, so some uses will need to be changed to Rope.Concat.
SafeStorage - The PFinalize interface is renamed to Finalization. The defunct section of SafeStorage that dealt with old-style finalization has been removed.
IO - There is an explicit buffer added to the STREAM object, so that inline versions of GetChar and PutChar can be provided. There are new provisions for I/O of 64-bit numbers (both fixed and floating point). The PutF* routine now demand an appropriate number of arguments; this may call for a significant amount of (trivial) editing while porting code, but helps control the object code size.
Imager - AIS support is removed from the public interfaces. A new object has been added at the DeviceWorks level. The XChar type is now Char.XCHAR. See ImagerChanges.tioga for details.
Interpress - The "Interpress" interface is now named "InterpressInterpreter".
RopeFile - The RopeFile interface and implementation is very different, no longer assuming a particular file system. Most clients will not use the RopeFile interface directly, but instead will call PFS.RopeOpen.
SunRPC - now supports TCP as well as UDP. A new interface, SunRPCBinding, simplifies setting up a connection. A compatible stub generator is available.
Tioga - Low-level interfaces have been rationalized (and in many cases renamed). [details from Wyatt]
Other changes
Things to be on the lookout for:
Trying to store a nested procedure into a data structure will cause a runtime error in checked code. This is required to ensure safety, and it was a bug that it was not being done.
FS.Error is now a VAR ERROR that gets a value of PFS.Error; it turns out that if such a VAR ERROR is not exported, you won't get any warning messages from the loader, and your program may die with an address fault in a fairly mysterious way.
Getting started in Cedar10.0
Before you start, edit your profile to avoid references to PCedar; this will typically mean commenting out Require commands in your BootCommands. Make sure your search rules don't have any PCedar-dependent directories.
In the pre-release change, there are no pre-made packaged worlds. So here is how to make your own, starting in any cedar world (this assumes that you have a copy the latest changes to /project/pcedar2.0 - included on the pre-release tape):
Cedar10Commander X11Viewers
OR
Cedar10Commander RawViewers
This should get you a dynamically-loaded X11Viewers or RawViewers world. Now you may load up this world with your favorite components, and then (in a commander viewer), say
CD /usr/tmp; PackageIt XV X11Viewers; sh1 ./XV.ld
OR
CD /usr/tmp; PackageIt RV RawViewers; sh1 ./RV.ld
(ignore warnings of : cc: File with unknown suffix)
This will make a packaged world, /usr/tmp/XV (or RV), which you can invoke the next time you want to start up a world. To invoke that package:
/usr/tmp/XV
(You may want to build the package in some place other than /usr/tmp, but it should probably be on your workstation to avoid too much network dependence.)
For further details about this process, see GenerateCedarScriptDoc, CommanderDoc, and PackageIt.cm
Using Cirio in PCedar2.0 to debug Cedar10.0
The last couple versions of Cirio have made cross world debugging easier - that is, one can see ropes, if one knows the magic incantation. It is:
cirioremore host portnumber /cedar10.0/ciriothings /cedar10.0/rope /cedar10.0/atom
Of course, you need to have done a
pma /cedar10.0 -vux:/project/release/cedar10.0
for this to work.
That is, you have to tell Cirio where to find the mobs that define ropes, atoms, etc. To give the search paths, you must include the portnumber, even if it is 4815.
REMEMBER: the default is for code to be optimized, so you'll have to recompile anything you wish to debug in detail.