home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / lang / tcl / 2138 < prev    next >
Encoding:
Text File  |  1992-12-18  |  16.5 KB  |  376 lines

  1. Path: sparky!uunet!spool.mu.edu!agate!sprite.Berkeley.EDU!ouster
  2. From: ouster@sprite.Berkeley.EDU (John Ousterhout)
  3. Newsgroups: comp.lang.tcl
  4. Subject: New releases:  Tk 3.0 and Tcl 6.5
  5. Date: 17 Dec 1992 22:29:40 GMT
  6. Organization: U.C. Berkeley Sprite Project
  7. Lines: 364
  8. Distribution: world
  9. Message-ID: <1gqv0kINNho2@agate.berkeley.edu>
  10. NNTP-Posting-Host: tyranny.berkeley.edu
  11.  
  12.  
  13. I have just released new versions of Tk and Tcl.  Tk 3.0 is a major
  14. new release with several incompatibilities (hence the change in
  15. major version number).  It doesn't have a lot of fancy new features
  16. but includes many bug fixes and major structural improvements, such as
  17. overhauls of window manager interactions, grabs, input focussing,
  18. menus, and color management.  Tcl 6.5 is a minor upgrade with no
  19. incompatibilities and only a few new features (this is *not* the 7.0
  20. release;  that is still a month or two away).
  21.  
  22. The rest of this message consists of two parts:
  23.  
  24. 1. An excerpt from the "README" file for Tk 3.0, which summarizes the
  25. major changes and incompatibilities in the release.
  26.  
  27. 2. An excerpt from the "changes" file for Tcl 6.5, which contains a
  28. complete listing of all the changes to Tcl.
  29.  
  30. 3. The usual catalog of what sources are available and how to retrieve
  31. them.
  32.  
  33. --------------------------------
  34. 1. Summary of changes in Tk 3.0:
  35. --------------------------------
  36.  
  37. Tk 3.0 is a major new release.  For a complete list of all the changes,
  38. see the tail end of the "changes" file in the distribution.  Here is a
  39. short summary of the most important new user-visible features:
  40.  
  41. (a) Canvases can now generate Postscript output.  See the "postscript"
  42.     widget command.
  43.  
  44. (b) Code to deal with the window manager has been overhauled:
  45.     - Tk should now work with virtual-root window managers like tvtwm.
  46.       There is a new C procedure Tk_GetVRootInfo plus new options to the
  47.       "wm" command: "vrootx", "vrooty", "vrootwidth", and "vrootheight".
  48.     - Various bugs having to do with window placement and size changes
  49.       have been fixed.
  50.     - The "wm" command has new options "protocol" (support for window
  51.       manager protocols like WM_DELETE_WINDOW), "client" (support for the
  52.       CLIENT_MACHINE property), "command" (support for the WM_COMMAND
  53.       property), and "overrideredirect" (to allow creation of windows
  54.       with the override-redirect flag on).
  55.     I think I've fixed all known problems related to window managers, so
  56.     please report any suspicious behavior.
  57.  
  58. (c) Focus management has undergone a major overhaul:
  59.     - Tk watches FocusIn and FocusOut events for focus changes as well
  60.       as Enter and Leave events, so it will work better with explicit-
  61.       focus window managers.
  62.     - Tk generates FocusIn and FocusOut events for the focus window.  The
  63.       old procedural interface (Tk_CreateFocusHandler) is still supported
  64.       (for now), but it is obsolete and shouldn't be used anymore.  The
  65.       model for FocusIn and FocusOut events is different than described
  66.       in the Xlib documentation.  See the "focus" manual entry for details.
  67.     - If there is no input focus, then keyboard events are discarded instead
  68.       of going to the window under the pointer.
  69.  
  70. (d) The event binding mechanism has been upgraded to support the Mode_switch
  71.     key to support the full ISO character set.  Caps_Lock/Shift_Lock support
  72.     has also been improved to conform with official X specs.
  73.  
  74. (e) New demo programs have been added:
  75.     tcolor -    Interactive editor for colors, using HSV, RGB, or CMY.
  76.         It can hook up to another application with "send" to
  77.         update the other application as you edit.
  78.     rmt -    Attaches to any other Tk application so you can type
  79.         commands remotely to that application.  You can switch
  80.         between applications dynamically.
  81.  
  82. (f) Several new features have been added to color management:
  83.     - There is now a notion of "color model", which determines whether
  84.       Tk treats the display as color or mono.  This allows you to force
  85.       mono operation even on a color display.  See the "tk colormodel"
  86.       command and the Tk_GetColorModel and Tk_SetColorModel procedures.
  87.     - Tk deals with colormap exhaustion more gracefully now: it generates
  88.       a warning message and switches over to a mono color model.
  89.     - Support has been added for different visual types.  See procedures
  90.       Tk_SetWindowVisual and Tk_SetWindowColormap, plus macros Tk_Visual,
  91.       Tk_Depth, and Tk_Colormap.  The code for this was contributed by
  92.       Paul MacKerras.
  93.  
  94. (g) Support for multiple simultaneous displays has been improved.  This
  95.     includes changes to the "grab" command ("grab none" no longer exists;
  96.     use "grab release <window>" instead), plus changes in the C interfaces
  97.     to procedures like Tk_FreeCursor.  There are still problems with
  98.     some of the default widget bindings.
  99.  
  100. (h) The event-sharing code has been removed from Tk (e.g. there is no longer a
  101.     file tkShare.c) and menus have been modified to use grabs instead, which
  102.     is much cleaner.  The -variable option for menubuttons has been removed,
  103.     as have the "post" and "unpost" widget commands for menubuttons.  The
  104.     procedure tk_menus has been replaced by tk_menuBar, which has a slightly
  105.     different interface.  In addition, the interpretation of the "-command"
  106.     option for cascade menu entries has changed so that the command is
  107.     invoked when the entry is activated, not when it is invoked.
  108.  
  109. (i) The configuration of the release has been modified slightly:
  110.     - Introductory documents are no longer bundled with the sources.
  111.     - The Makefiles include "install" targets.
  112.     - Manual entries have been renamed to use ".1", ".3", and ".n"
  113.       extensions instead of ".man".
  114.     - Tcl and Tk support TCL_LIBRARY and TK_LIBRARY environment variables,
  115.       which override the compiled-in locations for the library directories.
  116.  
  117. (j) Tk now has the beginnings of a test suite.  It's woefully inadequate
  118.     right now but I hope it will grow over time.  I'd be delighted to
  119.     receive contributions of additional tests.
  120.  
  121. (k) Various new or enhanced commands:
  122.     - "winfo exists"
  123.     - "yposition" and "delete" options for menu widget command
  124.     - "-setgrid" option for listboxes
  125.     - multiple (or zero) arguments to "destroy" and the "delete" widget
  126.       command for canvases
  127.     - new "tk" command
  128.     - new options to "grab": "current", "release", "set", "status"
  129.  
  130. This release also contains a few incompatibilities that will require
  131. changes in existing C code or Tcl scripts (hence the jump in version
  132. number to 3.0).  Most of these changes won't affect most users, but
  133. a few of them (like the first one) are likely to affect lots of scripts.
  134. Below is a complete list of all the incompatibilities:
  135.  
  136. (a) The procedure "tk_menus" has been replaced by "tk_menuBar", which has
  137.     a slightly different calling sequence.
  138.  
  139. (b) In canvas and entry widgets the options "cursorBackground",
  140.     "cursorBorderWidth", "cursorOffTime", "cursorOnTime", and "cursorWidth"
  141.     have been renamed to "insertBackground" etc.  In addition, the
  142.     "cursor" index has been renamed to "insert" in both widgets and
  143.     the "cursor" widget command has been renamed to "icursor".  This
  144.     was all done to avoid confusion between the insertion and mouse
  145.     cursors (text widgets already use the "insert" names in anticipation
  146.     of the change).
  147.  
  148. (c) The procedures Tk_FreeBitmap, Tk_NameOfBitmap, Tk_SizeOfBitmap,
  149.     Tk_FreeCursor, Tk_NameOfCursor, and Tk_FreeGC all require a Display *
  150.     argument so that they will do the right thing when there are windows
  151.     on multiple displays.
  152.  
  153. (d) The -command option for cascade menu entries is now invoked before
  154.     entry activation rather than before entry invocation.
  155.  
  156. (e) The command "grab none" no longer exists.  Instead, use "grab release"
  157.     with an explicit window argument.
  158.  
  159. (f) Menubuttons no longer support the "-variable" option or the "post"
  160.     and "unpost" widget commands.
  161.  
  162. (g) Window names that start with upper-case letters are now prohibited
  163.     (they never worked very well, since they caused confusion with class
  164.     names).
  165.  
  166. (h) If there is no official focus window then keystrokes are discarded
  167.     instead of going to the window under the pointer.
  168.  
  169. (i) Boolean options such as -exportselection are now returned by the
  170.     "configure" widget command as "0" or "1" rather than "true" or
  171.     "false".
  172.  
  173. (j) The widget classes "RadioButton" and "CheckButton" have been renamed
  174.     "Radiobutton" and "Checkbutton" for consistency.  From now on widget
  175.     class names will have exactly one capital letter.
  176.  
  177. (k) The "dependents" option to the place command has been renamed "slaves"
  178.     instead, which is more consistent with master/slave terminology used
  179.     in documentation.
  180.  
  181. ------------------------------
  182. 2. List of changes in Tcl 6.5:
  183. ------------------------------
  184.  
  185. 127. 8/10/92 Changed tclBasic.c so that comment lines can be continued by
  186. putting a backslash before the newline.
  187.  
  188. 128. 8/21/92 Modified "unknown" to allow the source-ing of a file for
  189. an auto-load to trigger other nested auto-loads, as long as there isn't
  190. any recursion on the same command name.
  191.  
  192. 129. 8/25/92 Modified "format" command to allow " " and "+" flags, and
  193. allow flags in any order.
  194.  
  195. 130. 9/14/92 Modified Tcl_ParseVar so that it doesn't actually attempt
  196. to look up the variable if "noEval" mode is in effect in the interpreter
  197. (it just parses the name).  This avoids the errors that used to occur
  198. in statements like "expr {[info exists foo] && $foo}".
  199.  
  200. 131. 9/14/92 Fixed bug in "uplevel" command where it didn't output the
  201. correct error message if a level was specified but no command.
  202.  
  203. 132. 9/14/92 Renamed manual entries to have extensions like .3 and .n,
  204. and added "install" target to Makefile.
  205.  
  206. 133. 9/18/92 Modified "unknown" command to emulate !!, !<num>, and
  207. ^<old>^<new> csh history substitutions.
  208.  
  209. 134. 9/21/92 Made the config script cleverer about figuring out which
  210. switches to pass to "nm".
  211.  
  212. 135. 9/23/92 Fixed tclVar.c to be sure to copy flags when growing variables.
  213. Used to forget about traces in progress and make extra recursive calls
  214. on trace procs.
  215.  
  216. 136. 9/28/92 Fixed but in auto_reset where it was unsetting variables
  217. that might not exist.
  218.  
  219. 137. 10/7/92 Changed "parray" library procedure to print any array
  220. accessible to caller, local or global.
  221.  
  222. 138. 10/15/92 Fixed bug where propagation of new environment variable
  223. values among interpreters took N! time if there exist N interpreters.
  224.  
  225. 139. 10/16/92 Changed auto_reset procedure so that it also deletes any
  226. existing procedures that are in the auto_load index (the assumption is
  227. that they should be re-loaded to get the latest vesions).
  228.  
  229. 140. 10/21/92 Fixed bug that caused lists to be incorrectly generated
  230. for elements that contained backslash-newline sequences.
  231.  
  232. 141. 12/9/92 Added support for TCL_LIBRARY environment variable:  use
  233. it as library location if it's present.
  234.  
  235. 142. 12/9/92 Added "info complete" command, Tcl_CommandComplete procedure.
  236.  
  237. 143. 12/16/92 Changed the Makefile to check to make sure "config" has been
  238. run (can't run config directly from the Makefile because it modifies the
  239. Makefile;  thus make has to be run again after running config).
  240.  
  241. -----------------------------
  242. 3. Catalog of Tcl/Tk sources:
  243. -----------------------------
  244.  
  245. I have left the sources and documentation for the Tcl command
  246. language library, for the Tk toolkit, and for a few Tcl-based
  247. applications in the public FTP area on sprite.berkeley.edu.
  248. All of these files are in the "tcl" subdirectory of the FTP area.
  249. Here is a catalog of what's available.  Most of the files are
  250. compressed tar files ("xxx.tar.Z").  There is some overlap
  251. between the contents of the various packages.
  252.  
  253. tk3.0.tar.Z -        This is the latest release of the Tk toolkit, released
  254.             in December 1992.  It includes a complete copy of the
  255.             Tcl 6.5 release (the version of Tcl with which it is
  256.             compatible) plus a simple windowing shell called
  257.             "wish".  If you retrieve this file you don't need to
  258.             retrieve Tcl separately.
  259.  
  260. tcl6.5.tar.Z -        This is the newest release of the Tcl library.
  261.             It became available in December 1992.  This package
  262.             includes only the Tcl library and its documentation,
  263.             plus a simple main program for testing.
  264.  
  265. tclX6.4c-p1.tar.Z -    Extended Tcl (or NeoSoft Tcl), created by Mark
  266.             Diekhans and Karl Lehenbauer, which adds a number
  267.             of useful facilities to the base Tcl release.
  268.             Among the things in Extended Tcl are a Tcl shell,
  269.             many new commands for things like UNIX kernel
  270.             call access and math library routines, and an
  271.             on-line help facility.  This file is based on Tcl
  272.             6.4 and also works with Tk 2.3.
  273.  
  274. tclX6.4c-patch1.Z -    A patch file that upgrades the previous release of
  275.             tclX (tclX6.4c.tar.Z) to the more recent release
  276.             (tclX6.4c-p1.tar.Z).
  277.  
  278. mx.tar.Z -        Sources and documentation for a mouse-based text
  279.             editor (mx) and terminal emulator (tx) based on
  280.             Tcl.  This is a very old release:  it uses an old
  281.             version of Tcl (which is included) and doesn't
  282.             even use Tk;  it uses an ancient toolkit called
  283.             "Sx".  These tools will eventually be replaced
  284.             with new tools based on Tk and the newest Tcl.
  285.  
  286. mx-2.5.tar.Z -         Newer version of mx (see above) that uses the
  287.             standard X selection mechanism rather than the
  288.             homegrown mechanism used by previous versions. 
  289.             Version 2.5 is not backwards compatible with 
  290.             previous versions (you can't cut and paste between
  291.             the two). Still uses sx and an old version of 
  292.             Tcl (both of which are included).
  293.  
  294. book.p1.ps.Z        Compressed Postscript for a draft of the first part
  295.             of an upcoming book on Tcl and Tk to be published in
  296.             1993 by Addison-Wesley.  This part of the book
  297.             describes the Tcl language and how to write scripts
  298.             in it.  About 130 pages in length.
  299.  
  300. tclUsenix90.ps -    Postscript for a paper on Tcl that appeared in the
  301.             Winter 1990 USENIX Conference.  This paper is also
  302.             included in the Tcl and Tk distributions.
  303.  
  304. tkUsenix91.ps -        Postscript for a paper on Tk that appeared in the
  305.             Winter 1991 USENIX Conference.  This paper is also
  306.             included in the Tk distribution.
  307.  
  308. tkF10.ps -        Postscript for Figure 10 of the Tk paper.
  309.  
  310. talk1.ps -        Postscript for viewgraphs from first of five talks
  311.             in the Tcl tutorial at the 1992 X Conference (the
  312.             same talk was also given at the 1992 USENIX Winter
  313.             Conference).  This talk gives an overview of Tcl
  314.             and Tk.
  315.  
  316. talk2.ps -        Postscript for viewgraphs from second of five talks
  317.             in the Tcl tutorial at the 1992 X Conference.  This
  318.             talk describes how to write scripts in the Tcl
  319.             language.
  320.  
  321. talk3.ps -        Postscript for viewgraphs from third of five talks
  322.             in the Tcl tutorial at the 1992 X Conference.  This
  323.             talk describes how to program the Tk toolkit using
  324.             Tcl scripts.
  325.  
  326. talk4.ps -        Postscript for viewgraphs from fourth of five talks
  327.             in the Tcl tutorial at the 1992 X Conference.  This
  328.             talk describes how to write new Tcl-based applications
  329.             in C.
  330.  
  331. talk5.ps -        Postscript for viewgraphs from last of five talks
  332.             in the Tcl tutorial at the 1992 X Conference.  This
  333.             talk describes how to write implement widgets in C
  334.             using the Tk library.  This talk uses a simple
  335.             "square" widget as an example;  the code for the
  336.             widget is in tkSquare.c.
  337.  
  338. tkSquare.c -        Sample code for use in conjunction with talk5.ps.
  339.  
  340. To retrieve any or all of these packages, use anonymous FTP to
  341. sprite.berkeley.edu (Internet address 128.32.150.27).  Use user
  342. "anonymous"; when asked for a password, type your login name.  Then
  343. retrieve the relevant file(s) with the commands like the following:
  344.         type image (try "type binary" if this command is rejected)
  345.         get tcl6.4.tar.Z
  346.         get tk2.2.tar.Z
  347.         get mx.tar.Z
  348.  
  349. What you'll get in most cases are compressed tar files;  to get back the
  350. original directory hierarchies, type the commands like the following for
  351. each file you retrieved:
  352.         uncompress tk2.2.tar.Z
  353.         tar xf tk2.2.tar
  354. This will create a directory named tk2.0 with all the source files and
  355. documentation for that release.  There will be a README file in the
  356. tk2.0 subdirectory that tells what to do next.
  357.  
  358. If you don't have access to Sprite, you can also retrieve some or
  359. all of the above files from other FTP repositories.  Here is a
  360. sampler of machines that store some or all of the Tcl/Tk information,
  361. plus the directories in which to check:
  362.  
  363. ftp.uu.net:        languages/tcl/*
  364. export.lcs.mit.edu:    contrib/tk*
  365. barkley.berkeley.edu:    tcl/*
  366.  
  367. The barkley FTP area also contains a number of extensions and contributed
  368. Tcl scripts.
  369.  
  370. If you cannot use FTP at all, there is a service called "ftpmail"
  371. available from gateekeeper.dec.com:  you can send e-mail to this
  372. machine and it will use FTP to retrieve files for you and send you
  373. the files back again via e-mail.  To find out more about the ftpmail
  374. service, send a message to "ftpmail@gatekeeper.dec.com" whose body
  375. consists of the single line "help".
  376.