From: Brad Myers
Subject: Garnet for the Macintosh
Date: 
Message-ID: <Crpt09.7Jn.3@cs.cmu.edu>
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
-*-*-*-   Announcing The ALPHA Release Of Version 3.0 of Garnet   -*-*-*-*-*-
-*-*-*-   			      vvvvvvvvv			  -*-*-*-*-*-
-*-*-*-   >>>>>>>>>>> NOW RUNS ON THE MACINTOSH  <<<<<<<<<<<<<<<< -*-*-*-*-*-
-*-*-*-   			      ^^^^^^^^^			  -*-*-*-*-*-
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

>> THIS IS JUST THE ALPHA RELEASE.  You might wait for the beta or
>> official release if you are concerned about robustness.

Garnet is a comprehensive user interface development environment for
Lisp.  It has run on Unix and X/11 for about 6 years, and this release
announces the availability on the Macintosh using the native Macintosh
QuickDraw and operating system.  The intention is to provide a free,
portable toolkit for user interface development in Lisp.  In
particular, we expect that all current Garnet Unix applications should
run on the Macintosh without change, and applications written on the
Macintosh version should work on the Unix version.  Note, however,
that we have NOT created or interfaced to the Macintosh widgets so on
the Macintosh you will still have to use Garnet or Motif look-and-feel
widgets.  We hope that some users will address this.

For those unfamiliar with Garnet, it contains two complete widgets
sets implemented in Lisp, and a full set of interactive tools
including an interface builder.  More details about Garnet are
available in the Garnet FAQ:
	ftp://a.gp.cs.cmu.edu/usr/garnet/garnet/FAQ
which is posted periodically.

The primary change for version 3.0 is that Garnet now works on the
Macintosh.  Current Unix users of Garnet will not see much difference
between version 2.2 and 3.0, but you will need to get the new version and
recompile if you want to port your software to the Macintosh.

To run the Macintosh version of Garnet, you need to have System 7.0 or
later, Macintosh Common Lisp (MCL) version 2.0.1 or later, and at
least 8Mb of RAM.  The system takes about 10 megabytes of disk space
on a Mac, not including the documentation (which takes an additional 8
megabytes).  We find that performance of Garnet on MCL is acceptable
on Quadra's, and fine on a Quadra 840 A/V.  It is really too slow on a
Mac II.  To do anything useful, you probably need 12mb of memory.  A
PowerPC Mac does not work well for Lisp (see discussion on
comp.lang.lisp.mcl).  With your help, we hope to improve the
performance so it runs on smaller machines. 

For the current Unix users of Garnet 2.2, there are a few minor
changes to the system for version 3.0, some of which are
NOT BACKWARDS COMPATIBLE!

* All Garnet files have been updated to adhere to the new lisp standards
defined in Common Lisp the Language Second Edition.  This involved changes
to package definitions, export statements, and removal of Garnet's binding
of excl::*cltl1-in-package-compatibility-p* and comp:*cltl1-compile-file-
toplevel-compatibility-p* in Allegro lisp.  If your lisp files used to
rely on Garnet to set up a CLTL1-compatible environment, you may have
to either bring your files up-to-date to the new standard or declare the
old initializations yourself.

* We removed support for "#\" specification of modified characters, and
now support only keyword forms of modified characters.  For example,
all occurrences of #\control-c should be converted to :CONTROL-c, as
specified in the Garnet 2.2 Interactors manual.  The reason for this
change is that the CHAR-BITS function which in some lisps (like
Allegro) would report special properties of characters (like whether
they are modified by a control key) has been explicitly removed from
the CLTL2 specification.

* The :face slot of font objects can now take a list of keywords.
In previous versions of Garnet, the only allowed values for the :face
slot were :roman, :bold, :italic, and :bold-italic.  In Garnet 3.0, you
can also supply the value '(:bold :italic) (independent of order).  For
the Mac version, you can supply any single element or any consistent
combination of :roman, :bold, :italic, :bold-italic, :plain, :condense,
:extend, :outline, :shadow, or :underline.

* Now :omit-title-bar-p parameters are in both kinds of scrolling-windows.

* The interface to declaring constant information about fonts and
colors is incomplete in this release of Garnet 3.0 Alpha.  Thus, many
formulas that would have previously been eliminated in your system may
not be eliminated by this version of Garnet, since display-dependent
information is now stored in a new control schema named
opal::DEVICE-INFO.  At minimum, to eliminate font and color formulas,
you will have to commit to not changing display of the lisp session in
which the font and color information was obtained by declaring the
:current-device slot of opal::DEVICE-INFO constant.  In particular,
you would not be able to make an executable lisp image of Garnet after
declaring the display information constant, since restarting the
Garnet image requires reinitializing the display to a new value.

* Since the Mac limits the number of characters in file names, we had
to change the names of seven gadget files, where the names of the
duplicates have been truncated to 31 characters:
	motif-prop-sheet-win-loader.lis
	motif-scrolling-labeled-box-loa
	motif-scrolling-labeled-box.lis
	motif-scrolling-menu-loader.lis
	motif-scrolling-window-loader.l
	scrolling-input-string-loader.l
	scrolling-labeled-box-loader.li
If you plan to run your application on the Mac, you should use the function
user::garnet-load (described in the Garnet 2.2 Overview manual) whenever
you are loading gadgets, instead of using LOAD directly.  GARNET-LOAD will
automatically map the standard Garnet file name that you supply into the
list of truncated filenames for the Mac.  GARNET-LOAD also does the
correct thing under Unix.

* The internal representation of opal:white-fill has been changed.
Previously, opal:white-fill was considered one of the "gray stippled"
bitmaps, and had a foreground-color of black, but was drawn entirely
in its background-color of white.  This confused some applications like
color palettes that relied on the :foreground-color slot of filling-style
objects for their color.  To accommodate users' intuition, opal:white-fill
is now considered to be a "solid color" filling-style, with a
:foreground-color of white.  Opal:white-fill is no longer associated with
the halftone filling-styles. 

* Top-level loader files, including garnet-loader.lisp, are now loaded into
the :COMMON-LISP-USER package.  The CLTL2 standard and most lisps have one
package named :COMMON-LISP-USER with a nickname of :USER, and one package
named :COMMON-LISP with a nickname of :LISP.  We have added Lucid-specific
code at the top of garnet-loader.lisp and garnet-compiler.lisp that adjust
the nicknames of Lucid's :USER and :LISP packages to accommodate the new
CLTL2-compatible files.

* The multi-selection now supports selections across multiple windows.
As described in the comments at the top of the file, you should have a
multi-graphics-selection gadget in each window, and each should have
the :other-multi-graphics-selection slot set with a list of ALL the
multi-graphics-selection gadgets.  Then, each gadget's :value will
reflect selections in all windows.  This change should not affect
current users (it is backwards compatible).  A known bug is that the
selection order is NOT preserved across multiple windows (you can't
tell which object was selected first or last).  Also, you cannot drag
objects from one window to another.

FTP INSTRUCTIONS:
-----------------

To retrieve this new version of Garnet, anonymous FTP to
a.gp.cs.cmu.edu (128.2.242.7) and retrieve 
	/usr/garnet/garnet/alpha/FTPINSTR.UNIX
or 
	/usr/garnet/garnet/alpha/FTPINSTR.MAC
(or both).  These are plain text files with complete instructions.
You can view these files using Mosaic or another World-wide Web client, as:
	ftp://a.gp.cs.cmu.edu/usr/garnet/garnet/alpha/FTPINSTR.UNIX
	ftp://a.gp.cs.cmu.edu/usr/garnet/garnet/alpha/FTPINSTR.MAC