changes
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:277k
源码类别:

通讯编程

开发平台:

Visual C++

  1. a package's AppInit procedure called Tcl_StaticPackage to register
  2. static packages. (JO)
  3. 8/1/96 (bug fix) Fixed a series of bugs in Windows sockets so that async
  4. writebehind in the presence of read event handlers now works, and so that
  5. async writebehind also works on sockets for which a read event handler was
  6. declared and whose channels were then closed before the async write
  7. finished. The bug was reported by John Loverso and Steven Wahl,
  8. independently, test case supplied by John Loverso. (JL)
  9. ----------------- Released patch 7.5p1, 8/2/96 -----------------------
  10. 5/8/96 (new feature) Added Tcl_GetChannelMode C API for retrieving whether
  11. a channel is open for reading and writing. (JL)
  12. 5/8/96 (API changes) Revised C APIs for channel drivers:
  13.     - Removed all Tcl_Files from channel driver interface; you can now have
  14.       channels that are not based on Tcl_Files.
  15.     - Added channelReadyProc and watchChannelProc procedures to interface;
  16.       these are used to implement event notification for channels.
  17.     - Added getFileProc to channel driver, to allow the generic IO code
  18.       to retrieve a Tcl_File from a channel (presumably if the channel
  19.       uses Tcl_Files they will be stored inside its instanceData). (JL)
  20. *** INCOMPATIBILITY with Tcl 7.5 ***
  21. 5/8/96 (API change) The Tcl_CreateChannel C API was modified to not take
  22. Tcl_File arguments, and instead to take a mask specifying whether the
  23. channel is readable and/or writable. (JL)
  24. *** INCOMPATIBILITY with Tcl 7.5 ***
  25. 6/3/96 (bug fix) Made Tcl_SetVar2 robust against the case where the value
  26. of the variable is a NULL pointer instead of "". (JL)
  27. 6/17/96 (bug fix) Fixed "reading uninitialized memory" error reported by
  28. Purify, in Tcl_Preserve/Tcl_Release. (JL)
  29. 8/9/96 (bug fix) Fixed bug in init.tcl that caused incorrect error message
  30. if the act of autoloading a procedure caused the procedure to be invoked
  31. again. (JO)
  32. 8/9/96 (bug fix) Configure script produced bad library names and extensions
  33. under SunOS and a few other platforms if the --disable-load switch was used.
  34. (JO)
  35. 8/9/96 (bug fix) Tcl_UpdateLinkedVar generated an error if the variable
  36. being updated was read-only. (JO)
  37. 8/14/96 (bug fix) The macintosh now supports synchronous socket
  38. connections.  Other minor bugs were also fixed. (RJ)
  39. 8/15/96 (configuration improvement) Changed the file patchlevel.h
  40. to be tclPatch.h.  This avoids conflict with the Tk file and is now
  41. in 8.3 format on the Windows platform. (RJ)
  42. 8/20/96 (bug fix) Fixed core dump in interp alias command for interpreters
  43. created with Tcl_CreateInterp (as opposed to with Tcl_CreateSlave). (JL)
  44. 8/20/96 (bug fix) No longer masking ECONNRESET on Windows sockets so
  45. that the higher level of the IO mechanism sees the error instead of
  46. entering an infinite loop. (JL)
  47. 8/20/96 (bug fix) Destroying the last interpreter no longer closes the
  48. standard channels. (JL)
  49. 8/20/96 (bug fix) Closing one of the stdin, stdout or stderr channels and
  50. then opening a new channel now correctly assigns the new channel as the
  51. standard channel that was closed. (JL)
  52. 8/20/96 (bug fix) Added code to unix/tclUnixChan.c for using ioctl with
  53. FIONBIO instead of fcntl with O_NONBLOCK, for those versions of Unix where
  54. either O_NONBLOCK is not supported or implemented incorrectly. (JL)
  55. 8/21/96 (bug fix) Fixed "file extension" so it correctly returns the
  56. extension on files like "foo..c" as "..c" instead of ".c". (SS)
  57. 8/22/96 (bug fix) If environ[] contains static strings, Tcl would core
  58. dump in TclSetupEnv because it was trying to write NULLs into the actual
  59. data in environ[]. Now we instead copy as appropriate. (JL)
  60. 8/22/96 (added impl) Added missing implementation of Tcl_MakeTcpClientChannel
  61. for Windows platform. Code contributed by Mark Diekhans. (JL)
  62. 8/22/96 (new feature) Added a new memory allocator for the Macintosh
  63. version of Tcl.  It's quite a bit faster than MetroWerk's version. (RJ)
  64. 8/26/96 (documentation update) Removed old change bars (for all changes
  65. in Tcl 7.5 and earlier releases) from manual entries. (JO)
  66. 8/27/96 (enhancement) The exec and open commands behave better and work in 
  67. more situations under Windows NT and Windows 95.  Documentation describes 
  68. what is still lacking. (CS)
  69. 8/27/96 (enhancement) The Windows makefiles will now compile even if the
  70. compiler is not in the path and/or the compiler's environment variables
  71. have not been set up. (CS) 
  72. 8/27/96 (configuration improvement) The Windows resource files are 
  73. automatically updated when the version/patch level changes.  The header file
  74. now has a comment that reminds the user which other files must be manually
  75. updated when the version/patch level changes. (CS)
  76. 8/28/96 (new feature) Added file manipulation features (copy, rename, delete,
  77. mkdir) that are supported on all platforms. They are implemented as 
  78. subcommands to the "file" command. See the documentation for the "file"
  79. command for more information. (JH)
  80. ----------------- Released 7.6b1, 8/30/96 -----------------------
  81. 9/3/96 (bug fix) Simplified code so that standard channels are created
  82. lazily, they are added to an interpreter lazily, and they are never added
  83. to a safe interpreter. (JL)
  84. 9/3/96 (bug fix) Closing a channel after closing a standard channel, e.g.
  85. stdout, would cause the implicit recreation of that standard channel. (JL)
  86. 9/3/96 (new feature) Now calling Tcl_RegisterChannel with a NULL
  87. interpreter increments the refcount so that code outside any interpreter
  88. can use channels that are also registered in interpreters, without worrying
  89. that the channel may turn into a dangling pointer at any time. Calling
  90. Tcl_UnregisterChannel with a NULL interpreter only decrements the recount
  91. so that code outside any interpreter can safely declare it is no longer
  92. interested in a channel. (JL)
  93. 9/4/96 (new features) Two changes to dynamic loading:
  94.     - If the file name is empty in the "load" command and there is no
  95.       statically loaded version of the package, a dynamically loaded
  96.       version will be used if there is one.
  97.     - Tcl_StaticPackage ignores redundant calls for the same package. (JO)
  98. 9/6/96 (bug fix) Platform specific procedures for manipulating files are
  99. no longer macros and have been prefixed with "Tclp", such as TclpRenameFile.
  100. Unix file code now handles symbolic links and other special files correctly.
  101. The semantics of file copy and file rename has been changed so that if
  102. a target directory exists, the source files will NOT be merged with the
  103. existing files. (JH)
  104. 9/6/96 (bug fix) If standard channel is NULL, because Tcl cannot connect
  105. to the standard channel, do not increment the refcount. The channel can
  106. be NULL if there is for example no standard input. (JL)
  107. 9/6/96 (portability improvement) Changed parsing of backslash sequences
  108. like n to translate directly to absolute values like 0xa instead of
  109. letting the compiler do the translation.  This guarantees that the
  110. translation is done the same everywhere. (JO)
  111. 9/9/96 (bug fix) If channel is opened and not associated with any
  112. interpreter, but Tcl decides to use it as one of the standard channels, it
  113. became impossible to close the channel with Tcl_Close -- instead you had
  114. to call Tcl_UnregisterChannel. Fixed now so that it's safe to call
  115. Tcl_Close even when Tcl is using the channel as one of the standard ones. (JL)
  116. 9/11/96 (feature change) The Tcl library is now placed in the Tcl
  117. shared libraries resource.  You no longer need to place the Tcl files
  118. in your applications explicitly.  (RJ)
  119. 9/11/96 (feature change) Extensions no longer automatically have the
  120. resource fork of the extension opened for it.  Instead you need to
  121. use the tclMacLibrary.c file in your extension.  (RJ)
  122. *** POTENTIAL INCOMPATIBILITY ***
  123. 9/12/96 (bug fix) The extension loading mechanism on the Macintosh now
  124. looks at the 'cfrg' resource to determine where to load the code
  125. fragment from.  This means FAT fragments should now work. (RJ)
  126. 9/18/96 (enhancement) The exec and open commands behave better and work in
  127. more situations under Windows 3.X.  Documentation describes what is still
  128. lacking.  (CS)
  129. 9/19/96 (bug fix) Fixed a panic which would occur if you delete a
  130. non-existent alias before any aliases are created. Now instead correctly
  131. returns an error that the alias is not found. (JL)
  132. 9/19/96 (bug fix) Slave interpreters could rename aliases and they would
  133. not get deleted when the alias was being redefined. This led to dangling
  134. pointers etc. (JL)
  135. 9/19/96 (bug fix) Fixed a panic where a hash table entry was being deleted
  136. twice during alias management operations. (JL)
  137. 9/19/96 (bug fix) Fixed bug in event loop that could cause the input focus
  138. in Tk to get confused during menu traversal, among other problems.  The
  139. problem was related to handling of the "marker" when its event was
  140. deleted. (JO)
  141. 9/26/96 (bug fix) Windows was losing EOF on a socket if the FD_CLOSE event
  142. happened to precede any left over FD_READ events. Now correctly remembers
  143. seeing FD_CLOSE, so that trailing FD_READ events are not discarded if they
  144. do not contain any data. This allows Tcl to correctly get a zero read and
  145. notice EOF. (JL)
  146. 9/26/96 (bug fix) Was not resetting READABLE state properly on sockets
  147. under Windows if the driver discarded an FD_READ event because no data was
  148. present. Now correctly resets the state. (JL)
  149. 9/30/96 (bug fix) Made EOF sticky on Windows sockets, so that fileevent
  150. readable will fire repeatedly until the socket is closed. Previously the
  151. fileevent fired only once. This could lead to never-closed connections if
  152. the Tcl script in the fileevent wasn't closing the socket immediately. (JL)
  153. 10/2/96 (new feature) Improved the package loader:
  154.     - Added new variable tcl_pkgPath, which holds the default
  155.       directories under which packages are normally installed (each
  156.       package goes in a separate subdirectory of a directory in
  157.       $tcl_pkgPath).  These directories are included in auto_path by
  158.       default.
  159.     - Changed the package auto-loader to look for pkgIndex.tcl files 
  160.       not only in the auto_path directories but also in their immediate
  161.       children.  This should make it easier to install and uninstall
  162.       packages (don't have to change auto_path or merge pkgIndex.tcl
  163.       files). (JO)
  164. 10/3/96 (bug fix) Changed tclsh to look for tclshrc.tcl instead of
  165. tclsh.rc on startup under Windows.  This is more consistent with wish and
  166. uses the right extension. (SS)
  167. *** POTENTIAL INCOMPATIBILITY ***
  168. 10/8/96 (bug fix) Convertclock does not parse 24-hour times of the
  169. form "hhmm" correctly when hour = 00.  In the parse code, hour must be
  170. >= 100 for minutes to be non-zero.  Thanks to Lint LaCour for this
  171. bug fix. (RJ)
  172. 10/11/96 (bug fix) Under Windows, the pid command returned the process
  173. handle instead of the process id. (SS)
  174. ----------------- Released 7.6, 10/16/96 -----------------------
  175. 10/29/96 (bug fix) Under Windows, sockets would consume 100% CPU time after
  176. the first accept(), due to a typo. (JL)
  177. 10/29/96 (bug fix) Incorrect refcount management caused standard channels
  178. not to get deleted at process exit or DLL unload time, causing a memory
  179. leak of upwards of 20K each time. (JL)
  180. 11/7/96 (bug fix) Auto-exec didn't work on file names that contained
  181. spaces. (JO)
  182. 11/8/96 (bug fix) Fixed core dump that would occur if more than one call
  183. to Tcl_DeleteChannelHandler was made to delete a given channel handler. (JL)
  184. 11/8/96 (bug fix) Fixed test for return value in Tcl_Seek and Tcl_SeekCmd
  185. to only treat -1 as error, instead of all negative numbers. (JL)
  186. 11/12/96 (bug fix) Do not blocking waiting for processes at the end of a
  187. pipe during exit cleanup. (JL)
  188. 11/12/96 (bug fix) If we are in exit cleanup, do not close the system level
  189. file descriptors 0, 1 and 2. Previously they were being closed which is
  190. incorrect, in the embedded case. This led to weird behavior for programs
  191. that want to interpose on I/O through the standard file descriptors (e.g.
  192. Netscape Navigator). (JL)
  193. 11/15/96 (bug fix) Fixed core dump on Windows sockets due to dependency on
  194. deletion order at exit. Now all socket functions check to see if sockets
  195. are (still) initialized, before calling through function pointers. Before,
  196. they would call and might end up calling unloaded object code. (JL)
  197. 11/15/96 (bug fix) Fixed core dump in Windows socket initialization routine
  198. if sockets were not installed on the system. Before, it was not properly
  199. checking the result of attempting to load the socket DLL, so it would call
  200. through uninitialized function pointers. (JL)
  201. 11/15/96 (bug fix) Fixed memory leak in Windows sockets which left socket
  202. DLL handle open and could hold the socket DLL in memory uneccessarily,
  203. until a reboot. (JL)
  204. 12/4/96 (bug fix) Fixed bug in Macintosh socket code that could result
  205. in lost data if a client was closed too soon after sending data. (RJ)
  206. 12/17/96 (bug fix) Fixed deadlock bug in Windows sockets due to losing an
  207. event. This was happening because of an interaction between buffering and
  208. nonblocking mode on sockets. Now switched to sockets being blocking by
  209. default, so we are also no longer emulating blocking through a private
  210. event loop. (JL)
  211. 1/21/97 (performance bug fix) Client TCP connections were slow to create
  212. because getservbyname was always called on the port.  Now this is only
  213. done if Tcl_GetInt fails. (BW)
  214. 1/21/97 (configuration fix) Made it possible to override TCL_PACKAGE_PATH
  215. during make.  Previously it was only set during autoconf process.
  216. 1/29/97 (bug fix) Fixed some problems with the clock command that
  217. impacted how dates were scaned after the year 2000. (RJ)
  218. ----------------- Released 7.6p2, 1/31/97 -----------------------
  219. 2/5/97 (bug fix) Fixed a bug where in CR-LF translation mode, r bytes
  220. in the input stream were not being handled correctly. (JL)
  221. 2/24/97 (bug fix) Fix bug with exec under Win32s not being able to create
  222. stderr file which caused all execs to fail.  Fixed temp file leak under
  223. Win32s.  Fixed optional parameter bug with SearchPath that only happened
  224. under Win32s 1.25. (CCS)
  225. ----------------------------------------------------------
  226. Changes for Tcl 7.6 go above this line.
  227. Changes for Tcl 7.7 go below this line.
  228. ----------------------------------------------------------
  229. 5/8/96 (new feature) Added Tcl_Ungets C API for putting a sequence of bytes
  230. into a channel's input buffer. This can be used for "push" model channels
  231. where the input is obtained via callbacks instead of by request of the
  232. generic IO code. No Tcl procedure yet. (JL)
  233. 11/15/96 (new feature) Implemented hidden commands. New C APIs:
  234. Tcl_HideCommand -- hides an existing exposed command.
  235. Tcl_ExposeCommand -- exposes an existing hidden command.
  236. New tcl APIs:
  237. interp invokehidden -- invokes a hidden command in a slave.
  238. interp hide -- hides an existing exposed command.
  239. interp expose -- exposes an existing hidden command.
  240. interp hidden -- returns a list of hidden commands.
  241. The implementation of Safe Tcl now uses the new hidden commands facility
  242. to implement the safe base, instead of deleting the commands from a safe
  243. interpreter. (JL)
  244. 11/15/96 (new feature) Implemented the safe base, a mechanism for
  245. installing and requesting security policies, purely in Tcl code. Overloads
  246. the package command to also allow an interpreter to "require" a policy. The
  247. following new library commands are provided:
  248. tcl_safeCreateInterp -- creates a slave an initializes the
  249.    policy mechanism.
  250. tcl_safeInitInterp -- initializes an existing slave with the
  251.    policy mechanism.
  252. tcl_safeDeleteInterp -- deletes a slave and deinitializes the
  253.    policy mechanism.
  254. Added a new file to the library, safeinit.tcl, to hold implementation. (JL)
  255. On 7/9/97, removed the policy loading mechanism from the Safe Base. Left
  256. only the Safe Base aliases dealing with auto-loading and source. (JL)
  257. 12/6/96 (new feature) Implemented Tcl_Finalize, an API that should be
  258. called by a process when it is done using Tcl. This API runs all the exit
  259. handlers to allow them to clean up resources etc. (JL)
  260. 12/17/96 (new feature) Add an http Tcl script package to the Tcl library.
  261. This package implements the client side of HTTP/1.0; the GET, HEAD,
  262. and POST requests. (BW)
  263. 1/21/97 (new feature) Added a "marktrusted" subcommand to the "interp" and
  264. to the interpreter object command. It removes the "safe" mark on an
  265. interpreter and disables hard-wired checks for safety in the C sources. (JL)
  266. 1/21/97 (removed feature) Removed "vwait" from set of commands available in
  267. a safe interpreter. (JL)
  268. 2/11/97 (new feature, bug fix) http package.  Added -accept to http_config
  269. so you can set the Accept header.  Added -handler option to http_get so
  270. you can supply your own data handler.  Also fixed POST operation to
  271. set the correct MIME type on the request. (BW)
  272. ----------------------------------------------------------
  273. Changes for Tcl 7.7 go above this line.
  274. Changes for Tcl 8.0 go below this line.
  275. ----------------------------------------------------------
  276. 9/17/96 (bug fix) Using "upvar" it was possible to turn an array element
  277. into an array itself.  Changed to disallow this; it was quirky and didn't
  278. really work correctly anyway. (JO)
  279. 10/21/96 (new feature) The core of the Tcl interpreter has been replaced
  280. with an on-the-fly compiler that translates Tcl scripts to bytecoded
  281. instructions; a new interpreter then executes the bytecodes. The compiler
  282. introduces only a few minor changes at the level of Tcl scripts. The biggest
  283. changes are to expressions and lists.
  284.     - A second level of substitutions is no longer done for expressions.
  285.       This substantially improves their execution time. This means that
  286.       the expression "$x*4" produces a different result than in the past
  287.       if x is "$y+2". Fortunately, not much code depends on the old
  288.       two-level semantics. Some expressions that do, such as
  289.       "expr [join $list +]" can be recoded to work in Tcl8.0 by adding
  290.       an eval: e.g., "eval expr [join $list +]".
  291.     - Lists are now completely parsed on the first list operation to
  292.       create a faster internal representation. In the past, if you had a
  293.       misformed list but the erroneous part was after the point you
  294.       inserted or extracted an element, then you never saw an error.
  295.       In Tcl8.0 an error will be reported. This should only effect
  296.       incorrect programs that took advantage of behavior of the old
  297.       implementation that was not documented in the man pages.
  298. Other changes to Tcl scripts are discussed in the web page at
  299. http://www.scriptics.com/doc/compiler.html. (BL)
  300. *** POTENTIAL INCOMPATIBILITY ***
  301. 10/21/96 (new feature) In earlier versions of Tcl, strings were used as a
  302. universal representation; in Tcl 8.0 strings are replaced with Tcl_Obj
  303. structures ("objects") that can hold both a string value and an internal
  304. form such as a binary integer or compiled bytecodes. The new objects make it
  305. possible to store information in efficient internal forms and avoid the
  306. constant translations to and from strings that occurred with the old
  307. interpreter. There are new many new C APIs for managing objects. Some of the
  308. new library procedures for objects (such as Tcl_EvalObj) resemble existing
  309. string-based procedures (such as Tcl_Eval) but take advantage of the
  310. internal form stored in Tcl objects for greater speed. Other new procedures
  311. manage objects and allow extension writers to define new kinds of objects.
  312. See the manual entries doc/*Obj*.3 (BL)
  313. 10/24/96 (bug fix) Fixed memory leak on exit caused by some IO related
  314. data structures not being deallocated on exit because their refcount was
  315. artificially boosted. (JL)
  316. 10/24/96 (bug fix) Fixed core dump in Tcl_Close if called with NULL
  317. Tcl_Channel. (JL)
  318. 11/19/96 (new feature) Added library procedures for finding word
  319. breaks in strings in a platform specific manner.  See the library.n
  320. manual entry for more information. (SS)
  321. 11/22/96 (feature improvements) Added support for different levels of
  322. tracing during bytecode compilation and execution. This should help in
  323. tracking down suspected problems with the compiler or with converting
  324. existing code to use Tcl8.0. Two global Tcl variables, traceCompile
  325. and traceExec, can be set to generate tracing information in stdout:
  326.     - traceCompile: 0  no tracing (default)
  327.                     1  trace compilations of top level commands and procs
  328.                     2  trace and display instructions for all compilations
  329.     - traceExec:    0  no tracing
  330.                     1  trace only calls to Tcl procs
  331.                     2  trace invocations of all commands including procs
  332.                     3  detailed trace showing the result of each instruction
  333. traceExec >= 2 provides a one line summary of each called command and
  334. its arguments. Commands that have been "compiled away" such as set are
  335. not shown. (BL)
  336. 11/30/96 (bug fix) The command "info nameofexecutable" could sometimes
  337. return the name of a directory. (JO)
  338. 11/30/96 (feature improvements) Changed the code in library/init.tcl
  339. that reads in pkgIndex.tcl so that (a) it reads the files from child
  340. directories before those in the parent, so that the parent gets
  341. precedence, and (b) it doesn't quit if there is an error in a
  342. pkgIndex.tcl file;  instead, it prints an error message on standard
  343. error and continues. (JO)
  344. 10/5/96 (feature improvements) Partial implementation of binary string
  345. support: the ability for Tcl string values to contain embedded null bytes.
  346. Changed the Tcl object-based APIs to take a byte pointer and length pair
  347. instead of a null-terminated C string. Modified several object type managers
  348. to support binary strings but not, for example, the list type manager.
  349. Existing string-based C APIs are unchanged and will truncate binary
  350. strings. Compiled scripts containing nulls are also truncated. (BL)
  351. 12/12/96 (feature change) Removed the commands "cp", "mkdir", "mv",
  352. "rm", and "rmdir" from the Macintosh version of Tcl.  They were never
  353. officially supported and their functionality is now available via
  354. the file command. (RJ)
  355. ----------------- Released 8.0a1, 12/20/96 -----------------------
  356. 1/7/97 (bug fix) Under Windows, "file stat c:" was returning error instead
  357. of stat for current dir on c: drive.
  358. 1/10/97 (new feature) Added Tcl_GetIndexFromObj procedure for quick
  359. lookups of keyword arguments. (JO)
  360. 1/12/97 (new feature) Serial IO channel drivers for Windows and Unix,
  361. available by using Tcl open command to open pseudo-files like "com1:" or
  362. "/dev/ttya".  New option to Tcl fconfigure command for serial files:  
  363. "-mode baud,parity,data,stop" to specify baud rate, parity, data bits, and
  364. stop bits.  Serial IO is not yet available on Mac.
  365. 1/16/97 (feature change) Restored the Tcl7.x "two level substitution
  366. semantics" for expressions. Expressions not enclosed in braces are
  367. implemented, in general, by calling the expr command procedure
  368. (Tcl_ExprObjCmd) at runtime after the Tcl interpreter has already done a
  369. first round of substitutions. This is slow (about Tcl7.x speed) because new
  370. code for the expression is generally compiled each time. However, if the
  371. expression has only variable substitutions (and not command substitutions),
  372. "optimistic" fast code is generated inline. This inline code will fail if a
  373. second round of substitutions is needed (i.e., if the value of a substituted
  374. variable itself requires more substitutions). The optimistic code will
  375. catch the error and back off to call the slower but guaranteed correct
  376. expr command procedure. (BL)
  377. 1/16/97 (feature improvements) Added Tcl_ExprLongObj and Tcl_ExprDoubleObj
  378. to round out expression-related procedures. (BL)
  379. 1/16/97 (feature change) Under Windows, at startup the environment variables
  380. "path", "comspec", and "windir" in any capitalization are converted
  381. automatically to upper case.  The PATH variable could be spelled as path,
  382. Path, PaTh, etc. and it makes programming rather annoying.  All other
  383. environment variables are left alone. (CS)
  384. 1/20/97 (new features) Rewrote the "lsort" command:
  385.     - The new version is based on reentrant merge sort code provided
  386.       by Richard Hipp, so it eliminates the reentrancy and stability
  387.       problems with the old qsort-based implementation.
  388.     - The new version supports a -dictionary option for sorting, and
  389.       it also supports a -index option for sorting lists using one
  390.       element for comparison.
  391.     - The new version is an object command, so it works well with the
  392.       Tcl compiler, especially in conjunction with the new -index
  393.       option.  When the -index option is used, this version of lsort
  394.       is more than 100 times faster than the Tcl 7.6 lsort, which had
  395.       to use the -command option to get the same effect. (JO)
  396. 1/20/97 (feature improvements) Added the improved debugging support for Tcl
  397. objects prototyped by Karl Lehenbauer <karl@hammer1.ops.NeoSoft.com>.
  398. If TCL_MEM_DEBUG is defined, the object creation calls use Tcl_DbCkalloc
  399. directly in order to record the caller's source file name and line
  400. number. (BL)
  401. 1/21/97 (removed feature) Desupported the tcl_precision variable: if
  402. set, it is ignored.  Tcl now uses the full 17 digits of precision when
  403. converting real numbers to strings (with the new object system real
  404. numbers are rarely converted to strings so there is no efficiency
  405. disadvantage to printing all 17 digits; the new scheme improves
  406. accuracy and simplifies several APIs). (JO)
  407. *** POTENTIAL INCOMPATIBILITY ***
  408. 1/21/97 (feature change) Removed the "interp" argument for the
  409. procedures Tcl_GetStringFromObj, Tcl_StringObjAppend, and
  410. Tcl_StringObjAppendObj.  Also removed the "interp" argument for
  411. the updateStringProc procedure in Tcl_ObjType structures.  With
  412. the tcl_precision changes above, these are no longer needed. (JO)
  413. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0a1, but not with Tcl 7.6 ***
  414. 1/22/97 (bug fix) Fixed http.tcl so that http_reset does not result in
  415. an extra call to the command callback.  In addition, if the transaction
  416. gets a premature eof, the state(status) is "eof", not "ok". (BW)
  417. ----------------- Released 8.0a2, 1/24/97 -----------------------
  418. 1/29/97 (feature change) Changed how two digit years are parsed in the
  419. clock command.  The old interface just added 1900 which will seem
  420. broken by the year 2000.  The new scheme follows the POSIX standard
  421. and treats dates 70-99 as 1970-1999 and dates 00-38 as 2000-2038.  All
  422. other two digit dates are undefined. (RJ)
  423. *** POTENTIAL INCOMPATIBILITY ***
  424. 2/4/97 (bug fix) Fixed bug in clock code that dealt with relative
  425. dates.  Using the relative month code you could get an invalid date
  426. because it jumped into a non-existant day.  (For example, Jan 31
  427. to Feb 31.)  The code now will return the last valid day of the
  428. month in these situations.  Thanks to Hume Smith for sending in
  429. this bug fix.  (RJ)
  430. 2/10/97 (feature change) Eliminated Tcl_StringObjAppend and 
  431. Tcl_StringObjAppendObj procedures, replaced them with Tcl_AppendToObj
  432. and Tcl_AppendStringsToObj procedures.  Added new procedure
  433. Tcl_SetObjLength. (JO)
  434. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2, but not with Tcl 7.6 ***
  435. 2/10/97 (new feature) Added Tcl_WrongNumArgs procedure for generating
  436. error messages about incorrect number of arguments. (JO)
  437. 2/11/97 (new feature, bug fix) http package.  Added -accept to http_config
  438. so you can set the Accept header.  Added -handler option to http_get so
  439. you can supply your own data handler.  Also fixed POST operation to
  440. set the correct MIME type on the request. (BW)
  441. 2/22/97 (bug fix) Fixed bug that caused $tcl_platform(osVersion) to be
  442. computed incorrectly under AIX. (JO)
  443. 2/25/97 (new feature, feature change) Added support for both int and long
  444. integer objects. Added Tcl_NewLongObj/Tcl_GetLongFromObj/Tcl_SetLongFromObj
  445. procedures and renamed the Tcl_Obj internalRep intValue member to
  446. longValue. Tcl_GetIntFromObj now checks for integer values too large to
  447. represent as non-long integers. Changed Tcl_GetAllObjTypes to
  448. Tcl_AppendAllObjTypes. (BL)
  449. 3/5/97 (new feature) Added new Tcl_SetListObj procedure to round out
  450. collection of procedures that set the type and value of existing Tcl
  451. objects. (BL)
  452. 3/6/97 (new feature) Added -global flag for interp invokehidden. (JL)
  453. 3/6/97 (new feature, feature change) Added isNativeObjectProc field to the
  454. Tcl_CmdInfo structure to indicate (when 1) if the command has an
  455. object-based command procedure. Removed the nameLength arg from
  456. Tcl_CreateObjCommand since command names can't contain null characters. (BL)
  457. 3/6/97 (bug fix) Fixed bug in "unknown" procedure that caused auto-
  458. loading to fail on commands whose names begin with digits. (JO)
  459. 3/7/97 (bug fix) Auto-loading now works in Safe Base. Safe interpreters
  460. only accept the Version 2 and onwards tclIndex files. (JL)
  461. 3/13/97 (bug fix) Fixed core dump due to interaction between aliases and
  462. hidden commands. Bug found by Lindsay Marshall. (JL)
  463. 3/14/97 (bug fix) Fixed mac bugs relating to time.  The -gmt option
  464. now adjusts the time in the correct direction.  (Thanks to Ed Hume for
  465. reporting a fix to this problem.)  Also fixed file "mtime" etc. to
  466. return times from GMT rather than local time zone.  (RJ)
  467. 3/18/97 (feature change) Declaration of objv in Tcl_ObjCmdProc function
  468. changed from "Tcl_Obj *objv[]" to "Tcl_Obj *CONST objv[]".  All Tcl object
  469. commands changed to use new declaration of objv.  Naive translation of
  470. string-based command procs to object-based command procs could very easily
  471. have yielded code where the contents of the objv array were changed.  This
  472. is not a problem with string-based command procs, but doing something as
  473. simple as objv[2] = objv[3] would corrupt the runtime stack and cause Tcl to
  474. crash.  Introduced CONST in declaration of objv so that attempted assignment
  475. of new pointer values to elements of the objv array will be caught by the
  476. compiler. (CCS)
  477. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2 ***
  478. 3/19/97 (bug fix) Fixed panic due to object sharing. The root cause was
  479. that old code was using Tcl_ResetResult instead of Tcl_ResetObjResult. (JL)
  480. 3/20/97 (new feature) Added a new subcommand for the file
  481. command. file attributes filename can give a list of platform-specific
  482. options (such as file/creator type on the Mac, permissions on Unix) or
  483. set the values of them. Added a new subcommand for the file
  484. command. file nativename name gives back the platform-specific form
  485. for the file. This is useful when the filename is needed to pass to
  486. the OS, such as exec under Windows 95 or AppleScript on the Mac. For
  487. more info, see file.n. (SRP)
  488. 3/24/97 (removed feature) Removed the tcl_safePolicyPath procedure. Now
  489. the policy path is computed from the auto_path by appending the directory
  490. 'policies' to each element. Also fixed several bugs in automatic tracking
  491. of auto_path by computed policy path. (JL)
  492. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2 but not with Tcl 7.6 ***
  493. 4/8/97 (new feature) If the variable whose name is passed to lappend doesn't
  494. already exist, and there are no value arguments, lappend now creates the
  495. variable with an empty value instead of returning an error. Change suggested
  496. by Tom Tromey. (BL)
  497. 4/9/97 (feature change) Changed the name of the TCL_PART1_NOT_PARSED flag to
  498. TCL_PARSE_PART1. (BL)
  499. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2 but not with Tcl 7.6 ***
  500. 4/10/97 (bug fixes) Fixed various compilation-related bugs:
  501.     - "UpdateStringOfCmdName should never be invoked" panic.
  502.     - Bad code generated for expressions not in {}'s inside catch commands.
  503.     - Segmentation fault in some command procedures when two argument
  504.       object pointers refer to the same object.
  505.     - Second level of substitutions were never done for expressions not
  506.       in {}'s that consist of a single variable reference: e.g.,
  507.       "set x 27; set bool {$x}; if $bool {puts foo}" would fail with error.
  508.     - Bad code generated when code storage was grown while compiling some
  509.       expressions: ones with compilation errors or consisting of only a
  510.       variable reference.
  511.     - Bugs involving multiple interpreters: wasn't checking that a
  512.       procedure's code was compiled for the same interpreter as the one
  513.       executing it, and didn't invalidate code on hidden-exposed command
  514.       transitions.
  515.     - "Bad stack top" panic when executing scripts that require a huge
  516.       amount of stack space.
  517.     - Incorrect sharing of code for procedure bodies, and procedure code
  518.       deallocated before last execution of the procedure finished.
  519.     - Fixed compilation of expression words in quotes. For example,
  520.       if "0 < 3" {puts foo}.
  521.     - Fixed performance bug in array set command with large assignments.
  522.     - Tcl_SetObjLength segmentation fault setting length of empty object.
  523.     - If Tcl_SetObjectResult was passed the same object as the interpreter's
  524.       result object, it freed the object instead of doing nothing. Bug fix
  525.       by Michael J. McLennan.
  526.     - Tcl_ListObjAppendList inserted elements from the wrong list. Bug fix
  527.       by Michael J. McLennan.
  528.     - Segmentation fault if empty variable list was specified in a foreach
  529.       command. Bug fix by Jan Nijtmans.
  530.     - NULL command name was always passed to Tcl_CreateTrace callback
  531.       procedure.
  532.     - Wrong string representation generated for the value LONG_MIN.
  533.       For example, expr 1<<31 printed incorrectly on a 32 bit machine.
  534.     - "set {a($x)} 1" stored value in wrong variable.
  535.     - Tcl_GetBooleanFromObj was not checking for garbage after a numeric
  536.       value.
  537.     - Garbled "bad operand type" error message when evaluating expressions
  538.       not surrounded by {}'s. (BL)
  539. 4/16/97 (new feature) The expr command now has the "rand()" and
  540. "srand()" functions for getting random numbers in expr. (RJ)
  541. 4/23/97 (bug fix) Fixed core dump in bgerror when the error handler command
  542. deletes the current interpreter. Found by Juergen Schoenwald. (JL)
  543. 4/23/97 (feature change) The notifier interfaces have been redesigned
  544. to make embedding in applications with external event loops possible.
  545. A number of interfaces in the notifier and the channel drivers have
  546. changed.  Refer to the Notifier.3 and CrtChannel.3 manual entries for
  547. more details. (SS)
  548. *** POTENTIAL INCOMPATIBILITY ***
  549. 4/23/97 (removed feature) The Tcl_File interfaces have been removed.
  550. The Tcl_CreateFileHandler/Tcl_DeleteFileHandler interfaces now take
  551. Unix fd's and are only supported on the Unix platform.
  552. Tcl_GetChannelFile has been replaced with Tcl_GetChannelHandle.
  553. Tcl_MakeFileChannel now takes a platform specific file handle. (SS)
  554. *** POTENTIAL INCOMPATIBILITY ***
  555. 4/23/97 (removed feature) The modal timeout interface has been
  556. removed (Tcl_CreateModalTimeout/Tcl_DeleteModalTimeout) (SS)
  557. *** POTENTIAL INCOMPATIBILITY ***
  558. 4/23/97 (feature change) Channel drivers are now required to correctly
  559. implement blocking behavior when they are in blocking mode. (SS)
  560. *** POTENTIAL INCOMPATIBILITY ***
  561. 4/23/97 (new feature) Added the "binary" command for manipulating
  562. binary strings. Also, changed the "puts", "gets", and "read" commands
  563. to preserve embedded nulls.  (SS)
  564. 4/23/97 (new feature) Added tcl_platform(byteOrder) element to the
  565. tcl_platform array to identify the native byte order for the current
  566. host. (SS)
  567. 4/23/97 (bug fix) Fixed bug in date parsing around year boundaries. (SS)
  568. 4/24/97 (bug fix) In the process of copying a file owned by another user,
  569. Tcl was changing the owner of the copy back to the owner of the original
  570. file, therefore causing further file operations to fail because the current
  571. user didn't own the copy anymore.  The owner of the copy is now left as the
  572. current user. (CCS)
  573. 4/24/97 (feature change) Under Windows, don't automatically uppercase the
  574. environment variable "windir" -- it's supposed to be lower case.  (CCS)
  575. 4/29/97 (new feature) Added namespace support based on a namespace
  576. implementation by Michael J. McLennan of Lucent Technologies. A namespace
  577. encapsulates a collection of commands and variables to ensure that they
  578. won't interfere the commands and variables of other namespaces. The global
  579. namespace holds all global variables and commands. Additional namespaces are
  580. created with the new namespace command. The new variable command lets you
  581. create Tcl variables inside a namespace. The names of Tcl variables and
  582. commands may now be qualified by the name of the namespace containing them.
  583. The key namespace-related commands are summarized below:
  584.     - namespace ?eval? name arg ?arg...?
  585.          Used to define the commands and variables in a namespace.
  586.          Optionally creates the namespace.
  587.     - namespace export ?-clear? ?pattern pattern...?
  588.          Specifies which commands are exported from a namespace. These
  589.          are the ones that can be imported into another namespace.
  590.     - namespace import ?-force? ?pattern pattern...?
  591.          Makes the specified commands accessible in the current namespace.
  592.     - namespace current
  593.          Returns the name of the current namespace.
  594.     - variable name ?value? ?name ?value?...?
  595.          Creates one or more namespace variables. (BTL)
  596. 5/1/97 (bug fix) Under Windows, file times were reported in GMT.  Should be
  597. reported in local time. (CCS)
  598. 5/2/97 (feature change) Changed the name of the two Tcl variables used for
  599. tracing bytecode compilation and execution to tcl_traceCompile and
  600. tcl_traceExec respectively. These variables are now documented in the
  601. tclvars man page. (BL)
  602. 5/5/97 (new feature) Support "end" as the index for "lsort -index". (BW)
  603. 5/5/97 (bug fixes) Cleaned up the way the http package resets connections (BW)
  604. 5/8/97 (feature change) Newly created Tcl objects now have a reference count
  605. of zero instead of one. This simplifies C code that stores newly created
  606. objects in Tcl variables or in data structures such as list objects. That C
  607. code must increment the new object's reference count since the variable or
  608. data structure will contain a long-term reference to the object. Formerly,
  609. when new objects started out with reference count one, it was necessary to
  610. decrement the new object's reference count after the store to make sure it
  611. was left with the correct value; this is no longer necessary. (BL)
  612. 5/9/97 (new feature) Added the Tcl_GetsObj interface that takes an
  613. object reference instead of a dynamic string (as in Tcl_Gets). (SS)
  614. 5/12/97 (new feature) Added Tcl_CreateAliasObj and Tcl_GetAliasObj C APIs
  615. to allow an alias command to be created with a vector of Tcl_Obj structures
  616. and to get the vector back later. (JL)
  617. 5/12/97 (feature change) Changed Tcl_ExposeCommand and Tcl_HideCommand to
  618. leave an object result instead of a string result. (JL)
  619. 5/14/97 (feature change) Improved the handling of the interpreter result.
  620. This is still either an object or a string, but the two values are now kept
  621. consistent unless some C code reads or writes interp->result directly. See
  622. the SetResult man page for details. Removed the Tcl_ResetObjResult
  623. procedure. (BL)
  624. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2 ***
  625. 5/16/97 (new feature) Added "fcopy" command to move data between
  626. channels.  Refer to the manual page for more information.  Removed the
  627. "unsupported0" command since it is obsolete now.  (SS)
  628. 5/16/97 (new feature) Added Tcl_GetStringResult procedure to allow programs
  629. to get an interpreter's result as a string. If the result was previously set
  630. to an object, this procedure will convert the object to a string. Use of
  631. Tcl_GetStringResult is intended to replace direct access to interp->result,
  632. which is not safe. (BL)
  633. 5/20/97 (new features) Fixed "fcopy" to return the number of bytes
  634. transferred in the blocking case.  Updated the http package to use
  635. fcopy instead of unsupported0.  Added -timeout and -handler options to
  636. http_get.  http_get is now blocking by default.  It is only non-blocking
  637. if you supply a -command argument. (BW)
  638. 5/22/97 (bug fix) Fixed several bugs in the "lsort" command having to do
  639. with the -dictionary option and the presence of numbers embedded in the
  640. strings.  (JO)
  641. ----------------- Released 8.0b1, 5/27/97 -----------------------
  642. 6/2/97 (bug fix) Fixed bug in startup code that caused a problem in
  643. finding the library files when they are installed in a directory
  644. containing a space in the name. (SS)
  645. 6/2/97 (bug fix) Fixed bug in Unix notifier where the select mask was
  646. not being cleared under some circumstances. (SS)
  647. 6/4/97 (bug fix) Fixed bug that prevented creation of Tk widgets in
  648. namespaces. Tcl_CreateObjCommand and Tcl_CreateCommand now always create
  649. commands in the global namespace unless the command names are qualified. Tcl
  650. procedures continue to be created in the current namespace by default. (BL)
  651. 6/6/97 (new features) Added new namespace API procedures
  652. Tcl_AppendExportList and Tcl_Export to allow C code to get and set a
  653. namespace's export list. (BL)
  654. 6/11/97 (new feature) Added Tcl_ConcatObj. This object-based routine
  655. parallels the string-based routine Tcl_Concat. (SRP)
  656. 6/11/97 (new feature) Added Tcl_SetObjErrorCode. This object-based
  657. routines parallels the string-based routine Tcl_SetErrorCode. (SRP)
  658. 6/12/97 (bug fix) Fix the "unknown" procedure so that wish under Windows
  659. will exec an external program, instead of always complaining "console1 not
  660. opened for writing". (CCS)
  661. 6/12/97 (bug fix) Fixed core dump experienced by the following simple
  662. script:
  663. interp create x
  664. x alias exec exec
  665. interp delete x
  666. This panic was caused by not installing the new CmdDeleteProc when exec
  667. got redefined by the alias creation step. Reported by Lindsay Marshal (JL)
  668. 6/13/97 (new features) Tcl objects newly created by Tcl_NewObj now have a
  669. string representation that points to a shared heap string of length 1. (They
  670. used to have NULL bytes and typePtr fields. This was treated as a special
  671. case to indicate an empty string, but made type manager implementations
  672. complex and error prone.) The new procedure Tcl_InvalidateStringRep is used
  673. to mark an object's string representation invalid and to free any storage
  674. associated with the old string representation. (BL)
  675. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl7.6 ***
  676. 6/16/97 (bug fix) Tcl_ScanCountedElement could leave braces unmatched
  677. if the string ended with a backslash. (JO)
  678. 6/17/97 (bug fix) Fixed channel event bug where readable events would be
  679. lost during recursive events loops if the input buffers contained
  680. data. (SS)
  681. 6/17/97 (bug fix) Fixed bug in Windows socket code that didn't
  682. reenable read events in the case where an external entity is also
  683. reading from the socket. (SS)
  684. 6/18/97 (bug fix) Changed initial setting of the notifier service mode
  685. to TCL_SERVICE_NONE to avoid unexpected event handling during
  686. initialization. (SS)
  687. 6/19/97 (bug fix/feature change) The command callback to fcopy is now
  688. called in case of errors during the background copy.  This adds a second,
  689. optional argument to the callback that is the error string.  The callback
  690. in case of errors is required for proper cleanup by the user of fcopy. (BW)
  691. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl 7.6 ***
  692. 6/19/97 (bug fix) Fixed a panic due to the following four line script:
  693. interp create x
  694. x alias foo bar
  695. x eval rename foo blotz
  696. x alias foo {}
  697. The problem was that the interp code was not using the actual current name
  698. of the command to be deleted as a result of un-aliasing foo. (JL)
  699. 6/19/97 (feature change) Pass interp down to the ChannelOption and
  700. driver specific calls so system errors can be differentiated from syntax
  701. ones. Changed Tcl_DriverGetOptionProc type. Affects Tcl_GetChannelOption,
  702. TcpGetOptionProc,  TtyGetOptionProc, etc. (DL)
  703. *** POTENTIAL INCOMPATIBILITY ***
  704. 6/19/97 (new feature) Added Tcl_BadChannelOption for use by by driver
  705. specific option procedures (Set and Get) to return a complete and
  706. meaningful error message. (DL)
  707. 6/19/97 (bug fixes) If a system call error occurs while doing an
  708. fconfigure on tcp or tty/com channel: return the appropriate error
  709. message (instead of the syntax error one or none). (Fixed for Unix and
  710. most of the Win and Mac drivers). (DL)
  711. 6/20/97 (feature change) Eval is no longer assumed as the subcommand name
  712. in namespace commands: you must now write "namespace eval nsName {...}".
  713. Abbreviations of namespace subcommand names are now allowed. (BL)
  714. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl7.6 ***
  715. 6/20/97 (feature change) Changed the errorInfo traceback message for
  716. compilation errors from "invoked from within" to "while compiling". (BL)
  717. 6/20/97 (bug fixes) Fixed various compilation-related bugs:
  718.     - "UpdateStringOfCmdName should never be called" and
  719.       "UpdateStringOfByteCode should never be called" panics.
  720.     - Segfault in TclObjInterpProc getting procedure name after evaluation
  721.       stack is reallocated (grown).
  722.     - Could not use ":" at end of variable and command names.
  723.     - Bad code generated for while and for commands with test expressions
  724.       enclosed in quotes: e.g., "set i 0; while "$i > 5" {}".
  725.     - Command trace procedures would crash if they did a Tcl_EvalObj that
  726.       reallocated the evaluation stack.
  727.     - Break and continue commands did not reset the interpreter result.
  728.     - The Tcl_ExprXXX routines, both string- or object-based, always
  729.       modified the interpreter result even if there was no error.
  730.     - The argument parsing procedure used by several compile procedures
  731.       always treated "]" as end of a command: e.g., "set a ]" would fail.
  732.     - Changed errorInfo traceback message for compilation errors from 
  733.       "invoked from within" to "while compiling".
  734.     - Problem initializing Tcl object managers during interpreter creation.
  735.     - Added check and error message if formal parameter to a procedure is
  736.       an array element. (BL)
  737. 6/23/97 (new feature) Added "registry" package to allow manipulation
  738. of the Windows system registry.  See manual entry for details. (SS)
  739. 6/24/97 (feature change) Converted http to a package and added the
  740. http1.0 subdirectory of the Tcl script library.  This means you have
  741. to do a "package require http" to use this, as advertised in the man page. (BW)
  742. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl 7.6 ***
  743. 6/24/97 (bug fix) Ensure that Tcl_Set/GetVar C APIs, when called without
  744. TCL_LEAVE_ERR_MSG, don't touch the interp result. (DL)
  745. 6/26/97 (feature change) Changed name of Tcl_ExprStringObj to
  746. Tcl_ExprObj. (BL)
  747. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl 7.6 ***
  748. ----------------- Released 8.0b2, 6/30/97 -----------------------
  749. 7/1/97 (new feature) TCL_BUILD_SHARED flag set in tclConfig.sh
  750. when Tcl has been built with --enable-shared. A new tclLibObjs
  751. make target, echoing the list of the .o's needed to build a tcl
  752. library, is now provided. (DL)
  753. 7/1/97 (feature change) compat/getcwd.c removed and changed the
  754. only place where getcwd is used so a new USEGETWD flag selects
  755. the use of the replacement "getwd". Adding this flag is recommended
  756. for SunOS 4 (because getcwd on SunOS 4 uses a pipe to pwd(1)!). (DL)
  757. 7/7/97 (feature change) The split command now supports binary data (i.e.,
  758. null characters in strings). (BL)
  759. 7/7/97 (bug fix) string first returned the wrong result if the first
  760. argument string was empty. (BL)
  761. 7/8/97 (bug fix) Fixed core dump in fcopy that could occur when a command
  762. callback was supplied and an error or eof condition caused no background
  763. activity.  A refcount bug triggered a panic in Tcl_ListObjAppendElement. (BW)
  764. 7/8/97 (bug fix) Relaxed the pattern matching on http_get so you do not
  765. need a trailing path component.  You can now get away with just
  766. http_get www.scriptics.com (BW)
  767. 7/9/97 (bug fix) Creating anonymous interpreters no longer smashes existing
  768. commands with names similar to the generated name. Previously creating an
  769. anonymous interpreter could smash an existing command, now it skips until
  770. it finds a command name that isn't being used. (JL)
  771. 7/9/97 (feature change) Removed the policy management mechanism from the
  772. Safe Base; left the aliases to source and load modules, and to do a limited
  773. form of the "file" command. See entry of 11/15/96. (JL)
  774. 7/9/97 (bug fixes) Fixed various compilation-related bugs:
  775.     - Line numbers in errorInfo now are the same as those in Tcl7.6 unless
  776. there are compilation errors. Compilation error messages now include the
  777. entire command in error.
  778.     - Trailing ::s after namespace names weren't being ignored.
  779.     - Could not refer to an namespace variable with an empty name using a
  780. name of the form "n::". (BL)
  781. 7/9/97 (bug fix) Fixed bug in Tcl_Export that prevented you from exporting
  782. from other than the current namespace. (BL)
  783. 7/9/97 (bug fix) env.test was removing env var needed for proper finding
  784. of libraries in child process. (DL)
  785. 7/10/97 (bug fixes/new feature) Cleanup in Tcl_MakeSafe. Less information
  786. is leaked to safe interps. Error message fixes for interp sub commands.
  787. Likewise changes in safealias.tcl; tcl_safeCreateInterp can now be called
  788. without argument to generate the slave name (like in interp create). (DL)
  789. 7/10/97 (bug fixes) Bytecode compiler now generates more detailed 
  790. command location information: subcommands as well as commands now have
  791. location information. This means command trace procedures now get the
  792. correct source string for each command in their command parameter. (BL)
  793. 7/22/97 (bug fixes) Performance improvement in Safe interpreters
  794. handling. Added new mask value to (tclInt.h) Interp.flags record. (DL)
  795. 7/22/97 (bug fix) Fixed panic in 'interp target {} foo'. This bug
  796. was present since Tcl 7.6. (JL)
  797. 7/22/97 (bug fix) Fixed bug in compilation of procedures in namespaces: the
  798. procedure's namespace must be used to look up compile procedures, not the
  799. current namespace. (BL)
  800. 7/22/97 (bug fix) Use of the -channel option of http_get was not setting
  801. the end of line translations mode on the channel, so copying binary data
  802. with the -channel option was corrupting the result on non-unix platforms. (BW)
  803. 7/22/97 (bug fixes) file commands and ~user (seg fault and other
  804. improper returns). (DL)
  805. 7/23/97 (feature change) Reenabled "vwait" in Safe Base. (JL)
  806. 7/23/97 (bug fixes) Fixed two bugs involving read traces on array variables
  807. in procedures: trace procedures were sometimes not called, and reading
  808. nonexistant array elements didn't create undefined element variables that
  809. could later be defined by trace procedures. (BL)
  810. 7/24/97 (bug fix) Windows memory allocation performance was
  811. superlinear in some cases.  Made the Mac allocator generic and changed
  812. both the Mac and Windows platforms to use the new allocator instead of
  813. malloc and free. (SS)
  814. 7/24/97 - 8/12/97 (bug fixes/change of features) Completely revamped safe
  815. sourcing/loading (see safe.n) to hide pathnames, use virtual
  816. paths tokens instead, improved security in several respects and made it
  817. more tunable. Multi level interp loading can work too now. Package auto
  818. loading now works in safe interps as long as the package directory is in 
  819. the auto_path (no deep crawling allowed in safe interps). (DL)
  820. *** POTENTIAL INCOMPATIBILITY with previous alpha and beta releases ***
  821. 7/24/97 (bug fixes) Made Tcl_SetVar* and Tcl_NewString* treat a NULL value
  822. as an empty string. (This fixes hairy crash case where you would crash
  823. because load command for other interps assumed presence of
  824. errorInfo...). (DL)
  825. 7/28/97 (bug fix) Fixed pkg_mkIndex to understand namespaces.  It will
  826. use the export list of a namespace and create auto_index entries for
  827. all export commands.  Those names are in their fully qualified form in the
  828. auto_index.  Therefore, I tweaked unknown to try both $cmd and ::$cmd.
  829. Also fixed pkg_mkIndex so you can have "package require" commands inside
  830. your packages.  These commands are ignored, which is mostly ok except
  831. when you must load another package before loading yours because of
  832. linking dependencies. (BW)
  833. 7/28/97 (bug fix) A variable created by the variable command now persists
  834. until the namespace is destroyed or the variable is unset. This is true even
  835. if the variable has not been initialized; these variables used to be
  836. destroyed if an error occurred when accessing them. In addition, the "info
  837. vars" command lists uninitialized namespace variables, while the "info
  838. exists" command returns 0 for them. (BL)
  839. 7/29/97 (feature change)  Changed the http package to use the ::http
  840. namespace. http_get renamed to http::geturl, http_config renamed to
  841. http::config, http_formatQuery renamed to http::formatQuery.
  842. It now provides the 2.0 version of the package.  
  843. The 1.0 version is still available with the old names.
  844. *** POTENTIAL INCOMPATIBILITY with Tcl 8.0b2 but not with Tcl 7.6 ***
  845. 7/29/97 (bug fix, new feature) Tcl_Main now uses Tcl objects internally to
  846. preserve NULLs in commands and command output. Added new API procedure
  847. Tcl_RecordAndEvalObj that resembles Tcl_RecordAndEval but takes an object
  848. containing a command. (BL)
  849. 7/30/97 (bug fix) Tcl freed strings in the environ array even if it
  850. did not allocate them. (SS)
  851. 7/30/97 (bug fix) If a procedure is renamed into a different namespace, it
  852. now executes in the context of that namespace. (BL)
  853. 7/30/97 (bug fix) Prevent renaming of commands into and from namespaces as
  854. part of hiding them. (JL)
  855. 7/31/97 (feature change) Moved the history command from C to tcl.
  856. This uses the ::history namespace.  The "words" and "substitute" options
  857. are no longer supported.  In addition, the "keep" option without a value
  858. returns the current keep limit.  There is a new "clear" option.
  859. The unknown command now supports !! again. (BW)
  860. *** POTENTIAL INCOMPATIBILTY  ***
  861. 7/30/97 (bug fix) Made sure that a slave can not fool the master into
  862. hiding the wrong command. Made sure we don't crash in hiding + namespaces
  863. issues. (DL)
  864. 8/4/97 (bug fix) Concat, eval, uplevel, and similar commands were
  865. incorrectly trimming trailing space characters from their arguments
  866. even when the space characters were preceded by a backslash. (JO)
  867. 8/4/97 (bug fix) Removed the hard link between bgerror and tkerror.
  868. Only bgerror is supported in tcl core. Tk will still look for a
  869. tkerror but using regular tcl code for that feature. (DL)
  870. *** POTENTIAL INCOMPATIBILTY with code relying on the hard link ***
  871. 8/6/97 (bug fix) Reduced size required for compiled bytecodes by using a
  872. more compact encoding for the command pc-to-source map. (BL)
  873. 8/6/97 (new feature) Added support for additional compilation and execution
  874. statistics when Tcl is compiled with the TCL_COMPILE_STATS flag. (BL)
  875. 8/7/97 (bug fix) Expressions not in {}s that have a comparison operator as
  876. the topmost operator must be compiled out-of-line (call the expr cmd at
  877. runtime) to properly support expr's two-level substitution semantics. An
  878. example is "set a 2; set b {$a}; puts [expr $b == 2]". (BL)
  879. 8/11/97 (bug fix) The catch command would sometimes crash if a variable name
  880. was given and the bytecode evaluation stack was grown when executing the
  881. argument script. (BL)
  882. 8/12/97 (feature change) Reinstated the variable tcl_precision to control
  883. the number of digits used when floating-point values are converted to
  884. strings, with default of 12 digits.  However, had to make tcl_precision
  885. shared among all interpreters (except that safe interpreters can't
  886. modify it).  This makes the Tcl 8.0 behavior almost identical to 7.6
  887. except that the default precision is 12 instead of 6. (JO)
  888. *** POTENTIAL INCOMPATIBILITY ***
  889. ----------------- Released 8.0, 8/18/97 -----------------------
  890. 8/19/97 (bug fix) Minimal fix for glob -nocomplain bugs:
  891. "glob -nocomplain unreadableDir/*" was generating an anonymous 
  892. error. More in depth fixes will come with 8.1. (DL).
  893. 8/20/97 (bug fix) Removed check for FLT_MIN in binary command so
  894. underflow conditions are handled by the compiler automatic
  895. conversions. (SS)
  896. 8/20/97 (bug fixes) Fixed several compilation-related bugs:
  897.     - Array cmd wasn't detecting arrays that, while compiled, do not yet
  898.       exist (e.g., are marked undefined since they haven't been assigned
  899.       to yet).
  900.     - The GetToken procedure in tclCompExpr.c wasn't recognizing properly
  901.       whether an integer token was invalid. For example, "0x$" is not
  902.       a valid integer.
  903.     - Performance bug in TclExecuteByteCode: the size of its stack frame
  904.       was reduced by over 20% by moving errorInfo code elsewhere.
  905.     - Uninitialized memory read error in tclCompile.c. (BL)
  906. 8/21/97 (bug fix) safe::interpConfigure now behave like Tk widget's
  907. configure : it changes only the options you provide and you can get
  908. the current value of any single option. New ?-nested boolean? and
  909. ?-statics boolean? for all safe::interp* commands but we still
  910. accept (upward compatibility) the previously defined non valued
  911. flags ?-noStatics? and ?-nestedLoadOk?. Improved the documentation. (DL).
  912. 8/22/97 (bug fix) Updated PrintDbl.3 to reflect the fact that the
  913. tcl_precision variable is still used and that it is now shared by all
  914. interpreters. (BL)
  915. 8/25/97 (bug fix) Fixed array access bug in IllegalExprOperandType
  916. procedure in tclExecute.c: it was not properly supporting the || and &&
  917. operators. (BL)
  918. 8/27/97 (bug fix) In cases where a channel handler was created with an
  919. empty event mask while data was still buffered in the channel, the
  920. channel code would get stuck spinning on a timer that would starve
  921. idle handlers.  This mostly happened in Tk when reading from stdin. (SS)
  922. 9/4/97 (bug fix) Slave interps now inherit the maximum recursion limit
  923. of their parent instead of starting back at the default. {nb: this still
  924. does not prevent stack overflow by multi-interps recursion or aliasing} (DL)
  925. 9/11/97 (bug fix) An uninitialized variable in Tcl_WaitPid caused
  926. pipes to fail to report eof properly under Windows. (SS)
  927. 9/12/97 (bug fix) "exec" was misidentifying some DOS executables as not 
  928. executable. (CCS)
  929. 9/14/97 (bug fix) Was using the wrong structure in sizeof operation in
  930. tclUnixChan.c. (JL)
  931. 9/15/97 (bug fix) Fixed notifier to break out of do-one-event loop if
  932. Tcl_WaitForEvent returns 1, so that callers of Tcl_DoOneEvent will get
  933. a chance to check whether the event just handled is significant. This
  934. affected mainly recursive calls to Tcl_VWaitCmd; these did not get a
  935. chance to notice that the variable they were waiting for has been set
  936. and thus they didn't terminate the vwait. (JL, DL, SS)
  937. 9/15/97 (bug fix) Alignment problems in "binary format" would cause a
  938. crash on some platforms when formatting floating point numbers. (SS)
  939. 9/15/97 (bug fix) Fixed bug in Macintosh socket code.  Now passes all
  940. tests in socket.test that are not platform specific. (Thanks to Mark
  941. Roseman for the pointer on the fix.)  (RJ)
  942. 9/18/97 (bug fix) Fixed bug -dictionary option of lsort that could
  943. cause the compare function to run off the end of an array if the
  944. number only contained 0's. (Thanks to Greg Couch for the report.) (RJ)
  945. 9/18/97 (bug fix) TclFinalizeEnvironment was not cleaning up 
  946. properly. (DL, JI)
  947. 9/18/97 (bug fix) Fixed long-standing bug where an "array get" command
  948. did not trigger traces on the array or its elements. (BL)
  949. 9/18/97 (bug fixes) Fixed compilation-related bugs:
  950.     - Fixed errorInfo traceback information for toplevel coomands that
  951.       contain nested commands.
  952.     - In the expr command, && and || now accept boolean operands as well
  953.       as numeric ones. (BL)
  954. 9/22/97 (bug fix) Fixed bug that prevented translation modes from being
  955. set independently for input and output on sockets if input was "auto". (JL)
  956. 9/24/97 (bug fix) Tcl_EvalFile(3) and thus source(n) now works fine on
  957. files containing NUL chars. (DL)
  958. 9/26/97 (bug fix) Fixed use of uninitialized memory in the environ array
  959. that later could cause random core dumps. Applies to all platforms. (JL)
  960. 9/26/97 (bug fix) Fixed use of uninitialized memory in socket address data
  961. structure under some circumstances. This could cause random core dumps.
  962. This applies only to Unix. (JL)
  963. 9/26/97 (bug fix) Opening files on PC-NFS volumes would cause a hang
  964. until the system timed after the file was closed. (SS)
  965. 10/6/97 (bug fix) The join(n) command, though objectified, was loosing
  966. NULs in the joinString and in list elements after the 2nd one.
  967. Now you can "join $list " for instance. (DL)
  968. 10/9/97 (bug fix) Under windows, if env(TMP) or env(TEMP) referred to a
  969. non-existent directory, exec would fail when trying to create its temporary
  970. files. (CCS)
  971. 10/9/97 (bug fix) Under mac and windows, "info hostname" would crash if 
  972. sockets were installed but the hostname could not be determined anyhow.
  973. Tcl_GetHostName() was returning NULL when it should have been returning 
  974. an empty string. (CCS)
  975. 10/10/97 (bug fix) "file attribute /" returned error on windows. (CCS)
  976. 10/10/97 (bug fix) Fixed the auto_load procedure to handle procedures
  977. defined in namespaces better.  Also fixed pgk_mkIndex so it sees procedures
  978. defined in nested namespaces.  Index entries are still only made for
  979. exported procedures. (BW)
  980. 10/13/97 (bug fix) On unix, for files with unknown group or owner
  981. attributes, querying the "file attributes" would return an error rather than
  982. returning the group's or owner's id number, although tha command accepts
  983. numbers when setting the file's group or owner.  (CCS)
  984. 10/22/97 (bug fix) "fcopy" did not eval the callback script at the
  985. global scope. (SS)
  986. 10/22/97 (bug fix) Fixed the signature of the CopyDone callback used in
  987. the http package(s) so they can handle error cases properly. (BW)
  988. 10/28/97 (bug fixes) Fixed a problem where lappend would free the Tcl object
  989. in a variable if a Tcl_ObjSetVar2 failed because of an error calling a trace
  990. on the variable. (BL)
  991. 10/28/97 (bug fix) Changed binary scan to properly handle sign
  992. extension of integers on 64-bit or larger machines. (SS)
  993. 11/3/97 (bug fixes) Fixed several bugs:
  994.     - expressions such as "expr ($x)" must be compiled out-of-line
  995.       (call the expr command procedure at runtime) to ensure the correct
  996.       behavior when "$x" is an expression such as "5+10".
  997.     - "array set a {}" now creates a new array var with an empty array
  998.       value if the var didn't already exist.
  999.     - "lreplace $foo end end" no longer returns an error (just an empty
  1000.       list) if foo is empty.
  1001.     - upvar will no longer create a variable in a namespace that refers
  1002.       to a variable in a procedure.
  1003.     - deleting a command trace within a command trace callback would
  1004.       make the code that calls traces to reference freed memory.
  1005.     - significantly sped up "string first" and "string last" (fix from
  1006.       darrel@gemstone.com).
  1007.     - seg fault in Tcl_NewStringObj() when a NULL is passed as the byte
  1008.       pointer argument and Tcl is compiled with -DTCL_MEM_DEBUG.
  1009.     - documentation and error msg fixes. (BL)
  1010. 11/3/97 (bug fix) Fixed a number of I/O bugs related to word sizes on
  1011. 64-bit machines. (SS)
  1012. 11/6/97 (bug fix) The exit code of the first process created by Tcl
  1013. on Windows was not properly reported due to an initialization
  1014. problem. (SS)
  1015. ----------------- Released 8.0p1, 11/7/97 -----------------------
  1016. 11/19/97 (bug fix) Fixed bug in linsert where it sometimes accidently
  1017. cleared out a shared argument list object. (BL).
  1018. 11/19/97 (bug fix) Autoloading in namespaces was not working properly.
  1019. auto_mkindex is still not really namespace aware but most common
  1020. cases should now be handled properly (see init.test). (BW, DL)
  1021. 11/20/97 (enhancement) Made the changes required by the new Apple
  1022. Universal Headers V.3.0, so that Tcl will compile with CW Pro 2.
  1023. 11/24/97 (bug fix) Fixed tests in clock test suite that needed the
  1024. -gmt flag set.  Thanks to Jan Nijtmans for reporting the problem. (RJ)
  1025. ----------------- Released 8.0p2, 11/25/97 -----------------------
  1026. 12/3/97 (bug fix/optimization) Removed uneeded and potentially dangerous
  1027. instances of double evaluations if "if" and "expr" statements from
  1028. the library files. It is recommended that unless you need a double
  1029. evaluation you always use "expr {...}" instead of "expr ..." and
  1030. "if {...} ..." instead of "if ... ...". It will also be faster
  1031. thanks to the byte compiler. (DL)
  1032. ---- Shipped as part of the plugin2.0b5 as 8.0p2Plugin1, Dec 8th 97 ----
  1033. 12/8/97 (bug fix) Need to protect the newly accepted channel in an
  1034. accept callback on a socket, otherwise the callback may close it and
  1035. cause an error, which would cause the C code to attempt to close the
  1036. now deleted channel. Bumping the refcount assures that the channel sticks
  1037. around to be really closed in this case. (JL)
  1038. 12/8/97 (bug fix) Need to protect the channel in a fileevent so that it
  1039. is not deleted before the fileevent handler returns. (CS, JL)
  1040. 12/18/97 (bug fix) In the opt argument parsing package: if the description 
  1041. had only flags, the "too many arguments" case was not detected. The default
  1042. value was not used for the special "args" ending argument. (DL)
  1043. 1/15/98 (improvement) Moved common part of initScript in common file.
  1044. Moved windows specific initialization to init.tcl so you can initialize
  1045. Tcl in windows without having to call Tcl_Init which is now only
  1046. searching for init.tcl {back ported from 8.1}. (DL)
  1047. ---- Shipped as part of the plugin as 8.0p2Plugin2, Jan 15th 98 ----
  1048. 5/27/98 (bug fix) Windows socket driver did not notice new data arriving
  1049. on nonblocking sockets until the event loop was entered. (SS)
  1050. 5/27/98 (bug fix) Windows socket driver used FIONREAD, which is not
  1051. supported correctly by WinSock. (SS)
  1052. 6/9/98 (bug fix) Generic channel code failed to report readable file
  1053. events on buffered data that was left behind by a gets or read that
  1054. did not consume all available data. (SS)
  1055. 6/18/98 (bug fix) Compilation of loop expressions was too aggressive
  1056. and incorrectly inlined non-literal expressions. (SS)
  1057. 6/18/98 (bug fix) "info var" and "info locals" incorrectly reported
  1058. the existence of compiler temporary variables. (SS)
  1059. 6/18/98 (bug fix) Dictionary sorting used signed character
  1060. comparisons. (SS)
  1061. 6/18/98 (bug fix) Compile procs corrupted the exception stack in some
  1062. cases. (SS)
  1063. 6/18/98 (bug fix) Array set had erratic behavior when initializing a
  1064. variable from an empty value list. (SS)
  1065. 6/18/98 (bug fix) The Windows registry package had a bad bounds check
  1066. that could lead to a crash. (SS)
  1067. 6/18/98 (bug fix) The foreach compile proc did not correctly handle
  1068. non-local variable references. (SS)
  1069. 6/25/98 (new features) Added name resolution hooks to support [incr Tcl].
  1070. There are new internal Tcl_*Resolver* APIs to add, query and remove the hooks. 
  1071. With this changes it should be possible to dynamically load [incr Tcl]
  1072. as an extension. (MM)
  1073. 7/1/97 (bug fix) The commands "info args, body, default, procs" did
  1074. not correctly handle imported procedures. (RJ)
  1075. 7/6/98 (improvement) pkg_mkIndex now implements the "package require"
  1076. command.  This makes it possible to create index files for packages
  1077. that require another package and then execute code from that package in
  1078. their file. Previously, this would throw an error because the required
  1079. package had not been loaded.  The -nopkgrequied flag is provided to
  1080. revert back to the old functionality. (EMS)
  1081. 7/6/98 (improvement) back-ported the -direct flag from 8.1 into
  1082. pkg_mkIndex.  This results in pkgIndex.tcl files that contain direct
  1083. source or load commands instead of tclPkgSetup commands. (EMS)
  1084. 7/6/98 (improvement) made changes to the AuxData items structures to support
  1085. storage of compiled scripts on disk. Also some related minor changes in
  1086. the compilation and execution engine. (EMS)
  1087. 6/4/98 (enhancement) Added new internal routines to support inserting
  1088. and deleting from the stat, access, and open-file-channel mechanisms.
  1089. TclAccessInsertProc, TclStatInsertProc, & TclOpenFileChannelInsertProc
  1090. insert pointers to such routines; TclAccessDeleteProc, TclStatDeleteProc,
  1091. & TclOpenFileChannelDeleteProc delete pointers to such routines.  See
  1092. the file generic/tclIOUtils.c for more details. (SKS)
  1093.  
  1094. 7/1/98 (enhancement) Added a new internal C variable
  1095. tclPreInitScript.  This is a pointer to a string that may hold an
  1096. initialization script; If this pointer is non-NULL it is evaluated in
  1097. Tcl_Init() prior to the built-in initialization script defined in the
  1098. file generic/tclInitScript.h.  (SKS)
  1099. 7/6/98 (bug fix) Removed dead code in PlatformInitExitHandler so that
  1100. the TCL_LIBRARY value can be safely patched in binaries. (BW)
  1101. 7/24/98 (enhancement) Incorporated a new version of auto_mkindex that
  1102. can support the [incr Tcl] class structures.  This version will index
  1103. all procedures in a source file, not just those where "proc" starts
  1104. at the beginning of the line.  If you want the old behavior, use the
  1105. auto_mkindex_old procedure. (MM)
  1106. 7/24/98 (feature change) Changed the Windows registry key to be
  1107. HKEY_LOCAL_MACHINESoftwareScripticsTcl8.0, and to store the path
  1108. in the default value instead of "Root".  Also, this key can be
  1109. specified at compile time in case Tcl is being used in a different
  1110. context where it needs an alternate library path from the standard Tcl
  1111. installation. (SS)
  1112. 7/24/98 (feature change) Changed the search order for init.tcl.  The
  1113. tcl_library variable can now be set before calling Tcl_Init to avoid
  1114. doing any searches.  If it isn't set, then Tcl checks
  1115. env(TCL_LIBRARY), the static value set at compile time, an install
  1116. directory relative to the executable, a source directory relative to
  1117. the executable, and a tcl directory relative to the source heirarchy
  1118. containing the executable.  See the comment at the top of
  1119. generic/tclInitScript.h for more details. (SS)
  1120. 7/27/98 (config change) Changed the use of the DBGX flag in configure.in
  1121. and the makefile to be TCL_DBGX.  Users of tclConfig.sh may need to pass
  1122. this through their configure files with AC_SUBST. (BW)
  1123. 729/98 (bug fix) Changed [info body] to return a copy of the body of a
  1124. compiled procedure instead of the body itself, to avoid invalidation
  1125. of the internal rep and loss of the byte-codes. (EMS)
  1126. 8/5/98 (bug fix) The platform init code could walk off the end of a
  1127. buffer when reading the PkgPath registry value on Windows. (SS)
  1128. 8/5/98 (Windows makefile change) Introduced a set of macros to deal with
  1129. exporting symbols when compiling DLLS on Windows. See win/README for
  1130. details. (EMS)
  1131. 8/5/98 (addendum) Added a second Windows registry key under
  1132. HKEY_LOCAL_MACHINESoftwareScripticsTcl8.0, named "pkgPath".
  1133. This is a multi-string value used to initialize the tcl_pkgPath
  1134. variable. This is required if extension DLLs are in architecture specific
  1135. subdirectories. (SS)
  1136. 8/6/98 (new feature) Added tcl_findLibrary to init.tcl for use by
  1137. extensions, including Tk.  This searches in a canonical way for
  1138. an extensions library directory and initialization file. (BW)
  1139. 8/10/98 (bug fix) Imported commands used to get lost if the target
  1140. of the import was redefined.  Tcl_CreateCommand and Tcl_CreateObjCommand
  1141. were updated to restore import links. (Note that if you rename a command,
  1142. the import links move to the new name, and if you delete a command then
  1143. the import links get lost. These semantics have not changed.) (MC)
  1144. -------- Released 8.0.3 to the Tcl Consortium CD-ROM project, 8/10/98 ------
  1145. 9/3/98 (bug fix) Tcl_Realloc was failing under Windows because the
  1146. GlobalReAlloc API was not correctly re-allocating blocks that were
  1147. 32k+.  The fix was to use newer Win32 APIs (HeapAlloc, HeapFree, and
  1148. HeapReAlloc.) (BS)
  1149. 10/5/98 (bug fix) Fixed bug in pkg_mkIndex that caused some files that do
  1150. a "package require" of packages in the Tcl libraries to give a warning like
  1151. warning: "xx.tcl" provides more than one package ({xx 2.0} {yy 0.3})
  1152. and generate a broken pkgIndex.tcl file. (EMS)
  1153. 10/5/98 (bug fix) Pkg_mkIndex was not doing a case-insensitive comparison
  1154. of extensions to determine whether to load or source a file. Thus, under
  1155. Windows, MYDLLNAME.DLL was sourced, and mydllname.dll loaded. (EMS)
  1156. 10/5/98 (new feature) Created a new Tcl_Obj type, "procbody". This object's
  1157. internal representation holds a pointer to a Proc structure. Extended
  1158. TclCreateProc to take both strings and "procbody". (EMS)
  1159. 10/13/98 (bug fix) The "info complete" command can now handle strings
  1160. with NULLs embedded.  Thanks to colin@field.medicine.adelaide.edu.au 
  1161. for providing this fix. (RJ)
  1162. 10/13/98 (bug fix) The "lsort -dictionary" command did not properly
  1163. handle some numbers starting with 0.  Thanks to Richard Hipp
  1164. <drh@acm.org> for submitting the fix to Scriptics. (RJ)
  1165. 10/13/98 (bug fix) The function Tcl_SetListObj was creating an invalid
  1166. Tcl_Obj if the list had zero elements (despite what the comments said
  1167. it would do).  Thanks to Sebastian Wangnick for reporting the
  1168. problem. (RJ)
  1169. 10/20/98 (new feature) Added tcl_platform(debug) element to the
  1170. tcl_platform array on Windows platform.  The existence of the debug
  1171. element of the tcl_platform array indicates that the particular Tcl
  1172. shell has been compiled with debug information.  Using
  1173. "info exists tcl_platform(debug)" a Tcl script can direct the
  1174. interpreter to load debug versions of DLLs with the load
  1175. command. (SKS)
  1176. 10/20/98 (feature change) The Makefile and configure scripts have been
  1177. changed for IRIX to build n32 binaries instead of the old 32 abi
  1178. format.  If you have extensions built with the o32 abi's you will need
  1179. to update them to n32 for them to work with Tcl.  (RJ)
  1180. *** POTENTIAL INCOMPATIBILITY ***
  1181. 10/23/98 (bug fix) tcl_findLibrary had a stray ] in one of the
  1182. pathnames it searched for the initialization script.  tclInitScript.h
  1183. was incorrectly adding the parent of tcl_library to tcl_pkgPath.  This
  1184. logic was moved into init.tcl, and the initialization of auto_path was
  1185. documented.  Thanks to Donald Porter and Tom Silva for related
  1186. patches. (BW)
  1187. 10/29/98 (bug fix) Fixed Tcl_NotifyChannel to use Tcl_Preserve instead
  1188. of Tcl_RegisterChannel so that 1) unregistered channels do not get
  1189. closed after their first fileevent, and 2) errors that occur during
  1190. close in a fileevent script are actually reflected by the close
  1191. command. (BW)
  1192. 10/30/98 (bug fix) Overhaul of pkg_mkIndex to deal with transitive
  1193. package requires and packages split among scripts and binary files.
  1194. Also fixed ommision of global for errorInfo in tcl_findLibrary. (BW)
  1195. 11/08/98 (bug fix) Fixed the resource command to always detect
  1196. the case where a file is opened a second time with the same
  1197. permissions.  IM claims that this will always cause the same
  1198. FileRef to be returned, but in MacOS 8.1+, this is no longer the case,
  1199. so we have to test for this explicitly. (JI)
  1200. 11/10/98 (feature change) When compiling with Metrowerk's MSL, use the
  1201. exit function from MSL rather than ExitToShell.  This allows MSL to
  1202. clean up its temporary files. Thanks to Vince Darley for this
  1203. improvement. (JI)
  1204. ----------------- Released 8.0.4, 11/19/98 -------------------------
  1205. 11/20/98 (bug fix) Handle possible NULL return in TclGetStdFiles. (RJ)
  1206. 11/20/98 (bug fix) The dltests would not build on SGI.  They reported
  1207. that you could not mix n32 with 032 binaries.  The configure script
  1208. has been modified to get the EXTRA_CFLAGS from the tcl configure
  1209. script.  [Bug id: 840] (RJ)
  1210. 12/3/98 (bug fix) Windows NT creates sockets so they are inheritable
  1211. by default.  Fixed socket code so it turns off this bit right after
  1212. creation so sockets aren't kept open by exec'ed processes. [Bug: 892]
  1213. Thanks to Kevin Kenny for this fix.  (SS)
  1214. 1/11/98 (bug fix)  On HP, "info sharedlibextension" was returning 
  1215. empty string on static apps.  It now always returns ".sl".  (RJ)
  1216. 1/28/99 (configure change) Now support -pipe option on gcc.  (RJ)
  1217. 2/2/99 (bug fix) Fixed initialization problem on Windows where no
  1218. searching for init.tcl would be performed if the registry keys were
  1219. missing.  (stanton)
  1220. 2/2/99 (bug fix) Added support for HKEY_PERFORMANCE_DATA and
  1221. HKEY_DYN_DATA keys in the "registry" command. (stanton)
  1222. 2/2/99 (bug fix) ENOTSUP and EOPNOTSUPP clashed on some Linux
  1223. variants. (stanton)
  1224. 2/2/99 (enhancement) The "open" command has been changed to use the
  1225. object interfaces. (stanton)
  1226. 2/2/99 (bug fix) In some cases Tcl would crash due to an overflow of
  1227. the exception stack resulting from a missing byte code in some
  1228. expressions. (stanton)
  1229. 2/2/99 (bug fix) Changed configure so Linux and IRIX shared libraries
  1230. are linked with the system libraries. (stanton)
  1231. 2/2/99 (bug fix) Added support for BSDI 4.x (BSD/OS-4*) to the
  1232. configure script. (stanton)
  1233. 2/2/99 (bug fix) Fixed bug where upvar could resurrect a namespace
  1234. variable after the namespace had been deleted. (stanton)
  1235. 2/2/99 (bug fix) In some cases when creating variables, the
  1236. interpreter result was being modified even if the TCL_LEAVE_ERR_MSG
  1237. flag was set. (stanton)
  1238. 2/2/99 (bug fix & new feature) Changed the socket drivers to properly
  1239. handle failures during an async socket connection.  Added a new
  1240. fconfigure option "-error" to retrieve the failure message.  See the
  1241. socket.n manual entry for details. (stanton)
  1242. 2/2/99 (bug fix) Deleting a renamed interp alias could result in a
  1243. panic. (stanton)
  1244. 2/2/99 (feature change/bug fix) Changed the behavior of "file
  1245. extension" so that it splits at the last period.  Now the extension of
  1246. a file like "foo..o" is ".o" instead of "..o" as in previous versions. 
  1247. *** POTENTIAL INCOMPATIBILITY ***
  1248. ----------------- Released 8.0.5, 3/9/99 -------------------------
  1249. ======== Changes for 8.0 go above this line ========
  1250. ======== Changes for 8.1 go below this line ========
  1251. 6/18/97 (new feature) Tcl now supports international character sets:
  1252.     - All C APIs now accept UTF-8 strings instead of iso8859-1 strings,
  1253.       wherever you see "char *", unless explicitly noted otherwise.
  1254.     - All Tcl strings represented in UTF-8, which is a convenient
  1255.       multi-byte encoding of Unicode.  Variable names, procedure names,
  1256.       and all other values in Tcl may include arbitrary Unicode characters.
  1257.       For example, the Tcl command "string length" returns how many
  1258.       Unicode characters are in the argument string.
  1259.     - For Java compatibility, embedded null bytes in C strings are
  1260.       represented as xC080 in UTF-8 strings, but the null byte at the end
  1261.       of a UTF-8 string remains .  Thus Tcl strings once again do not
  1262.       contain null bytes, except for termination bytes.
  1263.     - For Java compatibility, "uXXXX" is used in Tcl to enter a Unicode
  1264.       character.  "u0000" through "uffff" are acceptable Unicode 
  1265.       characters.  
  1266.     - "xXX" is used to enter a small Unicode character (between 0 and 255)
  1267.       in Tcl.
  1268.     - Tcl automatically translates between UTF-8 and the normal encoding for
  1269.       the platform during interactions with the system.
  1270.     - The fconfigure command now supports a -encoding option for specifying
  1271.       the encoding of an open file or socket.  Tcl will automatically
  1272.       translate between the specified encoding and UTF-8 during I/O. 
  1273.       See the directory library/encoding to find out what encodings are
  1274.       supported (eventually there will be an "encoding" command that
  1275.       makes this information more accessible).
  1276.     - There are several new C APIs that support UTF-8 and various encodings.
  1277.       See Utf.3 for procedures that translate between Unicode and UTF-8
  1278.       and manipulate UTF-8 strings. See Encoding.3 for procedures that
  1279.       create new encodings and translate between encodings.  See
  1280.       ToUpper.3 for procedures that perform case conversions on UTF-8
  1281.       strings.
  1282. 9/18/97 (enhancement) Literal objects are now shared by the ByteCode
  1283. structures created when compiled different scripts. This saves up to 45%
  1284. of the total memory needed for all literals. (BL)
  1285. 9/24/97 (bug fixes) Fixed Tcl_ParseCommand parsing of backslash-newline
  1286. sequences at start of command words. Suppressed Tcl_EvalDirect error logging
  1287. if non-TCL_OK result wasn't an error. (BL)
  1288. 10/17/97 (feature enhancement) "~username" now refers to the users' home
  1289. directory on Windows (previously always returned failure). (CCS)
  1290. 10/20/97 (implementation change) The Tcl parser has been completely rewritten
  1291. to make it more modular.  It can now be used to parse a script without actually
  1292. executing it.  The APIs for the new parser are not correctly exported, but
  1293. they will eventually be exported and augmented with Tcl commands so that
  1294. Tcl scripts can parse other Tcl scripts. (JO)
  1295. 10/21/97 (API change) Added "flags" argument to Tcl_EvalObj, removed
  1296. Tcl_GlobalEvalObj procedure.  Added new procedures Tcl_Eval2 and
  1297. Tcl_EvalObjv. (JO)
  1298. *** POTENTIAL INCOMPATIBILITY ***
  1299. 10/22/97 (API change) Renamed Tcl_ObjSetVar2 and Tcl_ObjGetVar2 to
  1300. Tcl_SetObjVar2 and Tcl_GetObjVar2 (for consistency with other C APIs)
  1301. and changed the name arguments to be strings instead of objects.  (JO)
  1302. *** POTENTIAL INCOMPATIBILITY ***
  1303. 10/27/97 (enhancement) Bytecode compiler rewritten to use the new Tcl
  1304. parser. (BL)
  1305. 11/3/97 (New routines) Added Tcl_AppendObjToObj, which appends the
  1306. string rep of one Tcl_Obj to another. Added Tcl_GetIndexFromObjStruct,
  1307. which is similar to Tcl_GetIndexFromObj, except that you can give an
  1308. offset between strings. This allows Tcl_GetIndexFromObjStruct to be
  1309. called with a table of records which have strings in them. (SRP)
  1310. 12/4/97 (enhancement) New Tcl expression parser added. Added new procedure
  1311. Tcl_ParseExpr and new token types TCL_TOKEN_SUB_EXPR and
  1312. TCL_TOKEN_OPERATOR. Expression compiler is reimplemented to use this
  1313. parser. (BL)
  1314. 12/9/97 (bug fix) Tcl_EvalObj() increments/decrements the refcount of the
  1315. script object to prevent the object from deleting itself while in the
  1316. middle of being evaluated. (CCS)
  1317. 12/9/97 (bug fix) Memory leak in Tcl_GetsObjCmd(). (CCS)
  1318. 12/11/97 (bug fix) Environment array leaked memory when compiled with
  1319. Visual C++. (SS)
  1320. 12/11/97 (bug fix) File events and non-blocking I/O did not work on
  1321. pipes under Windows.  Changed to use threads to achieve non-blocking
  1322. behavior. (SS)
  1323. 12/18/97 (bug fixes) Fixed segfault in "namespace import"; importing a
  1324. procedure that causes a cycle now returns an error. Modified "info procs",
  1325. "info args", "info body", and "info default" to return information about
  1326. imported procedures as well as procedures defined in a namespace. (BL)
  1327. 12/19/97 (enhancement) Added new Tcl_GetString() procedure that can be used
  1328. in place of Tcl_GetStringFromObj() if the string representation's length
  1329. isn't needed. (BL)
  1330. 12/18/97 (bug fix) In the opt argument parsing package: if the description 
  1331. had only flags, the "too many arguments" case was not detected. The default
  1332. value was not used for the special "args" ending argument. (DL)
  1333. 1/7/98 (clean up) Moved everything not absolutly necessary out of init.tcl
  1334. procs now in auto.tcl and package.tcl can be autoloaded if needed. (DL)
  1335. 1/7/98 (enhancement) tcltest made at install time will search for it's
  1336. init.tcl where it is, even when using virtual path compilation. (DL)
  1337. 1/8/98 (os bug workaround) when needed, using a replacement for memcmp so 
  1338. string compare "char with high bit set" "char w/o high bit set" returns
  1339. the expected value on all platforms. (DL)
  1340. 1/8/98 (unix portability/configure) building from .../unix/targetName/ 
  1341. subdirectories and simply using "../configure" should now work fine. (DL)
  1342. 1/14/98 (enhancement) Added new regular expression package that
  1343. supports AREs, EREs, and BREs.  The new package includes new escape
  1344. characters, meta-syntax, and character classes inside brackets.
  1345. Regexps involving backslashes may behave differently.  (MH)
  1346. *** POTENTIAL INCOMPATIBILITY ***
  1347. 1/16/98 (os workaround) Under windows, "file volume" was causing chatter
  1348. and/or several seconds of hanging when querying empty floppy drives.
  1349. Changed implementation to call an empirically-derived function that doesn't
  1350. cause this. (CCS)
  1351. 1/16/98 (enhancement) Converted regular expressions to a Tcl_Obj type so
  1352. their compiled form gets cached automatically.  Reduced NSUBEXP from 100
  1353. to 20. (BW)
  1354. 1/16/98 (documentation) Change unclear documentation and comments for
  1355. functions like Tcl_TranslateFileName() and Tcl_ExternalToUtfDString().  Now
  1356. it explicitly says they take an uninitialized or free DString.  A DString
  1357. that is "empty" or "not holding anything" could have been interpreted as one
  1358. currently with a zero length, but with a large dynamically allocated buffer.
  1359. (CCS)
  1360. ----------------- Released 8.1a1, 1/22/98 -----------------------
  1361. 1/28/98 (new feature) Added a "-direct" optional flag to pkg_mkIndex
  1362. to generate direct loading package indexes (such those you need
  1363. if you use namespaces and plan on using namespace import just after
  1364. package require). pkg_mkIndex still has limitations regarding
  1365. package dependencies but errors are now ignored and with -direct, correct
  1366. package indexes can be generated even if there are dependencies as long 
  1367. as the "package provide" are done early enough in the files. (DL)
  1368. 1/28/98 (enhancement) Performance tuning of regexp and regsub. (CCS)
  1369. 1/28/98 (bug fix) regexp and regsub with "-indices" returned the byte-offsets
  1370. of the characters in the UTF-8 representation, not the character offsets
  1371. themselves. (CCS)
  1372. 1/28/98 (bug fix) "clock format 0 -format %Z -gmt 1" would return the local
  1373. timezone string instead of "GMT" on Solaris and Windows.
  1374. 1/28/98 (bug fix) Restore tty settings when closing serial device on Unix.
  1375. This is good behavior when closing real serial devices, essential when
  1376. closing the pseudo-device /dev/tty because the user's terminal settings
  1377. would be left useless, in raw mode, when tcl quit. (CCS)
  1378. 1/28/98 (bug fix) Tcl_OpenCommandChannel() was modifying the contents of the
  1379. argv array passed to it, causing problems for any caller that wanted to
  1380. continue to use the argv array after calling Tcl_OpenCommandChannel(). (CCS)
  1381. 2/1/98 (bug fix) More bugs with %Z in format string argument to strftime():
  1382. 1. Borland always returned empty string.
  1383. 2. MSVC always returned the timezone string for the current time, not the
  1384.    timezone string for the specified time.  
  1385. 3. With MSVC, "clock format 0 -format %Z -gmt 1" would return "GMT" the first
  1386.    time it was called, but would return the current timezone string on all
  1387.    subsequent calls. (CCS)
  1388. 2/1/98 (bug fix) "file stat" was broken on Windows.
  1389. 1. "file stat" of a root directory (local or network) or a relative path that
  1390.    resolved to a root directory (c:. when in pwd was c:/) was returning error.
  1391. 2. "file stat" on a regular file (S_IFREG), the st_mode was sign extended to
  1392.    a negative int if the platform-dependant type "mode_t" was declared as a
  1393.    short instead of an unsigned short.
  1394. 3. "file stat" of a network directory, the st_dev was incorrectly reported
  1395.    as the id of the last accessed local drive rather than the id of the
  1396.    network drive. (CCS)
  1397. 2/1/98 (bug fix) "file attributes" of a relative path that resolved to a
  1398. root directory was returning error. (CCS)
  1399. 2/1/98 (bug fix) Change error message when "file attribute" could not
  1400. determine the attributes for a file.  Previously it would return different
  1401. error messages on Unix vs.  Windows vs. Mac. (CCS)
  1402. 2/4/98 (bug fixes) Fixed several instances of bugs where the parser/compiler 
  1403. would reach outside the range of allocated memory. Improved the array
  1404. lookup algorithm in set compilation. (DL)
  1405. 2/5/98 (change) The TCL_PARSE_PART1 flag for Set/Get(Obj)Var2 C APIs is now
  1406. deprecated and ignored. The part1 is always parsed when the part2 argument
  1407. is NULL. This is to avoid a pattern of errors for extension writers converting
  1408. from string based Tcl_SetVar() to new Tcl_SetObjVar2() and who could easily
  1409. forget to provide the flag and thus get code working for normal variables 
  1410. but not for array elements. The performance hit is minimal. A side effect
  1411. of that change is that is is no longer possible to create scalar variables
  1412. that can't be accessed by tcl scripts because of their invalid name 
  1413. (ending with parenthesis). Likewise it is also parsed and checked to 
  1414. ensure that you don't create array elements of array whose name is a valid 
  1415. array element because they would not be accessible from scripts anyway. 
  1416. Note: There is still duplicate array elements parsing code. (DL)
  1417. *** POTENTIAL INCOMPATIBILITY ***
  1418. 2/11/98 (bug fix) Sharing objects between interps, such as by "interp
  1419. eval" or "send" could cause a crash later when dereferencing an interp
  1420. that had been deleted, given code such as:
  1421. set a {set x y}
  1422. interp create foo
  1423. interp eval foo $a
  1424. interp delete foo
  1425. unset a
  1426. Interp "foo" was gone, but "a" had a internal rep consisting of bytecodes
  1427. containing a dangling pointer to "foo".  Unsetting "a" would attempt to
  1428. return resources back to "foo", causing a crash as random memory was
  1429. accessed.  The lesson is that that if an object's internal rep depends on
  1430. an interp (or any other data structure) it must preserve that data in
  1431. some fashion. (CCS)
  1432. 2/11/98 (enhancement) The "interp" command was returning inconsistent error
  1433. messages when the specified slave interp could not be found. (CCS)
  1434. 2/11/98 (bug fix) Result codes like TCL_BREAK and TCL_CONTINUE were not
  1435. propagating through the master/slave interp boundaries, such as "interp
  1436. eval" and "interp alias".  TCL_OK, TCL_ERROR, and non-standard codes like
  1437. teh integer 57 work.  There is still a question as to whether TCL_RETURN
  1438. can/should propagate. (CCS)
  1439. 2/11/98 (bug fix) TclCompileScript() was derefering memory 1 byte before
  1440. start of the string to compile, looking for ']'. (CCS,DL)
  1441. 2/11/98 (bug fix) Tcl_Eval2() was derefering memory 1 byte before start
  1442. of the string to eval, looking for ']'. (CCS,DL)
  1443. 2/11/98 (bug fix) Compiling "set a(b" was running off end of string. (CCS,DL)
  1444. 2/11/98 (bug fix) Windows initialization code was dereferencing
  1445. uninitialized memory if TCL_LIBRARY environment didn't exist. (CCS)
  1446. 2/11/98 (bug fix) Windows "registry" command was dereferencing
  1447. uninitialized memory when constructing the $errorCode for a failed
  1448. registry call. (CCS)
  1449. 2/11/98 (enhancement) Eliminate the TCL_USE_TIMEZONE_VAR definition from
  1450. configure.in, because it was the same information as the already existing
  1451. HAVE_TM_ZONE definition.  The lack of HAVE_TM_ZONE is used to work around a
  1452. Solaris and Windows bug where "clock format [clock sec] -format %Z -gmt 1" 
  1453. produces the local timezone string instead of "GMT". (CCS)
  1454. 2/11/98 (bug fix) Memleaks and dereferencing of uninitialized memory in
  1455. regexp if an error occurred while compiling a regular expression. (CCS).
  1456. 2/18/98 (new feature) Added mutexes and thread local storage in order
  1457. to make Tcl thread safe.  For testing purposes, there is a testthread
  1458. command that creates a new thread and an interpreter inside it.  See
  1459. thread.test for examples, but this script-level interface is not fixed.
  1460. Each thread has its own notifier instance to manage its own events,
  1461. and threads can post messages to each other's message queue.
  1462. This uses pthreads on UNIX, and native thread support on other platforms.
  1463. You enable this by configuring with --enable-threads.  Note that at
  1464. this time *Tk* is still not thread safe. Special thanks to
  1465. Richard Hipp: his earlier implementation inspired this work. (BW, SS, JI)
  1466. 2/18/98 (hidden feature change) The way the env() array is shared among
  1467. interpreters changed.  Updates to env used to trigger write traces in
  1468. other interpreters.  This undocumented feature is no longer implemented.
  1469. Instead, variable tracing is used to keep the C-level environ array in sync
  1470. with the Tcl-level env array. This required adding TCL_TRACE_ARRAY support
  1471. to Tcl_TraceVar2 so that array names works properly. (BW)
  1472. *** POTENTIAL INCOMPATIBILITY ***
  1473. 2/18/98 (enhancement) Conditional compilation for unix systems (e.g.,
  1474. IRIX, SCO) that use f_bsize instead of st_blksize to determine disk block
  1475. size. (CCS)
  1476. 2/23/98 (bug fix) Fixed the emulation of polling selects in the threaded
  1477. version of the Unix notifier.  The bug was showing up on a multiprocessor
  1478. as starvation of the notifier thread. (BW)
  1479. ----------------- Released 8.1a2, Feb 23 1998 -----------------------
  1480. 9/22/98 (bug fix) Changed the value of TCL_TRACE_ARRAY so it no longer
  1481. conflicts with the deprecated TCL_PARSE_PART1 flag.  This should
  1482. improve portability of C code. (stanton)
  1483. 10/6/98 (bug fix) The compile procedure for "if" incorrectly attempted
  1484. to match against the literal string "if", resulting in a stack
  1485. overflow when "::if" was compiled.  It also would incorrectly accept
  1486. "if" instead of "elsif" in later clauses.  (stanton)
  1487. 10/15/98 (new feature) Added a "totitle" subcommand to the "string"
  1488. command to convert strings to capitalize the first character of a string
  1489. and lowercase all of the other characters. (stanton)
  1490. 10/15/98 (bug fix) Changed regexp and string commands to properly
  1491. handle case folding according to the Unicode character
  1492. tables. (stanton)
  1493. 10/21/98 (new feature) Added an "encoding" command to facilitate
  1494. translations of strings between different character encodings.  See
  1495. the encoding.n manual entry for more details. (stanton)
  1496. 11/3/98 (bug fix) The regular expression character classification
  1497. syntax now includes Unicode characters in the supported
  1498. classes. (stanton)
  1499. 11/6/98 (bug fix) Variable traces were causing crashes when upvar
  1500. variables went out of scope. [Bug: 796] (stanton)
  1501. 11/9/98 (bug fix) "format" now correctly handles multibyte characters
  1502. in %s format strings. (stanton)
  1503. 11/10/98 (new feature) "regexp" now accepts three new switches
  1504. ("-line", "-lineanchor", and "-linestop") that control how regular
  1505. expressions treat line breaks. See the regexp manual entry for more
  1506. details. (stanton)
  1507. 11/17/98 (bug fix) "scan" now correctly handles Unicode
  1508. characters. (stanton)
  1509. 11/17/98 (new feature) "scan" now supports XPG3 position specifiers
  1510. and the "%n" conversion character.  See the "scan" manual entry for
  1511. more details. (stanton)
  1512. 11/17/98 (bug fix) The Tcl memory allocator now returns 8-byte aligned
  1513. chunks of memory which improves performance on Windows and avoids
  1514. crashes on other platforms. [Bug: 834] (stanton)
  1515. 11/23/98 (bug fix) Applied various regular expression performance bug
  1516. fixes supplied by Henry Spencer. (stanton)
  1517. 11/30/98 (bug fix) Fixed various thread related race conditions. [Bug:
  1518. 880 & 607] (stanton)
  1519. 11/30/98 (bug fix) Fixed a number of memory overflow and leak
  1520. bugs. [Bug: 584] (stanton)
  1521. 12/1/98 (new feaure) Added support for Korean encodings. (stanton)
  1522. 12/1/98 (feature change) Changed the Tcl_EvalObjv interface to remove
  1523. the string and length arguments.
  1524. *** POTENTIAL INCOMPATIBILITY with previous alpha releases ***
  1525. 12/2/98 (bug fix) Fixed various bugs related to line feed
  1526. translation. [Bug: 887] (stanton)
  1527. 12/4/98 (new feature) Added a message catalog facility to help with
  1528. localizing Tcl scripts.  Thanks to Mark Harrison for contributing the
  1529. initial implementation of the "msgcat" package. (stanton)
  1530. 12/7/98 (bug fix) The memory allocator was failing to update the
  1531. block list for large memory blocks that were reallocated into a
  1532. different address. [Bug: 933] (stanton)
  1533. ----------------- Released 8.1b1, Dec 10 1998 -----------------------
  1534. 12/22/98 (performance improvement) Improved the -command option of the
  1535. lsort command to better use the object system for improved
  1536. performance (about 5x speed up).  Thanks to Syd Polk for suppling the
  1537. patch. [RFE: 726] (rjohnson)
  1538. 2/10/99 (bug fix) Restored the Tcl_ObjSetVar2/Tcl_ObjGetVar2
  1539. interfaces from 8.0 and renamed the Tcl_GetObjVar2/Tcl_SetObjVar2
  1540. interfaces to Tcl_GetVar2Ex and Tcl_SetVar2Ex.  This should provide
  1541. better compatibility with 8.0. (stanton)
  1542. *** POTENTIAL INCOMPATIBILITY with previous alpha/beta releases ***
  1543. 2/10/99 (bug fix) Made the eval interfaces compatible with 8.0 by
  1544. renaming Tcl_EvalObj to Tcl_EvalObjEx, renaming Tcl_Eval2 to
  1545. Tcl_EvalEx and restoring Tcl_EvalObj and Tcl_GlobalEvalObj interfaces
  1546. so they match Tcl 8.0. (stanton)
  1547. *** POTENTIAL INCOMPATIBILITY with previous alpha/beta releases ***
  1548. 2/25/99 (bug fix/new feature) On Windows, the channel drivers for
  1549. consoles and serial ports now completely support file events. (redman)
  1550. 3/5/99 (bug fix) Integrated patches to fix various configure problems
  1551. that affected HP-UX-11, 64-bit IRIX, Linux, and Solaris. (stanton)
  1552. 3/9/99 (bug fix) Integrated various AIX related patches to improve
  1553. support for shared libraries. (stanton)
  1554. 3/9/99 (new feature) Added tcl_platform(user) to provide a portable
  1555. way to get the name of the current user. (welch)
  1556. 3/9/99 (new feature) Integrated the stub library mechanism contributed
  1557. by Jan Nijtmans, Paul Duffin, and Jean-Claude Wippler.  This feature
  1558. should make it possible to write extensions that support multiple
  1559. versions of Tcl simultaneously.  It also makes it possible to
  1560. dynamically load extensions into statically linked interpreters.  This
  1561. patch includes the following changes:
  1562.       - Added a Tcl_InitStubs() interface
  1563.       - Added Tcl_PkgProvideEx, Tcl_PkgRequireEx, Tcl_PkgPresentEx,
  1564.        and Tcl_PkgPresent.
  1565.       - Added va_list versions of all VARARGS functions so they can be
  1566. invoked from wrapper functions.
  1567. See the manual for more information. (stanton)
  1568. 3/10/99 (feature change) Replaced Tcl_AlertNotifier with
  1569. Tcl_ThreadAlert since the Tcl_AlertNotifier function relied on passing
  1570. internal data structures. (stanton)
  1571. *** POTENTIAL INCOMPATIBILITY with previous alpha/beta releases ***
  1572. 3/10/99 (new feature) Added a Tcl_GetVersion API to make it easier to
  1573. check the Tcl version and patch level from C. (redman)
  1574. 3/14/99 (feature change) Tried to unify the TclpInitLibrary path
  1575. routines to look in similar places from Windows to UNIX.  The new
  1576. library search path is: TCL_LIBRARY, TCL_LIBRARY/../tcl8.1, relative
  1577. to DLL (Windows Only) relative to installed executable, relative to
  1578. develop executable, and relative to compiled-in in location (UNIX
  1579. Only.)  This fix included:
  1580.     - Defining a TclpFindExecutable
  1581.     - Moving Tcl_FindExecutable to a common area in tclEncoding.c
  1582.     - Modifying the TclpInitLibraryPath routines.
  1583. (surles)
  1584. 3/14/99 (feature change) Added hooks for TclPro Wrapper to initialize
  1585. the location of the encoding files and libraries.  This fix included:
  1586.     - Adding the TclSetPerInitScript routine.
  1587.     - Modifying the Tcl_Init routines to evaluate the non-NULL
  1588.       pre-init script.
  1589.     - Adding the Tcl_SetdefaultEncodingDir and Tcl_GetDefaultEncodingDir
  1590.       routines.
  1591.     - Modifying the TclpInitLibrary routines to append the default
  1592.       encoding dir.
  1593. (surles)
  1594. 3/14/99 (feature change) Test suite now uses "test" namespace to
  1595. define the test procedure and other auxiliary procedures as well as
  1596. global variables.
  1597.     - Global array testConfige is now called ::test::testConfig.
  1598.     - Global variable VERBOSE is now called ::test::verbose, and
  1599.       ::test::verbose no longer works with numerical values.  We've
  1600.       switched to a bitwise character string.  You can set
  1601.       ::test::verbose by using the -verbose option on the Tcl command
  1602.       line.
  1603.     - Global variable TESTS is now called ::test::matchingTests, and
  1604.       can be set on the Tcl command line via the -match option.
  1605.     - There is now a ::test::skipTests variable (works similarly to
  1606.       ::test::matchTests) that can be set on the Tcl command line via
  1607.       the -match option.
  1608.     - The test suite can now be run in any working directory.  When
  1609.       you run "make test", the working directory is nolonger switched
  1610.       to ../tests.
  1611. (hirschl)
  1612. *** POTENTIAL INCOMPATIBILITY ***
  1613. --------------- Released 8.1b2, March 16, 1999 ----------------------
  1614. 3/18/99 (bug fix) Fixed missing/incorrect characters in shift-jis table
  1615. (stanton)
  1616. 3/18/99 (feature change) The glob command ignores the
  1617. FS_CASE_IS_PRESERVED bit on file systesm and always returns
  1618. exactly what it gets from the system. (stanton)
  1619. *** POTENTIAL INCOMPATIBILITY ***
  1620. 3/19/99 (new feature) Added support for --enable-64bit.  For now,
  1621. this is only supported on Solaris 7 64bit (SunOS 5.7) using the Sun
  1622. compiler. (redman)
  1623. 3/23/99 (bug fix) Fixed fileevents and gets on Windows consoles and
  1624. serial devices so that non-blocking channels do not block on partial
  1625. input lines.  (redman)
  1626. 3/23/99 (bug fix) Added a new Tcl_ServiceModeHook interface.
  1627. This is used on Windows to avoid the various problems that people
  1628. have been seeing where the system hangs when tclsh is running
  1629. outside of the event loop. As part of this, renamed
  1630. TcapAlertNotifier back to Tcl_AlertNotifier since it is public.
  1631. (stanton)
  1632. 3/23/99 (feature change) Test suite now uses "tcltest" namespace to
  1633. define the test procedure and other auxiliary procedures as well as
  1634. global variables.  The previously chosen "test" namespace was thought
  1635. to be too generic and likely to create conflits.
  1636. (hirschl)
  1637. *** POTENTIAL INCOMPATIBILITY ***
  1638. 3/24/99 (bug fix) Make sockets thread safe on Windows.
  1639. (redman)
  1640. 3/24/99 (bug fix) Fix cases where expr would incorrect return
  1641. a floating point value instead of an integer. (stanton)
  1642. 3/25/99 (bug fix) Added ASCII to big5 and gb2312 encodings.
  1643. (stanton)
  1644. 3/25/99 (feature change) Changed so aliases are invoked at current
  1645. scope in the target interpreter instead of at the global scope.  This
  1646. was an incompatibility introduced in 8.1 that is being removed.
  1647. (stanton)
  1648. *** POTENTIAL INCOMPATIBILITY with previous beta releases ***
  1649. 3/26/99 (feature change) --enable-shared is now the default and build
  1650. Tcl as a shared library; specify --disable-shared to build a static Tcl
  1651. library and shell.
  1652. *** POTENTIAL INCOMPATIBILITY ***
  1653. 3/29/99 (bug fix)  Removed the stub functions and changed the stub
  1654. macros to just use the name without params. Pass &tclStubs into the
  1655. interp (don't use tclStubsPtr because of collisions with the stubs on
  1656. Solaris). (redman)
  1657. 3/30/99 (bug fix) Loadable modules are now unloaded at the last
  1658. possible moment during Tcl_Finalize to fix various exit-time crashes.
  1659. (welch)
  1660. 3/30/99 (bug fix) Tcl no longer calls setlocale().  It looks at
  1661. env(LANG) and env(LC_TYPE) instead.  (stanton)
  1662. 4/1/99 (bug fix) Fixed the Ultrix multiple symbol definition problem.
  1663. Now, even Tcl includes a copy of the Tcl stub library. (redman)
  1664. 4/1/99 (bug fix) Internationalized the registry package.
  1665. 4/1/99 (bug fix) Changed the implemenation of Tcl_ConditionWait and
  1666. Tcl_ConditionNotify on Windows.  The new algorithm eliminates a race
  1667. condition and was suggested by Jim Davidson. (welch)
  1668. 4/2/99 (new apis)  Made various Unicode utility functions public.
  1669. Tcl_UtfToUniCharDString, Tcl_UniCharToUtfDString, Tcl_UniCharLen,
  1670. Tcl_UniCharNcmp, Tcl_UniCharIsAlnum, Tcl_UniCharIsAlpha,
  1671. Tcl_UniCharIsDigit, Tcl_UniCharIsLower, Tcl_UniCharIsSpace,
  1672. Tcl_UniCharIsUpper, Tcl_UniCharIsWordChar, Tcl_WinUtfToTChar,
  1673. Tcl_WinTCharToUtf (stanton)
  1674. 4/2/99 (feature change) Add new DDE package and removed the Tk
  1675. send command from the Windows version.  Changed DDE-based send
  1676. code into "dde eval" command.  The DDE package can be loaded
  1677. into tclsh, not just wish.  Windows only. (redman)
  1678. 4/5/99 (bug fix) Changed safe-tcl so that the encoding command
  1679. is an alias that masks out the "encoding system" subcommand.
  1680. (redman)
  1681. 4/5/99 (bug fix) Configure patches to improve support for
  1682. OS/390 and BSD/OS 4.*. (stanton)
  1683. 4/5/99 (bug fix) Fixed crash in the clock command that occurred
  1684. with negative time values in timezones east of GMT. (stanton)
  1685. 4/6/99 (bug fix) Moved the "array set" C level code into a common
  1686. routine (TclArraySet).  The TclSetupEnv routine now uses this API to
  1687. create an env array w/ no elements.  This fixes the bug caused when
  1688. every environ varaible is removed, and the Tcl env variable is
  1689. synched.  If no environ vars existed, the Tcl env var would never be
  1690. created. (surles)
  1691. 4/6/99 (bug fix) Made the Env module I18N compliant. (surles)
  1692. 4/6/99 (bug fix) Changed the FindVariable routine to TclpFindVariable,
  1693. that now does a case insensitive string comparison on Windows, and not
  1694. on UNIX. (surles)
  1695. --------------- Released 8.1b3, April 6, 1999 ----------------------
  1696. 4/9/99 (bug fix)  Fixed notifier deadlock situation when the pipe used
  1697. to talk back notifier thread is filled with data.  Found as a result of the
  1698. focus.test for Tk hanging. (redman)
  1699. 4/13/99 (bug fix) Fixed bug where socket -async combined with
  1700. fileevent for writing did not work under Windows NT. (redman)
  1701. 4/13/99 (encoding fix) Restored the double byte definition of GB2312
  1702. and added the EUC-CN encoding.  EUC-CN is a variant of GB2312 that
  1703. shifts the characters into bytes with the high bit set and includes
  1704. ASCII as a subset. (stanton)
  1705. 4/27/99 (bug fix) Added 'extern "C" {}' block around the stub table
  1706. pointer declaration so the stub library can be used from C++. (stanton)
  1707. --------------- Released 8.1 final, April 29, 1999 ----------------------
  1708. 4/22/99 (bug fix) Changed Windows NT socket implementation to avoid
  1709. creating a communication window.  This avoids the problem where the
  1710. system hangs waiting for tclsh to respond to a system-wide synchronous
  1711. broadcast (e.g. if you change system colors). (redman)
  1712. 4/22/99 (bug fix) Added call to TclWinInit from TclpInitPlatform when
  1713. building a static library since DllMain will not be invoked.  This
  1714. could break old code that explicitly called TclWinInit, but should be
  1715. simpler in the long run. (stanton)
  1716. *** POTENTIAL INCOMPATIBILITY ***
  1717. 4/23/99 (bug fix) Added support for the koi8-r Cyrillic
  1718. encoding. [Bug: 1771] (stanton)
  1719. 4/28/99 (bug fix) Changed internal Tcl_Obj usage to avoid freeing the