This is the Alpha Release. 
The final release might differ, 
-gustaf Wed Jun 16 00:07:12 EDT 1993
================================================================
Differences between Wafe 0.94 and 0.95:
    -  (a) uninterpreted assignment from client applications 
           to Tcl-variables
    -  (b) escaping for %s substitutions
    -  performance improvement up to a factor of 2 in
       communication buffer handling
    -  the Wafe binary accepts --e and --p together 
       (during fork of the client process a Tcl script
       can be sourced and a widget tree can be build;
       the startup of applications using Wafe as a 
       front end appears faster)
    -  support for the Layout widget (great stuff)
    -  new command:  
           [isWidget someName] 
       returns 0 if no widget someName exists, otherwise non-zero
    -  fix for XStoreBuffer 
       (thanks to Natuki ITIMARU <itimaru@lang.ai.kyushu-u.ac.jp>)
    -  bugfix, when lists are set by a single program using both
       listChange and sV .... list {...}
    -  2 XtFree bugs fixed (thanks to Linux, which complained about it)
    -  a few bug fixes for the plotter widget sources
       (logarithmic scale for xyAxis, axis labeling, etc)
    -  some fixes for 64bit machines
    -  cosmetical cleanup and fixes in various application programs
    -  based on tcl 6.7 (instead of 6.6 in Wafe 0.94)
    -  based on xpm 3.2g (instead of 3.2e in Wafe 0.94)
    -  more small sample scripts in $WAFE/src/tcl/* for
       beginners
    -  support for Linux


(a) and (b) are the most significant changes; If you have 
comments to it, please send it to me, otherwise i'll continue 
to make this version available.

   (a) uninterpreted assignment from client applications 
       to Tcl-variables

       Wafe 0.95 provides means to assign from a client
       application (say in Perl) to Tcl-variables without
       performing a evaluation of the string (similar
       as the communication channel, but more portable
       and easier to use).

       If the application program running under Wafe writes

       %=myvar This will become the content of the TCL-Variable myvar

       to stdout, the tcl variable myvar is set to the string
       starting with 'This' and ending with 'myvar'.

       This works as follows:

       If the first character after '%' (or the character provided
       via the --c option) is '=', the next space terminated token
       is used as a variable name, and the remainder of the line 
       is assigned to the named tcl variable.

       If the character after the '%' is a '+' followed by a
       space terminated token for the variable name then remainder
       is appended to that variable.

       If the character after the '%' is a '\' followed by a
       space terminated token for the variable name then remainder
       and a newline character are appended to that variable.

       Using this mechanism, i have implemented 'virtual files'
       from Prolog, which write into tcl variables. An open
       clears the specified variable, a write appends to it,
       the close just flushes stdout. Works like a champ.

   (b) %s substitutions:
       consider the following Wafe script

       ----------------------------------------------------------
       #!/usr/bin/X11/wafe --f

       form f topLevel
          viewport v f height 100 allowVert true
          list l v \
            list {this\ is\ a $long list\} with\ ..\{.. se\"veral en[tri]es} \
            defaultColumns 1 width 100 \
            callback {say "this is it !!%s!!"}

       proc say {string} {
         echo "i say <$string>"
       }
       realize
       ----------------------------------------------------------

       The list resource contains several nasty characters.

       In 0.94 %s is substituted in the callback by the string
       of the selected list element, after that the command is
       evaluated using tcl_Eval. For example, if someone chooses
       the element '$long' , the string 'say "this is it !!$long!!"'
       is evaluated, yielding (most probably) a 'no such variable'
       error. One could try various variant of quoting, such as

       #   callback "say %s"    ###  problem if %s contains $ blanks " [ ]
       #   callback {say "%s"}  ###  problem if %s contains $ blanks " [ ]
       #   callback "say {%s}"  ###  problem if %s contains { }

       but the problem only shifts.

       Wafe 0.95 prepares the contents of %s in a way, such it can be
       savely evaluated under double quotes by prepending a backslash
       to $ [ : \ within the substituion. This means, that in 0.95
       'say "this is it !!\$long!!"' is evaluated, passing a single
       argument to the say procedure.
