OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [insight/] [tcl/] [changes] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
Recent user-visible changes to Tcl:
2
 
3
SCCS: @(#) changes 1.338 97/11/25 08:30:52
4
 
5
1. No more [command1] [command2] construct for grouping multiple
6
commands on a single command line.
7
 
8
2. Semi-colon now available for grouping commands on a line.
9
 
10
3. For a command to span multiple lines, must now use backslash-return
11
at the end of each line but the last.
12
 
13
4. "Var" command has been changed to "set".
14
 
15
5. Double-quotes now available as an argument grouping character.
16
 
17
6. "Return" may be used at top-level.
18
 
19
7. More backslash sequences available now.  In particular, backslash-newline
20
may be used to join lines in command files.
21
 
22
8. New or modified built-in commands:  case, return, for, glob, info,
23
print, return, set, source, string, uplevel.
24
 
25
9. After an error, the variable "errorInfo" is filled with a stack
26
trace showing what was being executed when the error occurred.
27
 
28
10. Command abbreviations are accepted when parsing commands, but
29
are not recommended except for purely-interactive commands.
30
 
31
11. $, set, and expr all complain now if a non-existent variable is
32
referenced.
33
 
34
12. History facilities exist now.  See Tcl.man and Tcl_RecordAndEval.man.
35
 
36
13. Changed to distinguish between empty variables and those that don't
37
exist at all.  Interfaces to Tcl_GetVar and Tcl_ParseVar have changed
38
(NULL return value is now possible).  *** POTENTIAL INCOMPATIBILITY ***
39
 
40
14. Changed meaning of "level" argument to "uplevel" command (1 now means
41
"go up one level", not "go to level 1"; "#1" means "go to level 1").
42
*** POTENTIAL INCOMPATIBILITY ***
43
 
44
15. 3/19/90 Added "info exists" option to see if variable exists.
45
 
46
16. 3/19/90 Added "noAbbrev" variable to prohibit command abbreviations.
47
 
48
17. 3/19/90 Added extra errorInfo option to "error" command.
49
 
50
18. 3/21/90 Double-quotes now only affect space:  command, variable,
51
and backslash substitutions still occur inside double-quotes.
52
*** POTENTIAL INCOMPATIBILITY ***
53
 
54
19. 3/21/90 Added support for \r.
55
 
56
20. 3/21/90 List, concat, eval, and glob commands all expect at least
57
one argument now.  *** POTENTIAL INCOMPATIBILITY ***
58
 
59
21. 3/22/90 Added "?:" operators to expressions.
60
 
61
22. 3/25/90 Fixed bug in Tcl_Result that caused memory to get trashed.
62
 
63
------------------- Released version 3.1 ---------------------
64
 
65
23. 3/29/90 Fixed bug that caused "file a.b/c ext" to return ".b/c".
66
 
67
24. 3/29/90 Semi-colon is not treated specially when enclosed in
68
double-quotes.
69
 
70
------------------- Released version 3.2 ---------------------
71
 
72
25. 4/16/90 Rewrote "exec" not to use select or signals anymore.
73
Should be more Sys-V compatible, and no slower in the normal case.
74
 
75
26. 4/18/90 Rewrote "glob" to eliminate GNU code (there's no GNU code
76
left in Tcl, now), and added Tcl_TildeSubst procedure.  Added automatic
77
tilde-substitution in many commands, including "glob".
78
 
79
------------------- Released version 3.3 ---------------------
80
 
81
27. 7/11/90 Added "Tcl_AppendResult" procedure.
82
 
83
28. 7/20/90 "History" with no options now defaults to "history info"
84
rather than to "history redo".  Although this is a backward incompatibility,
85
it should only be used interactively and thus shouldn't present any
86
compatibility problems with scripts.
87
 
88
29. 7/20/90 Added "Tcl_GetInteger", "Tcl_GetDouble", and "Tcl_GetBoolean"
89
procedures.
90
 
91
30. 7/22/90 Removed "Tcl_WatchInterp" procedure:  doesn't seem to be
92
necessary, since the same effect can be achieved with the deletion
93
callbacks on individual commands.  *** POTENTIAL INCOMPATIBILITY ***
94
 
95
31. 7/23/90 Added variable tracing:  Tcl_TraceVar, Tcl_UnTraceVar,
96
and Tcl_VarTraceInfo procedures, "trace" command.
97
 
98
32. 8/9/90 Mailed out list of all bug fixes since 3.3 release.
99
 
100
33. 8/29/90 Fixed bugs in Tcl_Merge relating to backslashes and
101
semi-colons.  Mailed out patch.
102
 
103
34. 9/3/90 Fixed bug in tclBasic.c: quotes weren't quoting ]'s.
104
Mailed out patch.
105
 
106
35. 9/19/90 Rewrote exec to always use files both for input and
107
output to the process.  The old pipe-based version didn't work if
108
the exec'ed process forked a child and then exited:  Tcl waited
109
around for stdout to get closed, which didn't happen until the
110
grandchild exited.
111
 
112
36. 11/5/90 ERR_IN_PROGRESS flag wasn't being cleared soon enough
113
in Tcl_Eval, allowing error messages from different commands to
114
pile up in $errorInfo.  Fixed by re-arranging code in Tcl_Eval that
115
re-initializes result and ERR_IN_PROGRESS flag.  Didn't mail out
116
patch:  changes too complicated to describe.
117
 
118
37. 12/19/90 Added Tcl_VarEval procedure as a convenience for
119
assembling and executing Tcl commands.
120
 
121
38. 1/29/91 Fixed core leak in Tcl_AddErrorInfo.  Also changed procedure
122
and Tcl_Eval so that first call to Tcl_AddErrorInfo need not come from
123
Tcl_Eval.
124
 
125
----------------- Released version 5.0 with Tk ------------------
126
 
127
39. 4/3/91 Removed change bars from manual entries, leaving only those
128
that came after version 3.3 was released.
129
 
130
40. 5/17/91 Changed tests to conform to Mary Ann May-Pumphrey's approach.
131
 
132
41. 5/23/91 Massive revision to Tcl parser to simplify the implementation
133
of string and floating-point support in expressions.  Newlines inside
134
[] are now treated as command separators rather than word separators
135
(this makes newline treatment consistent throughout Tcl).
136
*** POTENTIAL INCOMPATIBILITY ***
137
 
138
42. 5/23/91 Massive rewrite of expression code to support floating-point
139
values and simple string comparisons.  The C interfaces to expression
140
routines have changed (Tcl_Expr is replaced by Tcl_ExprLong, Tcl_ExprDouble,
141
etc.), but all old Tcl expression strings should be accepted by the new
142
expression code.
143
*** POTENTIAL INCOMPATIBILITY ***
144
 
145
43. 5/23/91 Modified tclHistory.c to check for negative "keep" value.
146
 
147
44. 5/23/91 Modified Tcl_Backslash to handle backslash-newline.  It now
148
returns 0 to indicate that a backslash sequence should be replaced by
149
no character at all.
150
*** POTENTIAL INCOMPATIBILITY ***
151
 
152
45. 5/29/91 Modified to use ANSI C function prototypes.  Must set
153
"USE_ANSI" switch when compiling to get prototypes.
154
 
155
46. 5/29/91 Completed test suite by providing tests for all of the
156
built-in Tcl commands.
157
 
158
47. 5/29/91 Changed Tcl_Concat to eliminate leading and trailing
159
white-space in each of the things it concatenates and to ignore
160
elements that are empty or have only white space in them.  This
161
produces cleaner output from the "concat" command.
162
*** POTENTIAL INCOMPATIBILITY ***
163
 
164
48. 5/31/91 Changed "set" command and Tcl_SetVar procedure to return
165
new value of variable.
166
 
167
49. 6/1/91 Added "while" and "cd" commands.
168
 
169
50. 6/1/91 Changed "exec" to delete the last character of program
170
output if it is a newline.  In most cases this makes it easier to
171
process program-generated output.
172
*** POTENTIAL INCOMPATIBILITY ***
173
 
174
51. 6/1/91 Made sure that pointers are never used after freeing them.
175
 
176
52. 6/1/91 Fixed bug in TclWordEnd where it wasn't dealing with
177
[] inside quotes correctly.
178
 
179
53. 6/8/91 Fixed exec.test to accept return values of either 1 or
180
255 from "false" command.
181
 
182
54. 7/6/91 Massive overhaul of variable management.  Associative
183
arrays now available, along with "unset" command (and Tcl_UnsetVar
184
procedure).  Variable traces have been completely reworked:
185
interfaces different both from Tcl and C, and multiple traces may
186
exist on same variable.  Can no longer redefine existing local
187
variable to be global.  Calling sequences have changed slightly
188
for Tcl_GetVar and Tcl_SetVar ("global" is now "flags"). Tcl_SetVar
189
can fail and return a NULL result.  New forms of variable-manipulation
190
procedures:  Tcl_GetVar2, Tcl_SetVar2, etc.  Syntax of variable
191
$-notation changed to support array indexing.
192
*** POTENTIAL INCOMPATIBILITY ***
193
 
194
55. 7/6/91 Added new list-manipulation procedures:  Tcl_ScanElement,
195
Tcl_ConvertElement, Tcl_AppendElement.
196
 
197
56. 7/12/91 Created new procedure Tcl_EvalFile, which does most of the
198
work of the "source" command.
199
 
200
57. 7/20/91 Major reworking of "exec" command to allow pipelines,
201
more redirection, background.  Added new procedures Tcl_Fork,
202
Tcl_WaitPids, Tcl_DetachPids, and Tcl_CreatePipeline.  The old
203
"< input" notation has been replaced by "<< input" ("<" is for
204
redirection from a file).  Also handles error returns and abnormal
205
terminations (e.g. signals) differently.
206
*** POTENTIAL INCOMPATIBILITY ***
207
 
208
58. 7/21/91 Added "append" and "lappend" commands.
209
 
210
59. 7/22/91 Reworked error messages and manual entries to use
211
?x? as the notation for an optional argument x, instead of [x].  The
212
bracket notation was often confused with the use of brackets for
213
command substitution.  Also modified error messages to be more
214
consistent.
215
 
216
60. 7/23/91 Tcl_DeleteCommand now returns an indication of whether
217
or not the command actually existed, and the "rename" command uses
218
this information to return an error if an attempt is made to delete
219
a non-existent command.
220
*** POTENTIAL INCOMPATIBILITY ***
221
 
222
61. 7/25/91 Added new "errorCode" mechanism, along with procedures
223
Tcl_SetErrorCode, Tcl_UnixError, and Tcl_ResetResult.  Renamed
224
Tcl_Return to Tcl_SetResult, but left a #define for Tcl_Return to
225
avoid compatibility problems.
226
 
227
62. 7/26/91 Extended "case" command with alternate syntax where all
228
patterns and commands are together in a single list argument:  makes
229
it easier to write multi-line case statements.
230
 
231
63. 7/27/91 Changed "print" command to perform tilde-substitution on
232
the file name.
233
 
234
64. 7/27/91 Added "tolower", "toupper", "trim", "trimleft", and "trimright"
235
options to "string" command.
236
 
237
65. 7/29/91 Added "atime", "mtime", "size", and "stat" options to "file"
238
command.
239
 
240
66. 8/1/91 Added "split" and "join" commands.
241
 
242
67. 8/11/91 Added commands for file I/O, including "open", "close",
243
"read", "gets", "puts", "flush", "eof", "seek", and "tell".
244
 
245
68. 8/14/91 Switched to use a hash table for command lookups.  Command
246
abbreviations no longer have direct support in the Tcl interpreter, but
247
it should be possible to simulate them with the auto-load features
248
described below.  The "noAbbrev" variable is no longer used by Tcl.
249
*** POTENTIAL INCOMPATIBILITY ***
250
 
251
68.5 8/15/91 Added support for "unknown" command, which can be used to
252
complete abbreviations, auto-load library files, auto-exec shell
253
commands, etc.
254
 
255
69. 8/15/91 Added -nocomplain switch to "glob" command.
256
 
257
70. 8/20/91 Added "info library" option and TCL_LIBRARY #define.  Also
258
added "info script" option.
259
 
260
71. 8/20/91 Changed "file" command to take "option" argument as first
261
argument (before file name), for consistency with other Tcl commands.
262
*** POTENTIAL INCOMPATIBILITY ***
263
 
264
72. 8/20/91 Changed format of information in $errorInfo variable:
265
comments such as
266
    ("while" body line 1)
267
are now on separate lines from commands being executed.
268
*** POTENTIAL INCOMPATIBILITY ***
269
 
270
73. 8/20/91 Changed Tcl_AppendResult so that it (eventually) frees
271
large buffers that it allocates.
272
 
273
74. 8/21/91 Added "linsert", "lreplace", "lsearch", and "lsort"
274
commands.
275
 
276
75. 8/28/91 Added "incr" and "exit" commands.
277
 
278
76. 8/30/91 Added "regexp" and "regsub" commands.
279
 
280
77. 9/4/91 Changed "dynamic" field in interpreters to "freeProc" (procedure
281
address).  This allows for alternative storage managers.
282
*** POTENTIAL INCOMPATIBILITY ***
283
 
284
78. 9/6/91 Added "index", "length", and "range" options to "string"
285
command.  Added "lindex", "llength", and "lrange" commands.
286
 
287
79. 9/8/91 Removed "index", "length", "print" and "range" commands.
288
"Print" is redundant with "puts", but less general, and the other
289
commands are replaced with the new commands described in change 78
290
above.
291
*** POTENTIAL INCOMPATIBILITY ***
292
 
293
80. 9/8/91 Changed history revision to occur even when history command
294
is nested;  needed in order to allow "history" to be invoked from
295
"unknown" procedure.
296
 
297
81. 9/13/91 Changed "panic" not to use vfprintf (it's uglier and less
298
general now, but makes it easier to run Tcl on systems that don't
299
have vfprintf).  Also changed "strerror" not to redeclare sys_errlist.
300
 
301
82. 9/19/91 Lots of changes to improve portability to different UNIX
302
systems, including addition of "config" script to adapt Tcl to the
303
configuration of the system it's being compiled on.
304
 
305
83. 9/22/91 Added "pwd" command.
306
 
307
84. 9/22/91 Renamed manual pages so that their filenames are no more
308
than 14 characters in length, moved to "doc" subdirectory.
309
 
310
85. 9/24/91 Redid manual entries so they contain the supplemental
311
macros that they need;  can just print with "troff -man" or "man"
312
now.
313
 
314
86. 9/26/91 Created initial version of script library, including
315
a version of "unknown" that does auto-loading, auto-execution, and
316
abbreviation expansion.  This library is used by tclTest
317
automatically.  See the "library" manual entry for details.
318
 
319
----------------- Released version 6.0, 9/26/91 ------------------
320
 
321
87. 9/30/91 Made "string tolower" and "string toupper" check case
322
before converting:  on some systems, "tolower" and "toupper" assume
323
that character already has particular case.
324
 
325
88. 9/30/91 Fixed bug in Tcl_SetResult:  wasn't always setting freeProc
326
correctly when called with NULL value.  This tended to cause memory
327
allocation errors later.
328
 
329
89. 10/3/91 Added "upvar" command.
330
 
331
90. 10/4/91 Changed "format" so that internally it converts %D to %ld,
332
%U to %lu, %O to %lo, and %F to %f.  This eliminates some compatibility
333
problems on some machines without affecting behavior.
334
 
335
91. 10/10/91 Fixed bug in "regsub" that caused core dumps with the -all
336
option when the last match wasn't at the end of the string.
337
 
338
92. 10/17/91 Fixed problems with backslash sequences:  \r support was
339
incomplete and \f and \v weren't supported at all.
340
 
341
93. 10/24/91 Added Tcl_InitHistory procedure.
342
 
343
94. 10/24/91 Changed "regexp" to store "-1 -1" in subMatchVars that
344
don't match, rather than returning an error.
345
 
346
95. 10/27/91 Modified "regexp" to return actual strings in matchVar
347
and subMatchVars instead of indices.  Added "-indices" switch to cause
348
indices to be returned.
349
*** POTENTIAL INCOMPATIBILITY ***
350
 
351
96. 10/27/91 Fixed bug in "scan" where it used hardwired constants for
352
sizes of floats and doubles instead of using "sizeof".
353
 
354
97. 10/31/91 Fixed bug in tclParse.c where parse-related error messages
355
weren't being storage-managed correctly, causing spurious free's.
356
 
357
98. 10/31/91 Form feed and vertical tab characters are now considered
358
to be space characters by the parser.
359
 
360
99. 10/31/91 Added TCL_LEAVE_ERR_MSG flag to procedures like Tcl_SetVar.
361
 
362
100. 11/7/91 Fixed bug in "case" where "in" argument couldn't be omitted
363
if all case branches were embedded in a single list.
364
 
365
101. 11/7/91 Switched to use "pid_t" and "uid_t" and other official
366
POSIC types and function prototypes.
367
 
368
----------------- Released version 6.1, 11/7/91 ------------------
369
 
370
102. 12/2/91 Modified Tcl_ScanElement and Tcl_ConvertElement in several
371
ways.  First, allowed caller to request that only backslashes be used
372
(no braces).  Second, made Tcl_ConvertElement more aggressive in using
373
backslashes for braces and quotes.
374
 
375
103. 12/5/91 Added "type", "lstat", and "readlink" options to "file"
376
command, plus added new "type" element to output of "stat" and "lstat"
377
options.
378
 
379
104. 12/10/91 Manual entries had first lines that caused "man" program
380
to try weird preprocessor.  Added blank comment lines to fix problem.
381
 
382
105. 12/16/91 Fixed a few bugs in auto_mkindex proc:  wasn't handling
383
errors properly, and hadn't been upgraded for new "regexp" syntax.
384
 
385
106. 1/2/92 Fixed bug in "file" command where it didn't properly handle
386
a file names containing tildes where the indicated user doesn't exist.
387
 
388
107. 1/2/92 Fixed lots of cases in tclUnixStr.c where two different
389
errno symbols (e.g. EWOULDBLOCK and EAGAIN) have the same number;  Tcl
390
will only use one of them.
391
 
392
108. 1/2/92 Lots of changes to configuration script to handle many more
393
systems more gracefully.  E.g. should now detect the bogus strtoul that
394
comes with AIX and substitute Tcl's own version instead.
395
 
396
----------------- Released version 6.2, 1/10/92 ------------------
397
 
398
109. 1/20/92 Config didn't have code to actually use "uid_t" variable
399
to set TCL_UIT_T #define.
400
 
401
110. 2/10/92 Tcl_Eval didn't properly reset "numLevels" variable when
402
too-deep recursion occurred.
403
 
404
111. 2/29/92 Added "on" and "off" to keywords accepted by Tcl_GetBoolean.
405
 
406
112. 3/19/92 Config wasn't installing default version of strtod.c for
407
systems that don't have one in libc.a.
408
 
409
113. 3/23/92 Fixed bug in tclExpr.c where numbers with leading "."s,
410
like 0.75, couldn't be properly substituted into expressions with
411
variable or command substitution.
412
 
413
114. 3/25/92 Fixed bug in tclUnixAZ.c where "gets" command wasn't
414
checking to make sure that it was able to write the variable OK.
415
 
416
115. 4/16/92 Fixed bug in tclUnixAZ.c where "read" command didn't
417
compute file size right for device files.
418
 
419
116. 4/23/92 Fixed but in tclCmdMZ.c where "trace vinfo" was overwriting
420
the trace command.
421
 
422
----------------- Released version 6.3, 5/1/92 ------------------
423
 
424
117. 5/1/92 Added Tcl_GlobalEval.
425
 
426
118. 6/1/92 Changed auto-load facility to source files at global level.
427
 
428
119. 6/8/92 Tcl_ParseVar wasn't always setting termPtr after errors, which
429
sometimes caused core dumps.
430
 
431
120. 6/21/92 Fixed bug in initialization of regexp pattern cache.  This
432
bug caused segmentation violations in regexp commands under some conditions.
433
 
434
121. 6/22/92 Changed implementation of "glob" command to eliminate
435
trailing slashes on directory names:  they confuse some systems.  There
436
shouldn't be any user-visible changes in functionality except for names
437
in error messages not having trailing slashes.
438
 
439
122. 7/2/92 Fixed bug that caused 'string match ** ""' to return 0.
440
 
441
123. 7/2/92 Fixed bug in Tcl_CreateCmdBuf where it wasn't initializing
442
the buffer to an empty string.
443
 
444
124. 7/6/92 Fixed bug in "case" command where it used NULL pattern string
445
after errors in the "default" clause.
446
 
447
125. 7/25/92 Speeded up auto_load procedure:  don't reread all the index
448
files unless the path has changed.
449
 
450
126. 8/3/92 Changed tclUnix.h to define MAXPATHLEN from PATH_MAX, not
451
_POSIX_PATH_MAX.
452
 
453
----------------- Released version 6.4, 8/7/92 ------------------
454
 
455
127. 8/10/92 Changed tclBasic.c so that comment lines can be continued by
456
putting a backslash before the newline.
457
 
458
128. 8/21/92 Modified "unknown" to allow the source-ing of a file for
459
an auto-load to trigger other nested auto-loads, as long as there isn't
460
any recursion on the same command name.
461
 
462
129. 8/25/92 Modified "format" command to allow " " and "+" flags, and
463
allow flags in any order.
464
 
465
130. 9/14/92 Modified Tcl_ParseVar so that it doesn't actually attempt
466
to look up the variable if "noEval" mode is in effect in the interpreter
467
(it just parses the name).  This avoids the errors that used to occur
468
in statements like "expr {[info exists foo] && $foo}".
469
 
470
131. 9/14/92 Fixed bug in "uplevel" command where it didn't output the
471
correct error message if a level was specified but no command.
472
 
473
132. 9/14/92 Renamed manual entries to have extensions like .3 and .n,
474
and added "install" target to Makefile.
475
 
476
133. 9/18/92 Modified "unknown" command to emulate !!, !, and
477
^^ csh history substitutions.
478
 
479
134. 9/21/92 Made the config script cleverer about figuring out which
480
switches to pass to "nm".
481
 
482
135. 9/23/92 Fixed tclVar.c to be sure to copy flags when growing variables.
483
Used to forget about traces in progress and make extra recursive calls
484
on trace procs.
485
 
486
136. 9/28/92 Fixed bug in auto_reset where it was unsetting variables
487
that might not exist.
488
 
489
137. 10/7/92 Changed "parray" library procedure to print any array
490
accessible to caller, local or global.
491
 
492
138. 10/15/92 Fixed bug where propagation of new environment variable
493
values among interpreters took N! time if there exist N interpreters.
494
 
495
139. 10/16/92 Changed auto_reset procedure so that it also deletes any
496
existing procedures that are in the auto_load index (the assumption is
497
that they should be re-loaded to get the latest versions).
498
 
499
140. 10/21/92 Fixed bug that caused lists to be incorrectly generated
500
for elements that contained backslash-newline sequences.
501
 
502
141. 12/9/92 Added support for TCL_LIBRARY environment variable:  use
503
it as library location if it's present.
504
 
505
142. 12/9/92 Added "info complete" command, Tcl_CommandComplete procedure.
506
 
507
143. 12/16/92 Changed the Makefile to check to make sure "config" has been
508
run (can't run config directly from the Makefile because it modifies the
509
Makefile;  thus make has to be run again after running config).
510
 
511
----------------- Released version 6.5, 12/17/92 ------------------
512
 
513
144. 12/21/92 Changed config to look in several places for libc file.
514
 
515
145. 12/23/92 Added "elseif" support to if.  Also, "then", "else", and
516
"elseif" may no longer be abbreviated.
517
*** POTENTIAL INCOMPATIBILITY ***
518
 
519
146. 12/28/92 Changed "puts" and "read" to support initial "-nonewline"
520
switch instead of additional "nonewline" argument.  The old form is
521
still supported, but it is discouraged and is no longer documented.
522
Also changed "puts" to make the file argument default to stdout: e.g.
523
"puts foo" will print foo on standard output.
524
 
525
147. 1/6/93 Fixed bug whereby backslash-newline wasn't working when
526
typed interactively, or in "info complete".
527
 
528
148. 1/22/93 Fixed bugs in "lreplace" and "linsert" where close
529
quotes were being lost from last element before replacement or
530
insertion.
531
 
532
149. 1/29/93 Fixed bug in Tcl_AssembleCmd where it wasn't requiring
533
a newline at the end of a line before considering a command to be
534
complete.  The bug caused some very long lines in script files to
535
be processed as multiple separate commands.
536
 
537
150. 1/29/93 Various changes in Makefile to add more configuration
538
options, simplify installation, fix bugs (e.g. don't use -f switch
539
for cp), etc.
540
 
541
151. 1/29/93 Changed "name1" and "name2" identifiers to "part1" and
542
"part2" to avoid name conflicts with stupid C++ implementations that
543
use "name1" and "name2" in a reserved way.
544
 
545
152. 2/1/93 Added "putenv" procedure to replace the standard system
546
version so that it will work correctly with Tcl's environment handling.
547
 
548
----------------- Released version 6.6, 2/5/93 ------------------
549
 
550
153. 2/10/93 Fixed bugs in config script:  missing "endif" in libc loop,
551
and tried to use strncasecmp.c instead of strcasecmp.c.
552
 
553
154. 2/10/93 Makefile improvements:  added RANLIB variable for easier
554
Sys-V configuration, added SHELL variable for SGI systems.
555
 
556
----------------- Released version 6.7, 2/11/93 ------------------
557
 
558
153. 2/6/93 Changes in backslash processing:
559
    - \Cx, \Mx, \CMx, \e sequences no longer special
560
    - \ also eats up any space after the newline, replacing
561
      the whole sequence with a single space character
562
    - Hex sequences like \x24 are now supported, along with ANSI C's \a.
563
    - "format" no longer does backslash processing on its format string
564
    - there is no longer any special meaning to a 0 return value from
565
      Tcl_Backslash
566
    - unknown backslash sequences, like (e.g. \*), are replaced with
567
      the following character (e.g. *), instead of just treating the
568
      backslash as an ordinary character.
569
*** POTENTIAL INCOMPATIBILITY ***
570
 
571
154. 2/6/93 Updated all copyright notices.  The meaning hasn't changed
572
at all but the wording does a better job of protecting U.C. from
573
liability (according to U.C. lawyers, anyway).
574
 
575
155. 2/6/93 Changed "regsub" so that it overwrites the result variable
576
in all cases, even if there is no match.
577
*** POTENTIAL INCOMPATIBILITY ***
578
 
579
156. 2/8/93 Added support for XPG3 %n$ conversion specifiers to "format"
580
command.
581
 
582
157. 2/17/93 Fixed bug in Tcl_Eval where errors due to infinite
583
recursion could result in core dumps.
584
 
585
158. 2/17/93 Improved the auto-load mechanism to deal gracefully (i.e.
586
return an error) with a situation where a library file that supposedly
587
defines a procedure doesn't actually define it.
588
 
589
159. 2/17/93 Renamed Tcl_UnixError procedure to Tcl_PosixError, and
590
changed errorCode variable usage to use POSIX as keyword instead of
591
UNIX.
592
*** POTENTIAL INCOMPATIBILITY ***
593
 
594
160. 2/19/93 Changes to exec and process control:
595
    - Added support for >>, >&, >>&, |&, <@, >@, and >&@ forms of redirection.
596
    - When exec puts processes into background, it returns a list of
597
      their pids as result.
598
    - Added support for file, etc. (i.e. no space between
599
      ">" and file name.
600
    - Added -keepnewline option.
601
    - Deleted Tcl_Fork and Tcl_WaitPids procedures (just use fork and
602
      waitpid instead).
603
    - Added waitpid compatibility procedure for systems that don't have
604
      it.
605
    - Added Tcl_ReapDetachedProcs procedure.
606
    - Changed "exec" to return an error if there is stderr output, even
607
      if the command returns a 0 exit status (it's always been documented
608
      this way, but the implementation wasn't correct).
609
    - If a process returns a non-zero exit status but doesn't generate
610
      any diagnostic output, then Tcl generates an error message for it.
611
*** POTENTIAL INCOMPATIBILITY ***
612
 
613
161. 2/25/93 Fixed two memory-management problems having to do with
614
managing the old result during variable trace callbacks.
615
 
616
162. 3/1/93 Added dynamic string library:  Tcl_DStringInit, Tcl_DStringAppend,
617
Tcl_DStringFree, Tcl_DStringResult, etc.
618
 
619
163. 3/1/93 Modified glob command to only return the names of files that
620
exist, and to only return names ending in "/" if the file is a directory.
621
*** POTENTIAL INCOMPATIBILITY ***
622
 
623
164. 3/19/93 Modified not to use system calls like "read" directly,
624
but instead to use special Tcl procedures that retry automatically
625
if interrupted by signals.
626
 
627
165. 4/3/93 Eliminated "noSep" argument to Tcl_AppendElement, plus
628
TCL_NO_SPACE flag for Tcl_SetVar and Tcl_SetVar2.
629
*** POTENTIAL INCOMPATIBILITY ***
630
 
631
166. 4/3/93 Eliminated "flags" and "termPtr" arguments to Tcl_Eval.
632
*** POTENTIAL INCOMPATIBILITY ***
633
 
634
167. 4/3/93 Changes to expressions:
635
    - The "expr" command now accepts multiple arguments, which are
636
      concatenated together with space separators.
637
    - Integers aren't automatically promoted to floating-point if they
638
      overflow the word size:  errors are generated instead.
639
    - Tcl can now handle "NaN" and other special values if the underlying
640
      library procedures handle them.
641
    - When printing floating-point numbers, Tcl ensures that there is a "."
642
      or "e" in the number, so it can't be treated as an integer accidentally.
643
      The procedure Tcl_PrintDouble is available to provide this function
644
      in other contexts.  Also, the variable "tcl_precision" can be used
645
      to set the precision for printing (must be a decimal number giving
646
      digits of precision).
647
    - Expressions now support transcendental and other functions, e.g. sin,
648
      acos, hypot, ceil, and round.  Can add new math functions with
649
      Tcl_CreateMathFunc().
650
    - Boolean expressions can now have any of the string values accepted
651
      by Tcl_GetBoolean, such as "yes" or "no".
652
*** POTENTIAL INCOMPATIBILITY ***
653
 
654
168. 4/5/93 Changed Tcl_UnsetVar and Tcl_UnsetVar2 to return TCL_OK
655
or TCL_ERROR instead of 0 or -1.
656
*** POTENTIAL INCOMPATIBILITY ***
657
 
658
169. 4/5/93 Eliminated Tcl_CmdBuf structure and associated procedures;
659
can use Tcl_DStrings instead.
660
*** POTENTIAL INCOMPATIBILITY ***
661
 
662
170. 4/8/93 Changed interface to Tcl_TildeSubst to use a dynamic
663
string for buffer space.  This makes the procedure re-entrant and
664
thread-safe, whereas it wasn't before.
665
*** POTENTIAL INCOMPATIBILITY ***
666
 
667
171. 4/14/93 Eliminated tclHash.h, and moved everything from it to
668
tcl.h
669
*** POTENTIAL INCOMPATIBILITY ***
670
 
671
172. 4/15/93 Eliminated Tcl_InitHistory, made "history" command always
672
be part of interpreter.
673
*** POTENTIAL INCOMPATIBILITY ***
674
 
675
173. 4/16/93 Modified "file" command so that "readable" option always
676
exists, even on machines that don't support symbolic links (always returns
677
same error as if the file wasn't a symbolic link).
678
 
679
174. 4/26/93 Fixed bugs in "regsub" where ^ patterns didn't get handled
680
right (pretended not to match when it really did, and looped infinitely
681
if -all was specified).
682
 
683
175. 4/29/93 Various improvements in the handling of variables:
684
    - Can create variables and array elements during a read trace.
685
    - Can delete variables during traces (note: unset traces will be
686
      invoked when this happens).
687
    - Can upvar to array elements.
688
    - Can retarget an upvar to another variable by re-issuing the
689
      upvar command with a different "other" variable.
690
 
691
176. 5/3/93 Added Tcl_GetCommandInfo, which returns info about a Tcl
692
command such as whether it exists and its ClientData.  Also added
693
Tcl_SetCommandInfo, which allows any of this information to be modified
694
and also allows a command's delete procedure to have a different
695
ClientData value than its command procedure.
696
 
697
177. 5/5/93 Added Tcl_RegExpMatch procedure.
698
 
699
178. 5/6/93 Fixed bug in "scan" where it didn't properly handle
700
%% conversion specifiers.  Also changed "scan" to use Tcl_PrintDouble
701
for printing real values.
702
 
703
179. 5/7/93 Added "-exact", "-glob", and "-regexp" options to "lsearch"
704
command to allow different kinds of pattern matching.
705
 
706
180. 5/7/93 Added many new switches to "lsort" to control the sorting
707
process: "-ascii", "-integer", "-real", "-command", "-increasing",
708
and "-decreasing".
709
 
710
181. 5/10/93 Changes to file I/O:
711
    - Modified "open" command to support a list of POSIX access flags
712
      like {WRONLY CREAT TRUNC} in addition to current fopen-style
713
      access modes.  Also added "permissions" argument to set permissions
714
      of newly-created files.
715
    - Fixed Scott Bolte's bug (can close stdin etc. in application and
716
      then re-open them with Tcl commands).
717
    - Exported access to Tcl's file table with new procedures Tcl_EnterFile
718
      and Tcl_GetOpenFile.
719
 
720
182. 5/15/93 Added new "pid" command, which can be used to retrieve
721
either the current process id or a list of the process ids in a
722
pipeline opened with "open |..."
723
 
724
183. 6/3/93 Changed to use GNU autoconfig for configuration instead of
725
the home-brew "config" script.  Also made many other configuration-related
726
changes, such as using  instead of explicitly declaring system
727
calls in tclUnix.h.
728
 
729
184. 6/4/93 Fixed bug where core-dumps could occur if a procedure
730
redefined itself (the memory for the procedure's body could get
731
reallocated in the middle of evaluating the body);  implemented
732
simple reference count mechanism.
733
 
734
185. 6/5/93 Changed tclIndex file format in two ways:  (a) it's now
735
eval-ed instead of parsed, which makes it 3-4x faster; (b) the entries
736
in auto_index are now commands to evaluate, which allows commands to
737
be loaded in different ways such as dynamic-loading of C code.  The
738
old tclIndex file format is still supported.
739
 
740
186. 6/7/93 Eliminated tclTest program, added new "tclsh" program
741
that is more like wish (allows script files to be invoked automatically
742
using "#!/usr/local/bin/tclsh", makes arguments available to script,
743
etc.).  Added support for Tcl_AppInit plus default version;  this
744
allows new Tcl applications to be created without modifying the
745
main program for tclsh.
746
 
747
187. 6/7/93 Fixed bug in TclWordEnd that kept backslash-newline from
748
working correctly in some cases during interactive input.
749
 
750
188. 6/9/93 Added Tcl_LinkVar and related procedures, which automatically
751
keep a Tcl variable in sync with a C variable.
752
 
753
189. 6/16/93 Increased maximum nesting depth from 100 to 1000.
754
 
755
190. 6/16/93 Modified "trace var" command so that error messages from
756
within traces are returned properly as the result of the variable
757
access, instead of the generic "access disallowed by trace command"
758
message.
759
 
760
191. 6/16/93 Added Tcl_CallWhenDeleted to provide callbacks when an
761
interpreter is deleted (same functionality as Tcl_WatchInterp, which
762
used to exist in versions before 6.0).
763
 
764
193. 6/16/93 Added "-code" argument to "return" command;  it's there
765
primarily for completeness, so that procedures implementing control
766
constructs can reflect exceptional conditions back to their callers.
767
 
768
194. 6/16/93 Split up Tcl.n to make separate manual entries for each
769
Tcl command.  Tcl.n now contains a summary of the language syntax.
770
 
771
195. 6/17/93 Added new "switch" command to replace "case": allows
772
alternate forms of pattern matching (exact, glob, regexp), replaces
773
pattern lists with single patterns (but you can use "-" bodies to
774
share one body among several patterns), eliminates "in" noise word.
775
"Case" command is now obsolete.
776
 
777
196. 6/17/93 Changed the "exec", "glob", "regexp", and "regsub" commands
778
to include a "--" switch.  All initial arguments starting with "-" are now
779
treated as switches unless a "--" switch is present to end the list.
780
*** POTENTIAL INCOMPATIBILITY ***
781
 
782
197. 6/17/93 Changed auto-exec so that the subprocess gets stdin, stdout,
783
and stderr from the parent.  This allows truly interactive sub-processes
784
(e.g. vi) to be auto-exec'ed from a tcl shell command line.
785
 
786
198. 6/18/93 Added patchlevel.h, for use in coordinating future patch
787
releases, and also added "info patchlevel" command to make the patch
788
level available to Tcl scripts.
789
 
790
199. 6/19/93 Modified "glob" command so that a leading "//" in a name
791
gets left as is (this is needed for systems like Apollos where "//" is
792
the super-root;  Tcl used to collapse the two slashes into a single
793
slash).
794
 
795
200. 7/7/93 Added Tcl_SetRecursionLimit procedure so that the maximum
796
allowable nesting depth can be controlled for an interpreter from C.
797
 
798
----------------- Released version 7.0 Beta 1, 7/9/93 ------------------
799
 
800
201. 7/12/93 Modified Tcl_GetInt and tclExpr.c so that full-precision
801
unsigned integers can be specified without overflow errors.
802
 
803
202. 7/12/93 Configuration changes:  eliminate leading blank line in
804
configure script;  provide separate targets in Makefile for installing
805
binary and non-binary information; check for size_t and a few other
806
potentially missing typedefs; don't put tclAppInit.o into libtcl.a;
807
better checks for matherr support.
808
 
809
203. 7/14/93 Changed tclExpr.c to check the termination pointer before
810
errno after strtod calls, to avoid problems with some versions of
811
strtod that set errno in unexpected ways.
812
 
813
204. 7/16/93 Changed "scan" command to be more ANSI-conformant:
814
eliminated %F, %D, etc., added code to ignore "l", "h", and "L"
815
modifiers but always convert %e, %f, and %g with implicit "l";
816
also added support for %u and %i.  Also changed "format" command
817
to eliminate %D, %U, %O, and add %i.
818
*** POTENTIAL INCOMPATIBILITY ***
819
 
820
205. 7/17/93 Changed "uplevel" and "upvar" so that they can be used
821
from global level to global level:  this used to generate an error.
822
 
823
206. 7/19/93 Renamed "setenv", "putenv", and "unsetenv" procedures
824
to avoid conflicts with system procedures with the same names.  If
825
you want Tcl's procedures to override the system procedures, do it
826
in the Makefile (instructions are in the Makefile).
827
*** POTENTIAL INCOMPATIBILITY ***
828
 
829
----------------- Released version 7.0 Beta 2, 7/21/93 ------------------
830
 
831
207. 7/21/93 Fixed bug in tclVar.c where freed memory was accidentally
832
used if a procedure returned an element of a local array.
833
 
834
208. 7/22/93 Fixed bug in "unknown" where it didn't properly handle
835
errors occurring in the "auto_load" procedure, leaving its state
836
inconsistent.
837
 
838
209. 7/23/93 Changed exec's ">2" redirection operator to "2>" for
839
consistency with sh.  This is incompatible with earlier beta releases
840
of 7.0 but not with pre-7.0 releases, which didn't support either
841
operator.
842
 
843
210. 7/28/93 Changed backslash-newline handling so that the resulting
844
space character *is* treated as a word separator unless the backslash
845
sequence is in quotes or braces.  This is incompatible with 7.0b1
846
and 7.0b2 but is more compatible with pre-7.0 versions that the b1
847
and b2 releases were.
848
 
849
211. 7/28/93 Eliminated Tcl_LinkedVarWritable, added TCL_LINK_READ_ONLY to
850
Tcl_LinkVar to accomplish same purpose.  This change is incompatible
851
with earlier beta releases, but not with releases before Tcl 7.0.
852
 
853
212. 7/29/93 Renamed regexp C functions so they won't clash with POSIX
854
regexp functions that use the same name.
855
 
856
213. 8/3/93 Added "-errorinfo" and "-errorcode" options to "return"
857
command: these allow for much better handling of the errorInfo
858
and errorCode variables in some cases.
859
 
860
214. 8/12/93 Changed "expr" so that % always returns a remainder with
861
the same sign as the divisor and absolute value smaller than the
862
divisor.
863
 
864
215. 8/14/93 Turned off auto-exec in "unknown" unless the command
865
was typed interactively.  This means you must use "exec" when
866
invoking subprocesses, unless it's a command that's typed interactively.
867
*** POTENTIAL INCOMPATIBILITY ***
868
 
869
216. 8/14/93 Added support for tcl_prompt1 and tcl_prompt2 variables
870
to tclMain.c:  makes prompts user-settable.
871
 
872
217. 8/14/93 Added asynchronous handlers (Tcl_AsyncCreate etc.) so
873
that signals can be taken cleanly by Tcl applications.
874
 
875
218. 8/16/93 Moved information about open files from the interpreter
876
structure to global variables so that a file can be opened in one
877
interpreter and read or written in another.
878
 
879
219. 8/16/93 Removed ENV_FLAGS from Makefile, so that there's no
880
official support for overriding setenv, unsetenv, and putenv.
881
 
882
220. 8/20/93 Various configuration improvements:  coerce chars
883
to unsigned chars before using macros like isspace;  source ~/.tclshrc
884
file during initialization if it exists and program is running
885
interactively;  allow there to be directories in auto_path that don't
886
exist or don't have tclIndex files (ignore them); added Tcl_Init
887
procedure and changed Tcl_AppInit to call it.
888
 
889
221. 8/21/93 Fixed bug in expr where "+", "-", and " " were all
890
getting treated as integers with value 0.
891
 
892
222. 8/26/93 Added "tcl_interactive" variable to tclsh.
893
 
894
223. 8/27/93 Added procedure Tcl_FilePermissions to return whether a
895
given file can be read or written or both.  Modified Tcl_EnterFile
896
to take a permissions mask rather than separate read and write arguments.
897
 
898
224. 8/28/93 Fixed performance bug in "glob" command (unnecessary call
899
to "access" for each file caused a 5-10x slow-down for big directories).
900
 
901
----------------- Released version 7.0 Beta 3, 8/28/93 ------------------
902
 
903
225. 9/9/93 Renamed regexp.h to tclRegexp.h to avoid conflicts with system
904
include file by same name.
905
 
906
226. 9/9/93 Added Tcl_DontCallWhenDeleted.
907
 
908
227. 9/16/93 Changed not to call exit C procedure directly;  instead
909
always invoke "exit" Tcl command so that application can redefine the
910
command to do additional cleanup.
911
 
912
228. 9/17/93 Changed auto-exec to handle names that contain slashes
913
(i.e. don't use PATH for them).
914
 
915
229. 9/23/93 Fixed bug in "read" and "gets" commands where they didn't
916
clear EOF conditions.
917
 
918
----------------- Released version 7.0, 9/29/93 ------------------
919
 
920
230. 10/7/93 "Scan" command wasn't properly aligning things in memory,
921
so segmentation faults could arise under some circumstances.
922
 
923
231. 10/7/93 Fixed bug in Tcl_ConvertElement where it forgot to
924
backslash leading curly brace when creating lists.
925
 
926
232. 10/7/93 Eliminated dependency of tclMain.c on tclInt.h and
927
tclUnix.h, so that people can copy the file out of the Tcl source
928
directory to make modified private versions.
929
 
930
233. 10/8/93 Fixed bug in auto-loader that reversed the priority order
931
of entries in auto_path for new-style index files.  Now things are
932
back to the way they were before 3.0:  first in auto_path is always
933
highest priority.
934
 
935
234. 10/13/93 Fixed bug where Tcl_CommandComplete didn't recognize
936
comments and treat them as such.  Thus if you typed the line
937
    # {
938
interactively, Tcl would think that the command wasn't complete and
939
wait for more input before evaluating the script.
940
 
941
235. 10/14/93 Fixed bug where "regsub" didn't set the output variable
942
if the input string was empty.
943
 
944
236. 10/23/93 Fixed bug where Tcl_CreatePipeline didn't close off enough
945
file descriptors in child processes, causing children not to exit
946
properly in some cases.
947
 
948
237. 10/28/93 Changed "list" and "concat" commands not to generate
949
errors if given zero arguments, but instead to just return an empty
950
string.
951
 
952
----------------- Released version 7.1, 11/4/93 ------------------
953
 
954
Note: there is no 7.2 release.  It was flawed and was thus withdrawn
955
shortly after it was released.
956
 
957
238. 11/10/93 TclMain.c didn't compile on some systems because of
958
R_OK in call to "access".  Changed to eliminate call to "access".
959
 
960
----------------- Released version 7.3, 11/26/93 ------------------
961
 
962
239. 11/6/93 Modified "lindex", "linsert", "lrange", and "lreplace"
963
so that "end" can be specified as an index.
964
 
965
240. 11/6/93 Modified "append" and "lappend" to allow only two
966
words total (i.e., nothing to append) without generating an error.
967
 
968
241. 12/2/93 Changed to use EAGAIN as the errno for non-blocking
969
I/O instead of EWOULDBLOCK:  this should fix problem where non-blocking
970
I/O didn't work correctly on System-V systems.
971
 
972
242. 12/22/93 Fixed bug in expressions where cancelled evaluation
973
wasn't always working correctly (e.g. "set one 1; eval {1 || 1/$one}"
974
failed with a divide by zero error).
975
 
976
243. 1/6/94 Changed TCL_VOLATILE definition from -1 to the address of
977
a dummy procedure Tcl_Volatile, since -1 causes portability problems on
978
some machines (e.g., Crays).
979
 
980
244. 2/4/94 Added support for unary plus.
981
 
982
245. 2/17/94 Changed Tcl_RecordAndEval and "history" command to
983
call Tcl_GlobalEval instead of Tcl_Eval.  Otherwise, invocation of
984
these facilities in nested procedures can cause unwanted results.
985
 
986
246. 2/17/94 Fixed bug in tclExpr.c where an expression such as
987
"expr {"12398712938788234-1298379" != ""}" triggers an integer
988
overflow error for the number in quotes, even though it isn't really
989
a proper integer anyway.
990
 
991
247. 2/19/94 Added new procedure Tcl_DStringGetResult to move result
992
from interpreter to a dynamic string.
993
 
994
248. 2/19/94 Fixed bug in Tcl_DStringResult that caused it to overwrite
995
the contents of a static result in some situations.  This can cause
996
bizarre errors such as variables suddenly having empty values.
997
 
998
249. 2/21/94 Fixed bug in Tcl_AppendElement, Tcl_DStringAppendElement,
999
and the "lappend" command that caused improper omission of a separator
1000
space in some cases.  For example, the script
1001
    set x "abc{"; lappend x "def"
1002
used to return the result "abc{def" instead of "abc{ def".
1003
 
1004
250. 3/3/94 Tcl_ConvertElement was outputting empty elements as \0 if
1005
TCL_DONT_USE_BRACES was set.  This depends on old pre-7.0 meaning of
1006
\0, which is no longer in effect, so it didn't really work.  Changed
1007
to output empty elements as {} always.
1008
 
1009
251. 3/3/94 Renamed Tcl_DStringTrunc to Tcl_DStringSetLength and extended
1010
it so that it can be used to lengthen a string as well as shorten it.
1011
Tcl_DStringTrunc is defined as a macro for backward compatibility, but
1012
it is deprecated.
1013
 
1014
252. 3/3/94 Added Tcl_AllowExceptions procedure.
1015
 
1016
253. 3/13/94 Fixed bug in Tcl_FormatCmd that could cause "format"
1017
to mis-behave on 64-bit Big-Endian machines.
1018
 
1019
254. 3/13/94 Changed to use vfork instead of fork on systems where
1020
vfork exists.
1021
 
1022
255. 3/23/94 Fixed bug in expressions where ?: didn't associate
1023
right-to-left as they should.
1024
 
1025
256. 4/3/94 Fixed "exec" to flush any files used in >@ or >&@
1026
redirection in exec, so that data buffered for them is written
1027
before any new data added by the subprocess.
1028
 
1029
257. 4/3/94 Added "subst" command.
1030
 
1031
258. 5/20/94 The tclsh main program is now called Tcl_Main;  tclAppInit.c
1032
has a "main" procedure that calls Tcl_Main.  This makes it easier to use
1033
Tcl with C++ programs, which need their own main programs, and it also
1034
allows an application to prefilter the argument list before calling
1035
Tcl_Main.
1036
*** POTENTIAL INCOMPATIBILITY ***
1037
 
1038
259. 6/6/94 Fixed bug in procedure returns where the errorInfo variable
1039
could get truncated if an unset trace was invoked as part of returning
1040
from the procedure.
1041
 
1042
260. 6/13/94 Added "wordstart" and "wordend" options to "string" command.
1043
 
1044
261. 6/27/94 Fixed bug in expressions where they didn't properly cancel
1045
the evaluation of math functions in &&, ||, and ?:.
1046
 
1047
262. 7/11/94 Incorrect boolean values, like "ogle", weren't being
1048
handled properly.
1049
 
1050
263. 7/15/94 Added Tcl_RegExpCompile, Tcl_RegExpExec, and Tcl_RegExpRange,
1051
which provide lower-level access to regular expression pattern matching.
1052
 
1053
264. 7/22/94 Fixed bug in "glob" command where "glob -nocomplain ~bad_user"
1054
would complain about a missing user.  Now it doesn't complain anymore.
1055
 
1056
265. 8/4/94 Fixed bug with linked variables where they didn't behave
1057
correctly when accessed via upvars.
1058
 
1059
266. 8/17/94 Fixed bug in Tcl_EvalFile where it didn't clear interp->result.
1060
 
1061
267. 8/31/94 Modified "open" command so that errors in exec-ing
1062
subprocesses are returned by the open immediately, rather than
1063
being delayed until the "close" is executed.
1064
 
1065
268. 9/9/94 Modified "expr" command to generate errors for integer
1066
overflow (includes addition, subtraction, negation, multiplication,
1067
division).
1068
 
1069
269. 9/23/94 Modified "regsub" to return a count of the number of
1070
matches and replacements, rather than 0/1.
1071
 
1072
279. 10/4/94 Added new features to "array" command:
1073
    - added "get" and "set" commands for easy conversion between arrays
1074
      and lists.
1075
    - added "exists" command to see if a variable is an array, changed
1076
      "names" and "size" commands to treat a non-existent array (or scalar
1077
      variable) just like an empty one.
1078
    - added pattern option to "names" command.
1079
 
1080
280. 10/6/94 Modified Tcl_SetVar2 so that read traces on variables get
1081
called during append operations.
1082
 
1083
281. 10/20/94 Fixed bug in "read" command where reading from stdin
1084
required two control-D's to stop the reading.
1085
 
1086
282. 11/3/94 Changed "expr" command to use longs for division just like
1087
all other expr operators;  it previously used ints for division.
1088
 
1089
283. 11/4/94 Fixed bugs in "unknown" procedure:  it wasn't properly
1090
handling exception returns from commands that were executed after
1091
being auto-loaded.
1092
 
1093
----------------- Released version 7.4b1, 12/23/94 ------------------
1094
 
1095
284. 12/26/94 Fixed "install" target in Makefile (couldn't always
1096
find install program).
1097
 
1098
285. 12/26/94 Added strcncasecmp procedure to compat directory.
1099
 
1100
286. 1/3/95 Fixed all procedure calls to explicitly cast arguments:
1101
implicit conversions from prototypes (especially integer->double)
1102
don't work when compiling under non-ANSI compilers.  Tcl is now clean
1103
under gcc -Wconversion.
1104
 
1105
287. 1/4/95 Fixed problem in Tcl_ArrayCmd where same name was used for
1106
both a label and a variable;  caused problems on several older compilers,
1107
making array command misbehave and causing many errors in Tcl test suite.
1108
 
1109
----------------- Released version 7.4b2, 1/12/95 ------------------
1110
 
1111
288. 2/9/95 Modified Tcl_CreateCommand to return a token, and added
1112
Tcl_GetCommandName procedure.  Together, these procedures make it possible
1113
to track renames of a command.
1114
 
1115
289. 2/13/95 Fixed bug in expr where "089" was interpreted as a
1116
floating-point number rather than a bogus octal number.
1117
*** POTENTIAL INCOMPATIBILITY ***
1118
 
1119
290. 2/14/95 Added code to Tcl_GetInt and Tcl_GetDouble to check for
1120
overflows when reading in numbers.
1121
 
1122
291. 2/18/95 Changed "array set" to stop after first error, rather than
1123
continuing after error.
1124
 
1125
292. 2/20/95 Upgraded to use autoconf version 2.2.
1126
 
1127
293. 2/20/95 Fixed core dump that could occur in "scan" command if a
1128
close bracket was omitted.
1129
 
1130
294. 2/27/95 Changed Makefile to always use install-sh for installations:
1131
there's just too much variation among "install" system programs, which
1132
makes installation flakey.
1133
 
1134
----------------- Released version 7.4b3, 3/24/95 ------------------
1135
 
1136
3/25/95 (bug fix) Changed "install" to "./install" in Makefile so that
1137
"make install" will work even when "." isn't in the search path.
1138
 
1139
3/29/95 (bug fix) Fixed bug where the auto-loading mechanism wasn't
1140
protecting the values of the errorCode and errorInfo variables.
1141
 
1142
3/29/95 (new feature) Added optional pattern argument to "parray" procedure.
1143
 
1144
3/29/95 (bug fix) Made the full functionality of
1145
    "return -code ... -errorcode ..."
1146
work not just inside procedures, but also in sourced files and at
1147
top level.
1148
 
1149
4/6/95 (new feature) Added "pattern" option to "array names" command.
1150
 
1151
4/18/95 (bug fix) Fixed bug in parser where it didn't allow backslash-newline
1152
immediately after an argument in braces or quotes.
1153
 
1154
4/19/95 (new feature) Added tcl_library variable, which application can
1155
set to override default library directory.
1156
 
1157
4/30/95 (bug fix) During trace callbacks for array elements, the variable
1158
name used in the original reference would be temporarily modified to
1159
separate the array name and element name;  if the trace callback used
1160
the same name string, it would get the wrong name (the array name without
1161
element).  Fixed to restore the variable name before making trace
1162
callbacks.
1163
 
1164
4/30/95 (new feature) Added -nobackslashes, -nocommands, and -novariables
1165
switches to "subst" command.
1166
 
1167
5/4/95 (new feature) Added TCL_EVAL_GLOBAL flag to Tcl_RecordAndEval.
1168
 
1169
5/5/95 (bug fix)  Format command would overrun memory when printing
1170
integers with very large precision, as in "format %.1000d 0".
1171
 
1172
5/5/95 (portability improvement) Changed to use BSDgettimeofday on
1173
IRIX machines, to avoid compilation problems with the gettimeofday
1174
declaration.
1175
 
1176
5/6/95 (bug fix) Changed manual entries to use the standard .TH
1177
macro instead of a custom .HS macro;  the .HS macro confuses index
1178
generators like makewhatis.
1179
 
1180
5/9/95 (bug fix) Modified configure script to check for Solaris bug
1181
that makes vfork unreliable (core dumps result if vforked child
1182
changes a signal handler);  will use fork instead of vfork if the
1183
bug is present.
1184
 
1185
6/5/95 (bug fix) Modified "lsort" command to disallow recursive calls
1186
to lsort from a comparison function.  This is needed because qsort
1187
is not reentrant.
1188
 
1189
6/5/95 (bug fix) Undid change 243 above:  changed TCL_VOLATILE and
1190
TCL_DYNAMIC back to integer constants rather than procedure addresses.
1191
This was needed because procedure addresses can have multiple values
1192
under some dynamic loading systems (e.g. SunOS 4.1 and Windows).
1193
 
1194
6/8/95 (feature change) Modified interface to Tcl_Main to pass in the
1195
address of the application-specific initialization procedure.
1196
Tcl_AppInit is no longer hardwired into Tcl_Main.  This is needed
1197
in order to make Tcl a shared library.
1198
 
1199
6/8/95 (feature change) Modified Makefile so that the installed versions
1200
of tclsh and libtcl.a have version number in them (e.g. tclsh7.4 and
1201
libtcl7.4.a) and the library directory name also has an embedded version
1202
number (e.g., /usr/local/lib/tcl7.4).  This should make it easier for
1203
Tcl 7.4 to coexist with earlier versions.
1204
 
1205
----------------- Released version 7.4b4, 6/16/95 ------------------
1206
 
1207
6/19/95 (bug fix) Fixed bugs in tclCkalloc.c that caused core dumps
1208
if TCL_MEM_DEBUG was enabled on word-addressed machines such as Crays.
1209
 
1210
6/21/95 (feature removal) Removed overflow checks for integer arithmetic:
1211
they just cause too much trouble (e.g. for random  number generators).
1212
 
1213
6/28/95 (new features) Added tcl_patchLevel and tcl_version variables,
1214
for consistency with Tk.
1215
 
1216
6/29/95 (bug fix) Fixed problem in Tcl_Eval where it didn't record
1217
the right termination character if a script ended with a comment.  This
1218
caused erroneous output for the following command, among others:
1219
puts "[
1220
expr 1+1
1221
# duh!
1222
]"
1223
 
1224
6/29/95 (message change) Changed the error message for ECHILD slightly
1225
to provide a hint about why the problem is occurring.
1226
 
1227
----------------- Released version 7.4, 7/1/95 ------------------
1228
 
1229
7/18/95 (bug fix) Changed "lreplace" so that nothing is deleted if
1230
the last index is less than the first index or if the last index
1231
is < 0.
1232
 
1233
7/18/95 (bug fix) Fixed bugs with backslashes in comments:
1234
Tcl_CommandComplete (and "info complete") didn't properly handle
1235
strings ending in backslash-newline, and neither Tcl_CommandComplete
1236
nor the Tcl parser handled other backslash sequences right, such
1237
as two backslashes before a newline.
1238
 
1239
7/19/95 (bug fix) Modified Tcl_DeleteCommand to delete the hash table
1240
entry for the command before invoking its callback.  This is needed in
1241
order to deal with reentrancy.
1242
 
1243
7/22/95 (bug fix) "exec" wasn't reaping processes correctly after
1244
certain errors (e.g. if the name of the executable was bogus, as
1245
in "exec foobar").
1246
 
1247
7/27/95 (bug fix) Makefile.in wasn't using the LIBS variable provided
1248
by the "configure" script.  This caused problems on some SCO systems.
1249
 
1250
7/27/95 (bug fix) The version of strtod in fixstrtod.c didn't properly
1251
handle the case where endPtr == NULL.
1252
 
1253
----------------- Released patch 7.4p1, 7/29/95 -----------------------
1254
 
1255
8/4/95 (bug fix) C-level trace callbacks for variables were sometimes
1256
receiving the PART1_NOT_PARSED flag, which could cause errors in
1257
subsequent Tcl library calls using the flags. (JO)
1258
 
1259
8/4/95 (bug fix) Calls to toupper and tolower weren't using the
1260
UCHAR macros, which caused trouble in non-U.S. locales. (JO)
1261
 
1262
8/10/95 (new feature) Added the "load" command for dynamic loading of
1263
binary packages, and the Tcl_PackageInitProc prototype for package
1264
initialization procedures. (JO)
1265
 
1266
8/23/95 (new features) Added "info sharedlibextension" and
1267
"info nameofexecutable" commands, plus Tcl_FindExtension procedure. (JO)
1268
 
1269
8/25/95 (bug fix) If the target of an "upvar" was non-existent but
1270
had traces set, the traces were silently lost.  Change to generate
1271
an error instead. (JO)
1272
 
1273
8/25/95 (bug fix) Undid change from 7/19, so that commands can stay
1274
around while their deletion callbacks execute.  Added lots of code to
1275
handle all of the reentrancy problems that this opens up. (JO)
1276
 
1277
8/25/95 (bug fix) Fixed core dump that could occur in TclDeleteVars
1278
if there was an upvar from one entry in the table to the next entry
1279
in the same table. (JO)
1280
 
1281
8/28/95 (bug fix) Exec wasn't handling bad user names properly, as
1282
in "exec ~bogus_user/foo". (JO)
1283
 
1284
8/29/95 (bug fixes) Changed backslash-newline handling to correct two
1285
problems:
1286
    - Only spaces and tabs following the backslash-newline are now
1287
      absorbed as part of the backslash-newline.  Newlinew are no
1288
      longer absorbed (add another backslash if you want to absorb
1289
      another newline).
1290
    - TclWordEnd returns the character just before the backslash in
1291
      the sequence as the end of the sequence;  it used to not consider
1292
      the backslash-newline as a word separator. (JO)
1293
 
1294
8/31/95 (new feature) Changed man page installation (with "mkLinks"
1295
script) to create additional links for manual pages corresponding to
1296
each of the procedure and command names described in the pages. (JO)
1297
 
1298
9/10/95 Reorganized Tcl sources for Windows and Mac ports.  All sources
1299
are now in subdirectories:  "generic" contains sources that work on all
1300
platforms, "windows", "mac", and "unix" directories contain platform-
1301
specific sources.  Some UNIX sources are also used on other platforms. (SS)
1302
 
1303
9/10/95 (feature change) Eliminated exported global variables (they
1304
don't work with Windows DLLs).  Replaced tcl_AsyncReady and
1305
tcl_FileCloseProc with procedures Tcl_AsyncReady() and
1306
Tcl_SetFileCloseProc().  Replaced C variable tcl_RcFileName with
1307
a Tcl variable tcl_rcFileName. (SS)
1308
*** POTENTIAL INCOMPATIBILITY ***
1309
 
1310
9/11/95 (new feature) Added procedure Tcl_SetPanicProc to override
1311
the default implementation of "panic". (SS)
1312
 
1313
9/11/95 (new feature) Added "interp" command to allow creation of
1314
new interpreters and execution of untrusted scripts.  Added many new
1315
procedures, such as Tcl_CreateSlave, Tcl_CreateAlias,and Tcl_MakeSafe,
1316
to provide C-level access to the interpreter facility. This mechanism
1317
now provides almost all of the generic functions of Borenstein's and
1318
Rose's Safe-Tcl (but not any Tk or email-related stuff).  (JL)
1319
 
1320
9/11/95 (feature change) Changed file management so that files are
1321
no longer shared between interpreters:  a file cannot normally be
1322
referenced in one interpreter if it was opened in another.  This
1323
feature is needed to support safe interpreters.  Added Tcl_ShareHandle()
1324
procedure for allowing files to be shared, and added "interp" argument
1325
to Tcl_FilePermissions procedure. (JL)
1326
*** POTENTIAL INCOMPATIBILITY ***
1327
 
1328
9/11/95 (new feature) Added "AssocData" mechanism, whereby extensions
1329
can associate their own data with an interpreter and get called back
1330
when the interpreter is deleted.  This is visible at C level via the
1331
procedures Tcl_SetAssocData and Tcl_GetAssocData.  (JL)
1332
 
1333
9/11/95 (new feature) Added Tcl_ErrnoMsg to translate an errno value
1334
into a human-readable string.  This is now used instead of calling
1335
strerror because strerror mesages vary dramatically from platform
1336
to platform, which messes up Tcl tests.  Tcl_ErrnoMsg uses the standard
1337
POSIX messages for all the common signals, and calls strerror for
1338
signals it doesn't understand.
1339
 
1340
----------------- Released patch 7.5p2, 9/15/95 -----------------------
1341
 
1342
----------------- Released 7.5a1, 9/15/95 -----------------------
1343
 
1344
9/22/95 (bug fix) Changed auto_mkindex to create tclIndex files that
1345
handle directories whose paths might contain spaces. (RJ)
1346
 
1347
9/27/95 (bug fix) The "format" command didn't check for huge or negative
1348
width specifiers, which could cause core dumps. (JO)
1349
 
1350
9/27/95 (bug fix) Core dumps could occur if an interactive command typed
1351
to tclsh returned a very long result for tclsh to print out.  The bug is
1352
actually in printf (in Solaris 2.3 and 2.4, at least);  switched to use
1353
puts instead.  (JO)
1354
 
1355
9/28/95 (bug fix) Changed makefile.bc to eliminate a false dependency
1356
for tcl1675.dll on the Borland run time library. (SS)
1357
 
1358
9/28/95 (bug fix) Fixed tcl75.dll so it looks for tcl1675.dll instead
1359
of tcl16.dll. (SS)
1360
 
1361
9/28/95 (bug fix) Tcl was not correctly detecting the difference
1362
between Win32s and Windows '95. (SS)
1363
 
1364
9/28/95 (bug fix) "exec" was not passing environment changes to child
1365
processes under Windows. (SS)
1366
 
1367
9/28/95 (bug fix) Changed Tcl to ensure that open files are not passed
1368
to child processes under Windows. (SS)
1369
 
1370
9/28/95 (bug fix) Fixed Windows '95 and NT versions of exec so it can
1371
handle both console and windows apps.   (SS)
1372
 
1373
9/28/95 (bug fix) Fixed Windows version of exec so it no longer leaves
1374
temp files lying around.  Also changed it so the temp files are
1375
created in the appropriate system dependent temp directory. (SS)
1376
 
1377
9/28/95 (bug fix) Eliminated source dependency on the Win32s Universal
1378
Thunk header file, since it is not bundled with VC++. (SS)
1379
 
1380
9/28/95 (bug fix) Under Windows, Tcl now constructs the HOME
1381
environment variable from HOMEPATH and HOMEDRIVE when HOME is not
1382
already set. (SS)
1383
 
1384
9/28/95 (bug fix) Added support for "info nameofexecutable" and "info
1385
sharedlibextension" to the Windows version. (SS)
1386
 
1387
9/28/95 (bug fix) Changed tclsh to correctly parse command line
1388
arguments so that backslashes are preserved under Windows. (SS)
1389
 
1390
9/29/95 (bug fix) Tcl 7.5a1 treated either return or newline as end
1391
of line in "gets", which caused lines ending in CRLF to be treated as
1392
two separate lines.  Changed to allow only character as end-of-line:
1393
carriage return on Macs, newline elsewhere. (JO)
1394
 
1395
9/29/95 (new feature) Changed to install "configInfo" file in same
1396
directory as library scripts.  It didn't used to get installed. (JO)
1397
 
1398
9/29/95 (bug fix) Tcl was not converting Win32 errors into POSIX
1399
errors under some circumstances. (SS)
1400
 
1401
10/2/95 (bug fix) Safe interpreters no longer get initialized with
1402
a call to Tcl_Init(). (JL)
1403
 
1404
10/1/95 (new feature) Added "tcl_platform" global variable to provide
1405
environment information such as the instruction set and operating
1406
system. (JO)
1407
 
1408
10/1/95 (bug fix) "exec" command wasn't always generating the
1409
"child process exited abnormally" message when it should have.  (JO)
1410
 
1411
10/2/95 (bug fix) Changed "mkLinks.tcl" so that the scripts it generates
1412
won't create links that overwrite original manual entries (there was
1413
a problem where pack-old.n was overwriting pack.n).  (JO)
1414
 
1415
10/2/95 (feature change) Changed to use -ldl for dynamic loading under
1416
Linux if it is available, but fall back to -ldld if it isn't.  (JO)
1417
 
1418
10/2/95 (bug fix) File sharing was causing refcounts to reach 0
1419
prematurely for stdin, stdout and stderr, under some circumstances. (JL)
1420
 
1421
10/2/95 (platform support) Added support for Visual C++ compiler on
1422
Windows, Windows '95 and Windows NT, code donated by Gordon Chaffee. (JL)
1423
 
1424
10/3/95 (bug fix) Tcl now frees any libraries that it loads before it
1425
exits. (SS)
1426
 
1427
10/03/95 (bug fix) Fixed bug in Macintosh ls command where the -l
1428
and -C options would fail in anything but the HOME directory. (RJ)
1429
 
1430
----------------- Released 7.5a2, 10/6/95 -----------------------
1431
 
1432
10/10/95 (bug fix) "file dirnam /." was returning ":" on UNIX instead
1433
of "/". (JO)
1434
 
1435
10/13/95 (bug fix) Eliminated dependency on MKS toolkit for generating
1436
the tcl.def file from Borland object files. (SS)
1437
 
1438
10/17/95 (new features) Moved the event loop from Tcl to Tk, made major
1439
revisions along the way:
1440
    - New Tcl commands:  after, update, vwait (replaces "tkwait variable").
1441
    - "tkerror" is now replaced with "bgerror".
1442
    - The following procedures are similar to their old Tk counterparts:
1443
      Tcl_DoOneEvent, Tcl_Sleep, Tcl_DoWhenIdle, Tcl_CancelIdleCall,
1444
      Tcl_CreateFileHandler, Tcl_DeleteFileHandler, Tcl_CreateTimerHandler,
1445
      Tcl_DeleteTimerHandler, Tcl_BackgroundError.
1446
    - Revised notifier, add new concept of "event source" with the following
1447
      procedures:  Tcl_CreateEventSource, Tcl_DeleteEventSource,
1448
      Tcl_WatchFile, Tcl_SetMaxBlockTime, Tcl_FileReady, Tcl_QueueEvent,
1449
      Tcl_WaitForEvent. (JO)
1450
 
1451
10/31/95 (new features) Implemented cross platform file name support to make
1452
it easier to write cross platform scripts.  Tcl now understands 4 file naming
1453
conventions: Windows (both DOS and UNC), Mac, Unix, and Network.  The network
1454
convention is a new naming mechanism that can be used to paths in a platform
1455
independent fashion.  See the "file" command manual page for more details.
1456
The primary interfaces changes are:
1457
    - All Tcl commands that expect a file name now accept both network and
1458
      native form.
1459
    - Two new "file" subcommands, "nativename" and "networkname", provide a
1460
      way to convert between network and native form.
1461
    - Renamed Tcl_TildeSubst to Tcl_TranslateFileName, and changed it so that
1462
      it always returns a filename in native form.  Tcl_TildeSubst is defined
1463
      as a macro for backward compatibility, but it is deprecated. (SS)
1464
 
1465
11/5/95 (new feature) Made "tkerror" and "bgerror" synonyms, so that
1466
either name can be used to manipulate the command (provides temporary
1467
backward compatibility for existing scripts that use tkerror). (JO)
1468
 
1469
11/5/95 (new feature) Added exit handlers and new C procedures
1470
Tcl_CreateExitHandler, Tcl_DeleteExitHandler, and Tcl_Exit. (JO)
1471
 
1472
11/6/95 (new feature) Added pid command for Macintosh version of
1473
Tcl (it didn't previously exist on the Mac). (RJ)
1474
 
1475
11/7/95 (new feature) New generic IO facility and support for IO to
1476
files, pipes and sockets based on a common buffering scheme. Support
1477
for asynchronous (non-blocking) IO and for event driver IO. Support
1478
for automatic (background) asynchronous flushing and asynchronous
1479
closing of channels. (JL)
1480
 
1481
11/7/95 (new feature)  Added new commands "fconfigure" and "fblocked"
1482
to support new I/O features such as nonblocking I/O.  Added "socket"
1483
command for creating TCP client and server sockets. (JL).
1484
 
1485
11/7/95 (new feature) Complete set of C APIs to the new generic IO
1486
facility:
1487
    - Opening channels: Tcl_OpenFileChannel, Tcl_OpenCommandChannel,
1488
      Tcl_OpenTcpClient, Tcl_OpenTcpServer.
1489
    - I/O procedures on channels, which roughly mirror the ANSI C stdio
1490
      library:  Tcl_Read, Tcl_Gets, Tcl_Write, Tcl_Flush, Tcl_Seek,
1491
      Tcl_Tell, Tcl_Close, Tcl_Eof, Tcl_InputBlocked, Tcl_GetChannelOption,
1492
      Tcl_SetChannelOption.
1493
    - Extension mechanism for creating new kinds of channels:
1494
      Tcl_CreateChannel, Tcl_GetChannelInstanceData, Tcl_GetChannelType,
1495
      Tcl_GetChannelName, Tcl_GetChannelFile, Tcl_RegisterChannel,
1496
      Tcl_UnregisterChannel, Tcl_GetChannel.
1497
    - Event-driven I/O on channels: Tcl_CreateChannelHandler,
1498
      Tcl_DeleteChannelHandler. (JL)
1499
 
1500
11/7/95 (new feature) Channel driver interface specification to allow
1501
new types of channels to be added easily to Tcl. Currently being used
1502
in three drivers - for files, pipes and TCP-based sockets. (JL).
1503
 
1504
11/7/95 (new feature) interp delete now takes any number of path
1505
names of interpreters to delete, including zero. (JL).
1506
 
1507
11/8/95 (new feature) implemented 'info hostname' and Tcl_GetHostName
1508
command to get host name of machine on which the Tcl process is running. (JL)
1509
 
1510
11/9/95 (new feature) Implemented file APIs for access to low level files
1511
on each system. The APIs are: Tcl_CloseFile, Tcl_OpenFile, Tcl_ReadFile,
1512
Tcl_WriteFile and Tcl_SeekFile. Also implemented Tcl_WaitPid which waits
1513
in a system dependent manner for a child process. (JL)
1514
 
1515
11/9/95 (new feature) Added Tcl_UpdateLinkedVar procedure to force a
1516
Tcl variable to be updated after its C variable changes. (JO)
1517
 
1518
11/9/95 (bug fix) The glob command has been totally reimplemented so
1519
that it can support different file name conventions.  It now handles
1520
Windows file names (both UNC and drive-relative) properly.  It also
1521
supports nested braces correctly now. (SS)
1522
 
1523
11/13/95 (bug fix) Fixed Makefile.in so that configure can be run
1524
from a clean directory separate from the Tcl source tree, and compilations
1525
can be performed there. (JO)
1526
 
1527
11/14/95 (bug fix) Fixed file sharing between interpreters and file
1528
transferring between interpreters to correctly manage the refcount so that
1529
files are closed when the last reference to them is discarded. (JL)
1530
 
1531
11/14/95 (bug fix) Fixed gettimeofday implementation for the
1532
Macintosh.  This fixes several timing related bugs. (RJ)
1533
 
1534
11/17/95 (new feature) Added missing support for info nameofexecutable
1535
on the Macintosh. (RJ)
1536
 
1537
11/17/95 (bug fix) The Tcl variables argc argv and argv0 now return
1538
something reasonable on the Mac.  (RJ)
1539
 
1540
11/22/95 (new feature) Implemented "auto-detect" mode for end of line
1541
translations. On input, standalone "\r" mean MAC mode, standalone "\n"
1542
mean Unix mode and "\r\n" means Windows mode. On output, the mode is
1543
modified to whatever the platform specific mode for that platform is. (JL)
1544
 
1545
11/24/95 (feature change) Replaced "configInfo" file with tclConfig.sh,
1546
which is more complete and uses slightly different names.  Also
1547
arranged for tclConfig.sh to be installed in the platform-specific
1548
library directory instead of Tcl's script library directory. (JO)
1549
*** POTENTIAL INCOMPATIBILITY with Tcl 7.5a2, but not with Tcl 7.4 ***
1550
 
1551
----------------- Released patch 7.4p3, 11/28/95 -----------------------
1552
 
1553
12/5/95 (new feature) Added Tcl_File facility to support platform-
1554
independent file handles.  Changed all interfaces that used Unix-
1555
style integer fd's to use Tcl_File's instead. (SS)
1556
*** POTENTIAL INCOMPATIBILITY ***
1557
 
1558
12/5/95 (new feature) Added a new "clock" command to Tcl.  The command
1559
allows you to get the current "clicks" or seconds & allows you to
1560
format or scan human readable time/date strings. (RJ)
1561
 
1562
12/18/95 (new feature) Moved Tk_Preserve, Tk_Release, and Tk_EventuallyFree
1563
to Tcl, renamed to Tcl_Preserve, Tcl_Release, and Tcl_EventuallyFree. (JO)
1564
 
1565
12/18/95 (new feature) Added new "package" command and associated
1566
procedures Tcl_PkgRequire and Tcl_PkgProvide.   Also wrote
1567
pkg_mkIndex library procedure to create index files from binaries
1568
and scripts. (JO)
1569
 
1570
12/20/95 (new feature) Added Tcl_WaitForFile procedure. (JO)
1571
 
1572
12/21/95 (new features) Made package name argument to "load" optional
1573
(Tcl will now attempt to guess the package name if necessary).  Also
1574
added Tcl_StaticPackage and support in "load" for statically linked
1575
packages.  (JO)
1576
 
1577
12/22/95 (new feature) Upgraded the foreach command to accept multiple
1578
loop variables and multiple value lists.  This lets you iterate over
1579
multiple lists in parallel, and/or assign multiple loop variables from
1580
one value list during each iteration. The only potential compatibility
1581
problem is with scripts that used loop variables with a name that could be
1582
construed to be a list of variable names (i.e. contained spaces).  (BW)
1583
 
1584
1/5/96 (new feature) Changed tclsh so it builds as a console mode
1585
application under Windows.  Now tclsh can be used from the command
1586
line with pipes or interactively.  Note that this only works under
1587
Windows 95 or NT. (SS)
1588
 
1589
1/17/96 (new feature) Modified Makefile and configure script to allow
1590
Tcl to be compiled as a shared library:  use the --enable-shared option
1591
when configuing.  (JO)
1592
 
1593
1/17/96 (removed obsolete features)  Removed the procedures Tcl_EnterFile
1594
and Tcl_GetOpenFile:  these no longer make sense with the new I/O system. (JL)
1595
*** POTENTIAL INCOMPATIBILITY ***
1596
 
1597
1/19/96 (bug fixes) Prevented formation of circular aliases, through the
1598
Tcl 'interp alias' command and through the 'rename' command, as well as
1599
through the C API Tcl_CreateAlias. (JL)
1600
 
1601
1/19/96 (bug fixes) Fixed several bugs in direct deletion of interpreters
1602
with Tcl_DeleteInterp when the interpreter is a slave; fixes based on a
1603
patch received from Viktor Dukhovni of ESM. (JL)
1604
 
1605
1/19/96 (new feature) Implemented on-close handlers for channels; added
1606
the C APIs Tcl_CreateCloseHandler and Tcl_DeleteCloseHandler. (JL)
1607
 
1608
1/19/96 (new feature) Implemented portable error reporting mechanism; added
1609
the C APIs Tcl_SetErrno and Tcl_GetErrno. (JL)
1610
 
1611
1/24/96 (bug fix) Unknown command processing properly invokes external
1612
commands under Windows NT and Windows '95 now. (SS)
1613
 
1614
1/23/96 (bug fix) Eliminated extremely long startup times under Windows '95.
1615
The problem was a result of the option database initialization code that
1616
concatenated $HOME with /.Xdefaults, resulting in a // in the middle of the
1617
file name.  Under Windows '95, this is incorrectly interpreted as a UNC
1618
path.  They delays came from the network timeouts needed to determine that
1619
the file name was invalid.  Tcl_TranslateFileName now suppresses duplicate
1620
slashes that aren't at the beginning of the file name. (SS)
1621
 
1622
1/25/96 (bug fix) Changed exec and open to create children so they are
1623
attached to the application's console if it exists. (SS)
1624
 
1625
1/31/96 (bug fix) Fixed command line parsing to handle embedded
1626
spaces under Windows. (SS)
1627
 
1628
----------------- Released 7.5b1, 2/1/96 -----------------------
1629
 
1630
2/7/96 (bug fix) Fixed off by one error in argument parsing code under
1631
Windows. (SS)
1632
 
1633
2/7/96 (bug fix) Fixed bugs in VC++ makefile that improperly
1634
initialized the tcl75.dll.  Fixed bugs in Borland makefile that caused
1635
build failures under Windows NT. (SS)
1636
 
1637
2/9/96 (bug fix) Fixed deadlock problem in AUTO end of line translation
1638
mode which would cause a socket server with several concurrent clients
1639
writing in CRLF mode to hang. (JL)
1640
 
1641
2/9/96 (API change) Replaced -linemode option to fconfigure with a
1642
new -buffering option, added "none" setting to enable immediate write. (JL)
1643
*** INCOMPATIBILITY with b1 ***
1644
 
1645
2/9/96 (new feature) Added C API Tcl_InputBuffered which returns the count
1646
of bytes currently buffered in the input buffer of a channel, and o for
1647
output only channels. (JL)
1648
 
1649
2/9/96 (new feature) Implemented asynchronous connect for sockets. (JL)
1650
 
1651
2/9/96 (new feature) Added C API Tcl_SetDefaultTranslation to set (per
1652
channel) the default end of line translation mode. This is the mode that
1653
will be installed if an output operation is done on the channel while it is
1654
still in AUTO mode. (JL)
1655
 
1656
2/9/96 (bug fix) Changed Tcl_OpenCommandChannel interface to properly
1657
handle all of the combinations of stdio inheritance in background
1658
pipelines.  See the Tcl_OpenFileChannel(3) man page for more
1659
info.  This change fixes the bug where exec of a background pipeline
1660
was not getting passed the stdio handles properly. (SS)
1661
 
1662
2/9/96 (bug fix) Removed the new Tcl_CreatePipeline interface, and
1663
restored the old version for Unix platforms only.  All new code should
1664
use Tcl_CreateCommandChannel instead. (SS)
1665
 
1666
2/9/96 (bug fix) Changed Makefile.in to use -L and -ltcl7.5 for Tcl
1667
library so that shared libraries are more likely to be found correctly
1668
on more platforms. (JO)
1669
 
1670
2/13/96 (new feature) Added C API Tcl_SetNotifierData and
1671
Tcl_GetNotifierData to allow notifier and channel driver writers to
1672
associate data with a Tcl_File.  The result of this change is that
1673
Tcl_GetFileInfo now always returns an OS file handle, and Tcl_GetFile
1674
can be used to construct a Tcl_File for an externally constructed OS
1675
handle. (SS)
1676
 
1677
2/13/96 (bug fix) Changed Windows socket implementation so it doesn't
1678
set SO_REUSEADDR on server sockets.  Now attempts to create a server
1679
socket on a port that is already in use will be properly identified
1680
and an error will be generated. (SS)
1681
 
1682
2/13/96 (bug fix) Fixed problems with DLL initialization under Visual
1683
C++ that left the C run time library uninitialized. (SS)
1684
 
1685
2/13/96 (bug fix) Fixed Windows socket initialization so it loads
1686
winsock the first time it is used, rather than at the time tcl75.dll
1687
is loaded.  This should fix the bug where the modem immediately starts
1688
trying to connect to a service provider when wish or tclsh are
1689
started. (SS)
1690
 
1691
2/13/96 (new feature) Added C APIs Tcl_MakeFileChannel and
1692
Tcl_MakeTcpClientChannel to wrap up existing fds and sockets into
1693
channels. Provided implementations on Unix and Windows. (JL)
1694
 
1695
2/13/96 (bug fix) Fixed bug with seek leaving EOF and BLOCKING set. (JL)
1696
 
1697
2/14/96 (bug fix) Fixed reentrancy problem in fileevent handling
1698
and made it more robust in the face of errors. (JL)
1699
 
1700
2/14/96 (feature change) Made generic IO level emulate blocking mode if the
1701
channel driver is unable to provide it, e.g. if the low level device is
1702
always nonblocking. Thus, now blocking behavior is an advisory setting for
1703
channel drivers and can be ignored safely if the channel driver is unable
1704
to provide it. (JL)
1705
 
1706
2/15/96 (new feature) Added "binary" end of line translation mode, which is
1707
a synonym of "lf" mode. (JL)
1708
 
1709
2/15/96 (bug fix) Fixed reentrancy problem in fileevent handling vs
1710
deletion of channel event handlers. (JL)
1711
 
1712
2/15/96 (bug fix) Fixed bug in event handling which would cause a
1713
nonblocking channel to not see further readable events after the first
1714
readable event that had insufficient input. (JL)
1715
 
1716
2/17/96 (bug fix) "info complete" didn't properly handle comments
1717
in nested commands. (JO)
1718
 
1719
2/21/96 (bug fix) "exec" under Windows NT/95 did not properly handle
1720
very long command lines (>200 chars). (SS)
1721
 
1722
2/21/96 (bug fix) Sockets could get into an infinite loop if a read
1723
event arrived after all of the available data had been read. (SS)
1724
 
1725
2/22/96 (bug fix) Added cast of st_size elements to (long) before
1726
sprintf-ing in "file size" command.  This is needed to handle systems
1727
like NetBSD with 64-bit file offsets.  (JO)
1728
 
1729
----------------- Released 7.5b2, 2/23/96 -----------------------
1730
 
1731
2/23/96 (bug fix) TCL_VARARGS macro in tcl.h wasn't defined properly
1732
when compiling with C++.  (JO)
1733
 
1734
2/24/96 (bug fix) Removed dependencies on Makefile in the UNIX Makefile:
1735
this caused problems on some platforms (like Linux?). (JO)
1736
 
1737
2/24/96 (bug fix) Fixed configuration bug that made Tcl not compile
1738
correctly on Linux machines with neither -ldl or -ldld. (JO)
1739
 
1740
2/24/96 (new feature) Added a block of comments and definitions to
1741
Makefile.in to make it easier to have Tcl's TclSetEnv etc. replace
1742
the library procedures setenv etc, so that calls to setenv etc. in
1743
the application automatically update the Tcl "env" variable. (JO)
1744
 
1745
2/27/96 (feature change) Added optional Tcl_Interp * argument (may be NULL)
1746
to C API Tcl_Close and simplified closing of command channels. (JL)
1747
*** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 ***
1748
 
1749
2/27/96 (feature change) Added optional Tcl_Interp * argument (may be NULL)
1750
to C type definition Tcl_DriverCloseProc; modified all channel drivers to
1751
implement close procedures that accept the additional argument. (JL)
1752
*** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 ***
1753
 
1754
2/28/96 (bug fix) Fixed memory leak that could occur if an upvar
1755
referred to an element of an array in the same stack frame as the
1756
upvar. (JO)
1757
 
1758
2/29/96 (feature change) Modified both Tcl_DoOneEvent and Tcl_WaitForEvent
1759
so that they return immediately in cases where they would otherwise
1760
block forever (e.g. if there are no event handlers of any sort). (JO)
1761
 
1762
2/29/96 (new feature) Added C APIs Tcl_GetChannelBufferSize and
1763
Tcl_SetChannelBufferSize to set and retrieve the size, in bytes, for
1764
buffers allocated to store input or output in a channel. (JL)
1765
 
1766
2/29/96 (new feature) Added option -buffersize to Tcl fconfigure command
1767
to allow Tcl scripts to query and set the size of channel buffers. (JL)
1768
 
1769
2/29/96 (feature removed) Removed channel driver function to specify
1770
the buffer size to use when allocating a buffer. Removed the C typedef
1771
for Tcl_DriverBufferSizeProc. Channels are now created with a default
1772
buffer size of 4K. (JL)
1773
*** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 ***
1774
 
1775
2/29/96 (feature change) The channel driver function for setting blocking
1776
mode on the device may now be NULL. If the generic code detects that the
1777
function is NULL, operations that set the blocking mode on the channel
1778
simply succeed. (JL)
1779
 
1780
3/2/96 (bug fix) Fixed core dump that could occur if a syntax error
1781
(such as missing close paren) occurred in an array reference with a
1782
very long array name. (JO)
1783
 
1784
3/4/96 (bug fix) Removed code in the "auto_load" procedure that deletes
1785
all existing auto-load information whenever the "auto_path" variable
1786
is changed.  Instead, new information adds to what was already there.
1787
Otherwise, changing the "auto_path" variable causes all package-
1788
related information to be lost.  If you really want to get rid of
1789
existing auto-load information, use auto_reset before setting auto_path. (JO)
1790
 
1791
3/5/96 (new feature) Added version suffix to shared library names so that
1792
Tcl will compile under NetBSD and FreeBSD (I hope).  (JO)
1793
 
1794
3/6/96 (bug fix) Cleaned up error messages in new I/O system to correspond
1795
more closely to old I/O system. (JO)
1796
 
1797
3/6/96 (new feature) Added -myaddr and -myport options to the socket
1798
command, removed -tcp and -- options.  This lets clients and servers
1799
choose a particular interface.  Also changed the default server address
1800
from the hostname to INADDR_ANY.  The server accept callback now gets
1801
passed the client's port as well as IP address.  The C interfaces for
1802
Tcl_OpenTcpClient and Tcl_OpenTcpServer have changed to support the
1803
above changes. (BW)
1804
*** POTENTIAL INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 ***
1805
 
1806
3/6/96 (changed feature) The library function auto_mkindex will now
1807
default to using the pattern "*.tcl" if no pattern is given. (RJ)
1808
 
1809
3/6/96 (bug fix) The socket channel code for the Macintosh has been
1810
rewritten to use native MacTcp.  (RJ)
1811
 
1812
3/7/96 (new feature) Added Tcl_SetStdChannel and Tcl_GetStdChannel
1813
interfaces to allow applications to explicitly set and get the global
1814
standard channels. (SS)
1815
 
1816
3/7/96 (bug fix) Tcl did close not the file descriptors associated
1817
with "stdout", etc. when the corresponding channels were closed.  (SS)
1818
 
1819
3/7/96 (bug fix) Reworked shared library and dynamic loading stuff to
1820
try to get it working under AIX.  Added new @SHLIB_LD_LIBS@ autoconf
1821
symbol as part of this.  AIX probably doesn't work yet, but it should
1822
be a lot closer. (JO)
1823
 
1824
3/7/96 (feature change) Added Tcl_ChannelProc typedef and changed the
1825
signature of Tcl_CreateChannelHandler and Tcl_DeleteChannelHandler to take
1826
Tcl_ChannelProc arguments instead of Tcl_FileProc arguments. This change
1827
should not affect any code outside Tcl because the signatures of
1828
Tcl_ChannelProc and Tcl_FileProc are compatible. (JL)
1829
 
1830
3/7/96 (API change) Modified signature of Tcl_GetChannelOption to return
1831
an int instead of char *, and to take a Tcl_DString * argument. Modified
1832
the implementation so that the option name can be NULL, to mean that the
1833
call should retrieve a list of alternating option names and values. (JL)
1834
*** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 ***
1835
 
1836
3/7/96 (API change) Added Tcl_DriverSetOptionProc, Tcl_DriverGetOptionProc
1837
typedefs, added two slots setOptionProc and getOptionProc to the channel
1838
type structure. These may be NULL to indicate that the channel type does
1839
not support any options. (JL)
1840
*** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 ***
1841
 
1842
3/7/96 (feature change) stdin, stdout and stderr can now be put into
1843
nonblocking mode. (JL)
1844
 
1845
3/8/96 (feature change) Eliminated dependence on the registry for
1846
finding the Tcl library files. (SS)
1847
 
1848
----------------- Released 7.5b3, 3/8/96 -----------------------
1849
 
1850
3/12/96 (feature improvement) Modified startup script to look in several
1851
different places for the Tcl library directory.  This should allow Tcl
1852
to find the libraries under all but the weirdest conditions, even without
1853
the TCL_LIBRARY environment variable being set. (JO)
1854
 
1855
3/13/96 (bug fix) Eliminated use of the "linger" option from the Windows
1856
socket implementation. (JL)
1857
 
1858
3/13/96 (new feature) Added -peername and -sockname options for fconfigure
1859
for socket channels. Code contributed by John Haxby of HP. (JL)
1860
 
1861
3/13/96 (bug fix) Fixed panic and core dump that would occur if the accept
1862
callback script on a server socket encountered an error. (JL)
1863
 
1864
3/13/96 (feature change) Added -async option to the Tcl socket command.
1865
If the command is creating a client socket and the flag is present, the
1866
client is connected asynchronously. If the option is absent (the default),
1867
the client socket is connected synchronously, and the command returns only
1868
when the connection has been completed or failed. This change was suggested
1869
by Mark Diekhans. (JL)
1870
 
1871
3/13/96 (feature change) Modified the signature of Tcl_OpenTcpClient to
1872
take an additional int argument, async. If nonzero, the client is connected
1873
to the server asynchronously. If the value is zero, the connection is made
1874
synchronously, and the call to Tcl_OpenTcpClient returns only when the
1875
connection fails or succeeds. This change was suggested by Mark Diekhans. (JL)
1876
*** INCOMPATIBILITY with Tcl 7.5b3, but not with Tcl 7.4 ***
1877
 
1878
3/14/96 (bug fix) "tclsh bogus_file_name" didn't print an error message. (JO)
1879
 
1880
3/14/96 (bug fix) Added new procedures to tclCkalloc.c so that libraries
1881
and applications can be compiled with TCL_MEM_DEBUG even if Tcl isn't
1882
(however, the converse is still not true).  Patches provided by Jan
1883
Nijtmans. (JO)
1884
 
1885
3/15/96 (bug fix) Marked standard IO handles of a process as close-on-exec
1886
to fix bug in Ultrix where exec was not sharing standard IO handles with
1887
subprocesses. Fix suggested by Mark Diekhans. (JL)
1888
 
1889
3/15/96 (bug fix) Fixed asynchronous close mechanism so that it closes the
1890
channel instead of leaking system resources. The manifestation was that Tcl
1891
would eventually run out of file descriptors if it was handling a large
1892
number of nonblocking sockets or pipes with high congestion. (JL)
1893
 
1894
3/15/96 (bug fix) Fixed tests so that they no longer leak file descriptors.
1895
The manifestation was that Tcl would eventually run out of file descriptors
1896
if the tests were rerun many times (> a hundred times on Solaris). (JL)
1897
 
1898
3/15/96 (bug fix) Fixed channel creation code so that it never creates
1899
unnamed channels. This would cause a panic and core dump when the channel
1900
was closed. (JL)
1901
 
1902
3/16/96 (bug fixes) Made lots of changes in configuration stuff to get
1903
Tcl working under AIX (finally).  Tcl should now support the "load"
1904
command under AIX and should work either with or without shared
1905
libraries for Tcl and Tk. (JO)
1906
 
1907
3/21/96 (configuration improvement) Changed configure script so it
1908
doesn't use version numbers (as in -ltcl7.5 and libtcl7.5.so) under
1909
SunOS 4.1, where they don't work anyway.  (JO)
1910
 
1911
3/22/96 (new feature) Added C API Tcl_InterpDeleted that allows extension
1912
writers to discover when an interpreter is being deleted. (JL)
1913
 
1914
3/22/96 (bug fix) The standard IO channels are now added to each
1915
trusted interpreter as soon as the interpreter is created. This ensures
1916
against the bug where a child would do IO before the master had done any,
1917
and then the child is destroyed - the standard IO channels would be then
1918
closed and the master would be unable to do any IO. (JL)
1919
 
1920
3/22/96 (bug fix) Made Tcl more robust against interpreter deletion, by
1921
using Tcl_Preserve, Tcl_Release and Tcl_EventuallyFree to split the process
1922
of interpreter deletion into two distinct phases. Also went through all of
1923
Tcl and added calls to Tcl_Preserve and Tcl_Delete where needed. (JL)
1924
 
1925
3/22/96 (bug fix) Fixed several places where C code was reading and writing
1926
into freed memory, especially during interpreter deletion. (JL)
1927
 
1928
3/22/96 (bug fix) Fixed very deep bug in Tcl_Release that caused memory to
1929
be freed twice if the release callback did Tcl_Preserve and Tcl_Release on
1930
the same memory as the chunk currently being freed. (JL)
1931
 
1932
3/22/96 (bug fix) Removed several memory leaks that would cause memory
1933
buildup on half-K chunks in the generic IO level. (JL)
1934
 
1935
3/22/96 (bug fix) Fixed several core dumps which occurred when new
1936
AssocData was being created during the cleanups in interpreter deletion.
1937
The solution implemented now is to loop repeatedly over the AssocData until
1938
none is left to clean up. (JL)
1939
 
1940
3/22/96 (bug fix) Fixed a bug in event handling which caused an infinite
1941
loop if there were no files being watched and no timer. Fix suggested by
1942
Jan Nijtmans. (JL)
1943
 
1944
3/22/96 (bug fix) Fixed Tcl_CreateCommand, Tcl_DeleteCommand to be more
1945
robust if the interpreter is being deleted. Also fixed several order
1946
dependency bugs in Tcl_DeleteCommand which kicked in when an interpreter
1947
was being deleted. (JL)
1948
 
1949
3/26/96 (bug fix) Upon a "short read", the generic code no longer calls
1950
the driver for more input. Doing this caused blocking on some platforms
1951
even on nonblocking channels. Bug and fix courtesy Mark Roseman. (JL)
1952
 
1953
3/26/96 (new feature) Added 'package Tcltest' which is present only in
1954
test versions of Tcl; this allows the testing commands to be loaded into
1955
new interpreters besides the main one. (JL)
1956
 
1957
3/26/96 (restored feature) Recreated the Tcl_GetOpenFile C API. You can
1958
now get a FILE * from a registered channel; Unix only. (JL)
1959
 
1960
3/27/96 (bug fix) The regular expression code did not support more
1961
than 9 subexpressions.  It now supports up to 20. (SS)
1962
 
1963
4/1/96 (bug fixes) The CHANNEL_BLOCKED bit was being left on on a short
1964
read, so that fileevents wouldn't fire correctly. Bug reported by Mark
1965
Roseman.(JL, RJ)
1966
 
1967
4/1/96 (bug fix) Moved Tcl_Release to match Tcl_Preserve exactly, in
1968
tclInterp.c; previously interpreters were being freed only conditionally
1969
and sometimes not at all. (JL)
1970
 
1971
4/1/96 (bug fix) Fixed error reporting in slave interpreters when the
1972
error message was being generated directly by C code. Fix suggested by
1973
Viktor Dukhovni of ESM. (JL)
1974
 
1975
4/2/96 (bug fixes) Fixed a series of bugs in Windows sockets that caused
1976
events to variously get lost, to get sent multiple times, or to be ignored
1977
by the driver. The manifestation was blocking if the channel is blocking,
1978
and either getting EAGAIN or infinite loops if the channel is nonblocking.
1979
This series of bugs was found by Ian Wallis of Cisco. Now all tests (also
1980
those that were previously commented out) in socket.test pass.  (JL, SS)
1981
 
1982
4/2/96 (feature change/bug fix) Eliminated network name support in
1983
favor of better native name support.  Added "file split", "file join",
1984
and "file pathtype" commands.  See the "file" man page for more
1985
details. (SS)
1986
*** INCOMPATIBILITY with Tcl 7.5b3, but not with Tcl 7.4 ***
1987
 
1988
4/2/96 (bug fix) Changed implementation of auto_mkindex so tclIndex
1989
files will properly handle path names in a cross platform context. (SS)
1990
 
1991
4/5/96 (bug fix) Fixed Tcl_ReadCmd to use the channel buffer size as the
1992
chunk size it reads, instead of a fixed 4K size. Thus, on large reads, the
1993
user can set the channel buffer size to a large size and the read will
1994
occur orders of magnitude faster. For example, on a 2MB file, reading in 4K
1995
chunks took 34 seconds, while reading in 1MB chunks took 1.5 seconds (on a
1996
SS-20). Problem identified and fix suggested by John Haxby of HP. (JL)
1997
 
1998
4/5/96 (bug fix) Fixed socket creation code to invoke gethostbyname only if
1999
inet_addr failed (very unlikely). Before this change the order was reversed
2000
and this made things much slower than they needed to be (gethostbyname
2001
generally requires an RPC, which is slow). Problem identified and fix
2002
suggested by John Loverso of OSF. (JL)
2003
 
2004
4/9/96 (feature change) Modified "auto" translation mode so that it
2005
recognizes any of "\n", "\r" and "\r\n" in input as end of line, so
2006
that a file can have mixed end-of-line sequences. It now outputs
2007
the platform specific end of line sequence on each platform for files and
2008
pipes, and for sockets it produces crlf in output on all platforms. (JL)
2009
*** INCOMPATIBILITY with Tcl 7.5b3, but not with Tcl 7.4 ***
2010
 
2011
4/11/96 (new feature) Added -eofchar option to Tcl_SetChannelOption to allow
2012
setting of an end of file character for input and output. If an input eof
2013
char is set, it is recognized as EOF and further input from the channel is
2014
not presented to the caller. If an output eof char is set, on output, that
2015
byte is appended to the channel when it is closed. On Unix and Macintosh,
2016
all channels start with no eof char set for input or output. On Windows,
2017
files and pipes start with input and output eof chars set to Crlt-Z (ascii
2018
26), and sockets start with no input or output eof char. (JL)
2019
*** INCOMPATIBILITY with Tcl 7.5b3, but not with Tcl 7.4 ***
2020
 
2021
4/17/96 (bug fix) Fixed series of bugs with handling of crlf sequence split
2022
across buffer boundaries in input, in AUTO mode. (JL, BW)
2023
 
2024
4/17/96 (test suite improvement) Fixed test suite so that tests that
2025
depend on the availability of Unix commands such as echo, cat and others
2026
are not run if these commands are not present. (JL)
2027
 
2028
4/17/96 (test suite improvement) The socket test now automatically starts,
2029
on platformst that support exec, a separate process for remote testsing. (JL)
2030
 
2031
----------------- Released 7.5, 4/21/96 -----------------------
2032
 
2033
5/1/96 (bug fix) "file tail ~" did not correctly return the tail
2034
portion of the user's home directory. (SS)
2035
 
2036
5/1/96 (bug fix) Fixed bug in TclGetEnv where it didn't lookup environment
2037
variables correctly:  could confuse "H" and "HOME", for example.  (JO)
2038
 
2039
5/1/96 (bug fix) Changed to install tclConfig.sh under "make install-binaries",
2040
not "make install-libraries".  (JO)
2041
 
2042
5/2/96 (bug fix) Changed pkg_mkIndex not to attempt to "load" a file unless
2043
it has the standard shared library extension.  On SunOS, attempts to load
2044
Tcl scripts cause the whole application to be aborted (there's no way to
2045
get the error back into Tcl).  (JO)
2046
 
2047
5/7/96 (bug fix) Moved initScript in tclUnixInit.c to writable memory to
2048
avoid potential core dumps. (JO)
2049
 
2050
5/7/96 (bug fix) Auto_reset procedure was removing procedure from init.tcl,
2051
such as pkg_mkIndex.  (JO)
2052
 
2053
5/7/96 (bug fix) Fixed cast on socket address resolution code that
2054
would cause a failure to connect on Dec Alphas. (JL)
2055
 
2056
5/7/96 (bug fix) Added "time", "subst" and "fileevent" commands to set of
2057
commands available in a safe interpreter. (JL)
2058
 
2059
5/13/96 (bug fix) Preventing OS level handles for stdin, stdout and stderr
2060
from being implicitly closed when the last reference to the standard
2061
channel containing that handle is discarded when an interpreter is deleted.
2062
Explicitly closing standard channels by using "close" still works. (JL)
2063
 
2064
5/21/96 (bug fix) Do not create channels for stdin, stdout and stderr on
2065
Unix if the devices are closed. This prevents a duplicate channel name
2066
panic later on when the fd is used to open a channel and the channel is
2067
registered in an interpreter. (JL)
2068
 
2069
5/23/96 (bug fix) Fixed bug that prevented the use of standard channels in
2070
interpreters created after the last interpreter was destroyed. In the sequence
2071
 
2072
        interp = Tcl_CreateInterp();
2073
        Tcl_DeleteInterp(interp);
2074
        interp = Tcl_CreateInterp();
2075
 
2076
channels for stdio would not be available in the second interpreter. (JL)
2077
 
2078
5/23/96 (bug fix) Fixed bug that allowed Tcl_MakeFileChannel to create new
2079
channels with Tcl_Files in them that are already used by another channel.
2080
This would cause core dumps when the Tcl_Files were being freed twice. (JL)
2081
 
2082
5/23/96 (bug fix) Fixed a logical timing bug that caused a standard channel
2083
to be removed from the standard channel table too early when the channel
2084
was being closed. If the channel was being flushed asynchronously, it could
2085
get recreated before being actually destroyed, and the recreated channel
2086
would contain the same Tcl_File as the one being closed, leading to
2087
dangling pointers and core dumps. (JL)
2088
 
2089
5/27/96 (bug fix) Fixed a bug in Tcl_GetChannelOption which caused it to
2090
always return a list of one element, a list of the settings, for
2091
-translation and -eofchar options. Now correctly returns the value
2092
described by the documentation (Mark Diekhans found this, thanks!). (JL)
2093
 
2094
5/30/96 (bug fix) Fixed a couple of syntax errors in io.test. (JL)
2095
 
2096
5/30/96 (bug fix) If a fileevent scripts gets an error, delete it before
2097
causing a background error. This is to allow the error handler to reinstall
2098
the fileevent and to prevent infinite loops if the event loop is reentered
2099
in the error handler. (JL)
2100
 
2101
5/31/96 (bug fix) Channels now will get properly flushed on exit. (JL)
2102
 
2103
6/5/96 (bug fix) Changed Tcl_Ckalloc, Tcl_Ckfree, and Tcl_Ckrealloc to
2104
Tcl_Alloc, Tcl_Free, and Tcl_Realloc.  Added documentation for these
2105
routines now that they are officially supported.  Extension writers
2106
should use these routines instead of free() and malloc(). (SS)
2107
 
2108
6/10/96 (bug fix) Changes the Tcl close command so that it no longer
2109
waits on nonblocking pipes for the piped processes to exit; instead it
2110
reaps them in the background. (JL)
2111
 
2112
6/11/96 (bug fix) Increased the length of the listen queue for server
2113
sockets on Unix from 5 to 100. Some OSes will disregard this and reset it
2114
to 5, but we should try to get as long a queue as we can, for performance
2115
reasons. (JL)
2116
 
2117
6/11/96 (bug fix) Fixed windows sockets bug that caused a cascade of events
2118
if the fileevent script read less than was available. Now reading less than
2119
is available does not cause a flood of Tcl events. (JL, SS)
2120
 
2121
6/11/96 (bug fix) Fixed bug in background flushing on closed channels that
2122
would prevent the last buffer from getting flushed. (JL)
2123
 
2124
6/13/96 (bug fix) Fixed bug in Windows sockets that caused a core dump if
2125
a DLL linked with tcl.dll and referred to e.g. ntohs() without opening a
2126
Tcl socket. The problem was that the indirection table was not being
2127
initialized. (JL)
2128
 
2129
6/13/96 (bug fix) Fixed OS level resource leak that would occur when a
2130
Tcl channel was still registered in some interpreter when the process
2131
exits. Previously the channel was not being closed and the OS level handles
2132
were not being released; the output was being flushed but the device was
2133
not being closed. Now the device is properly closed. This was only a
2134
problem on Win3.1 and MacOS. (JL, SS)
2135
 
2136
6/28/96 (bug fix) Fixed bug where transient errors were leaving an error
2137
code around, so that it would erroneously get reported later. This bug was
2138
exercised intermittently by closing a channel to a file on a very loaded
2139
NFS server, or to a socket whose other end blocked. (JL, BW)
2140
 
2141
7/3/96 (bug fix) Fileevents declared in an interpreter are now deleted
2142
when the channel is closed in that interpreter. Before this fix, the
2143
fileevent would hang around until the channel is completely closed, and
2144
would cause errors if events happened before the channel was closed. This
2145
could happen in two cases: first if the channel is shared between several
2146
interpreters, and second if an async flush is in progress that prevents the
2147
channel from being closed until the flush finishes. (JL)
2148
 
2149
7/10/96 (bug fix) Fixed bugs in both "lrange" and "lreplace" commands
2150
where too much white space was being removed. For example, the command
2151
                lreplace {\}\     hello} end end
2152
was returning "\}\", losing the significant space in the first list
2153
element and corrupting the list. (JO)
2154
 
2155
7/20/96 (bug fix) The procedure pkg_mkIndex didn't work properly for
2156
extensions that depend on Tk, because it didn't load Tk into the child
2157
interpreter before loading the extension.  Now it loads Tk if Tk is
2158
present in the parent. (JO)
2159
 
2160
7/23/96 (bug fix) Added compat version of strftime to fix crashes
2161
resulting from bad implementations under Windows. (SS)
2162
 
2163
7/23/96 (bug fix) Standard implementations of gmtime() and localtime()
2164
under Windows did not handle dates before 1970, so they were replaced
2165
with a revised implementation. (SS)
2166
 
2167
7/23/96 (bug fix) Tcl would crash on exit under Borland 5.0 because
2168
the global environ pointer was left pointing to freed memory. (SS)
2169
 
2170
7/29/96 (bug fix) Fixed memory leak in Tcl_LoadCmd that could occur if
2171
a package's AppInit procedure called Tcl_StaticPackage to register
2172
static packages. (JO)
2173
 
2174
8/1/96 (bug fix) Fixed a series of bugs in Windows sockets so that async
2175
writebehind in the presence of read event handlers now works, and so that
2176
async writebehind also works on sockets for which a read event handler was
2177
declared and whose channels were then closed before the async write
2178
finished. The bug was reported by John Loverso and Steven Wahl,
2179
independently, test case supplied by John Loverso. (JL)
2180
 
2181
----------------- Released patch 7.5p1, 8/2/96 -----------------------
2182
 
2183
5/8/96 (new feature) Added Tcl_GetChannelMode C API for retrieving whether
2184
a channel is open for reading and writing. (JL)
2185
 
2186
5/8/96 (API changes) Revised C APIs for channel drivers:
2187
    - Removed all Tcl_Files from channel driver interface; you can now have
2188
      channels that are not based on Tcl_Files.
2189
    - Added channelReadyProc and watchChannelProc procedures to interface;
2190
      these are used to implement event notification for channels.
2191
    - Added getFileProc to channel driver, to allow the generic IO code
2192
      to retrieve a Tcl_File from a channel (presumably if the channel
2193
      uses Tcl_Files they will be stored inside its instanceData). (JL)
2194
*** INCOMPATIBILITY with Tcl 7.5 ***
2195
 
2196
5/8/96 (API change) The Tcl_CreateChannel C API was modified to not take
2197
Tcl_File arguments, and instead to take a mask specifying whether the
2198
channel is readable and/or writable. (JL)
2199
*** INCOMPATIBILITY with Tcl 7.5 ***
2200
 
2201
6/3/96 (bug fix) Made Tcl_SetVar2 robust against the case where the value
2202
of the variable is a NULL pointer instead of "". (JL)
2203
 
2204
6/17/96 (bug fix) Fixed "reading uninitialized memory" error reported by
2205
Purify, in Tcl_Preserve/Tcl_Release. (JL)
2206
 
2207
8/9/96 (bug fix) Fixed bug in init.tcl that caused incorrect error message
2208
if the act of autoloading a procedure caused the procedure to be invoked
2209
again. (JO)
2210
 
2211
8/9/96 (bug fix) Configure script produced bad library names and extensions
2212
under SunOS and a few other platforms if the --disable-load switch was used.
2213
(JO)
2214
 
2215
8/9/96 (bug fix) Tcl_UpdateLinkedVar generated an error if the variable
2216
being updated was read-only. (JO)
2217
 
2218
8/14/96 (bug fix) The macintosh now supports synchronous socket
2219
connections.  Other minor bugs were also fixed. (RJ)
2220
 
2221
8/15/96 (configuration improvement) Changed the file patchlevel.h
2222
to be tclPatch.h.  This avoids conflict with the Tk file and is now
2223
in 8.3 format on the Windows platform. (RJ)
2224
 
2225
8/20/96 (bug fix) Fixed core dump in interp alias command for interpreters
2226
created with Tcl_CreateInterp (as opposed to with Tcl_CreateSlave). (JL)
2227
 
2228
8/20/96 (bug fix) No longer masking ECONNRESET on Windows sockets so
2229
that the higher level of the IO mechanism sees the error instead of
2230
entering an infinite loop. (JL)
2231
 
2232
8/20/96 (bug fix) Destroying the last interpreter no longer closes the
2233
standard channels. (JL)
2234
 
2235
8/20/96 (bug fix) Closing one of the stdin, stdout or stderr channels and
2236
then opening a new channel now correctly assigns the new channel as the
2237
standard channel that was closed. (JL)
2238
 
2239
8/20/96 (bug fix) Added code to unix/tclUnixChan.c for using ioctl with
2240
FIONBIO instead of fcntl with O_NONBLOCK, for those versions of Unix where
2241
either O_NONBLOCK is not supported or implemented incorrectly. (JL)
2242
 
2243
8/21/96 (bug fix) Fixed "file extension" so it correctly returns the
2244
extension on files like "foo..c" as "..c" instead of ".c". (SS)
2245
 
2246
8/22/96 (bug fix) If environ[] contains static strings, Tcl would core
2247
dump in TclSetupEnv because it was trying to write NULLs into the actual
2248
data in environ[]. Now we instead copy as appropriate. (JL)
2249
 
2250
8/22/96 (added impl) Added missing implementation of Tcl_MakeTcpClientChannel
2251
for Windows platform. Code contributed by Mark Diekhans. (JL)
2252
 
2253
8/22/96 (new feature) Added a new memory allocator for the Macintosh
2254
version of Tcl.  It's quite a bit faster than MetroWerk's version. (RJ)
2255
 
2256
8/26/96 (documentation update) Removed old change bars (for all changes
2257
in Tcl 7.5 and earlier releases) from manual entries. (JO)
2258
 
2259
8/27/96 (enhancement) The exec and open commands behave better and work in
2260
more situations under Windows NT and Windows 95.  Documentation describes
2261
what is still lacking. (CS)
2262
 
2263
8/27/96 (enhancement) The Windows makefiles will now compile even if the
2264
compiler is not in the path and/or the compiler's environment variables
2265
have not been set up. (CS)
2266
 
2267
8/27/96 (configuration improvement) The Windows resource files are
2268
automatically updated when the version/patch level changes.  The header file
2269
now has a comment that reminds the user which other files must be manually
2270
updated when the version/patch level changes. (CS)
2271
 
2272
8/28/96 (new feature) Added file manipulation features (copy, rename, delete,
2273
mkdir) that are supported on all platforms. They are implemented as
2274
subcommands to the "file" command. See the documentation for the "file"
2275
command for more information. (JH)
2276
 
2277
----------------- Released 7.6b1, 8/30/96 -----------------------
2278
 
2279
9/3/96 (bug fix) Simplified code so that standard channels are created
2280
lazily, they are added to an interpreter lazily, and they are never added
2281
to a safe interpreter. (JL)
2282
 
2283
9/3/96 (bug fix) Closing a channel after closing a standard channel, e.g.
2284
stdout, would cause the implicit recreation of that standard channel. (JL)
2285
 
2286
9/3/96 (new feature) Now calling Tcl_RegisterChannel with a NULL
2287
interpreter increments the refcount so that code outside any interpreter
2288
can use channels that are also registered in interpreters, without worrying
2289
that the channel may turn into a dangling pointer at any time. Calling
2290
Tcl_UnregisterChannel with a NULL interpreter only decrements the recount
2291
so that code outside any interpreter can safely declare it is no longer
2292
interested in a channel. (JL)
2293
 
2294
9/4/96 (new features) Two changes to dynamic loading:
2295
    - If the file name is empty in the "load" command and there is no
2296
      statically loaded version of the package, a dynamically loaded
2297
      version will be used if there is one.
2298
    - Tcl_StaticPackage ignores redundant calls for the same package. (JO)
2299
 
2300
9/6/96 (bug fix) Platform specific procedures for manipulating files are
2301
no longer macros and have been prefixed with "Tclp", such as TclpRenameFile.
2302
Unix file code now handles symbolic links and other special files correctly.
2303
The semantics of file copy and file rename has been changed so that if
2304
a target directory exists, the source files will NOT be merged with the
2305
existing files. (JH)
2306
 
2307
9/6/96 (bug fix) If standard channel is NULL, because Tcl cannot connect
2308
to the standard channel, do not increment the refcount. The channel can
2309
be NULL if there is for example no standard input. (JL)
2310
 
2311
9/6/96 (portability improvement) Changed parsing of backslash sequences
2312
like \n to translate directly to absolute values like 0xa instead of
2313
letting the compiler do the translation.  This guarantees that the
2314
translation is done the same everywhere. (JO)
2315
 
2316
9/9/96 (bug fix) If channel is opened and not associated with any
2317
interpreter, but Tcl decides to use it as one of the standard channels, it
2318
became impossible to close the channel with Tcl_Close -- instead you had
2319
to call Tcl_UnregisterChannel. Fixed now so that it's safe to call
2320
Tcl_Close even when Tcl is using the channel as one of the standard ones. (JL)
2321
 
2322
9/11/96 (feature change) The Tcl library is now placed in the Tcl
2323
shared libraries resource.  You no longer need to place the Tcl files
2324
in your applications explicitly.  (RJ)
2325
 
2326
9/11/96 (feature change) Extensions no longer automatically have the
2327
resource fork of the extension opened for it.  Instead you need to
2328
use the tclMacLibrary.c file in your extension.  (RJ)
2329
*** POTENTIAL INCOMPATIBILITY ***
2330
 
2331
9/12/96 (bug fix) The extension loading mechanism on the Macintosh now
2332
looks at the 'cfrg' resource to determine where to load the code
2333
fragment from.  This means FAT fragments should now work. (RJ)
2334
 
2335
9/18/96 (enhancement) The exec and open commands behave better and work in
2336
more situations under Windows 3.X.  Documentation describes what is still
2337
lacking.  (CS)
2338
 
2339
9/19/96 (bug fix) Fixed a panic which would occur if you delete a
2340
non-existent alias before any aliases are created. Now instead correctly
2341
returns an error that the alias is not found. (JL)
2342
 
2343
9/19/96 (bug fix) Slave interpreters could rename aliases and they would
2344
not get deleted when the alias was being redefined. This led to dangling
2345
pointers etc. (JL)
2346
 
2347
9/19/96 (bug fix) Fixed a panic where a hash table entry was being deleted
2348
twice during alias management operations. (JL)
2349
 
2350
9/19/96 (bug fix) Fixed bug in event loop that could cause the input focus
2351
in Tk to get confused during menu traversal, among other problems.  The
2352
problem was related to handling of the "marker" when its event was
2353
deleted. (JO)
2354
 
2355
9/26/96 (bug fix) Windows was losing EOF on a socket if the FD_CLOSE event
2356
happened to precede any left over FD_READ events. Now correctly remembers
2357
seeing FD_CLOSE, so that trailing FD_READ events are not discarded if they
2358
do not contain any data. This allows Tcl to correctly get a zero read and
2359
notice EOF. (JL)
2360
 
2361
9/26/96 (bug fix) Was not resetting READABLE state properly on sockets
2362
under Windows if the driver discarded an FD_READ event because no data was
2363
present. Now correctly resets the state. (JL)
2364
 
2365
9/30/96 (bug fix) Made EOF sticky on Windows sockets, so that fileevent
2366
readable will fire repeatedly until the socket is closed. Previously the
2367
fileevent fired only once. This could lead to never-closed connections if
2368
the Tcl script in the fileevent wasn't closing the socket immediately. (JL)
2369
 
2370
10/2/96 (new feature) Improved the package loader:
2371
    - Added new variable tcl_pkgPath, which holds the default
2372
      directories under which packages are normally installed (each
2373
      package goes in a separate subdirectory of a directory in
2374
      $tcl_pkgPath).  These directories are included in auto_path by
2375
      default.
2376
    - Changed the package auto-loader to look for pkgIndex.tcl files
2377
      not only in the auto_path directories but also in their immediate
2378
      children.  This should make it easier to install and uninstall
2379
      packages (don't have to change auto_path or merge pkgIndex.tcl
2380
      files). (JO)
2381
 
2382
10/3/96 (bug fix) Changed tclsh to look for tclshrc.tcl instead of
2383
tclsh.rc on startup under Windows.  This is more consistent with wish and
2384
uses the right extension. (SS)
2385
*** POTENTIAL INCOMPATIBILITY ***
2386
 
2387
10/8/96 (bug fix) Convertclock does not parse 24-hour times of the
2388
form "hhmm" correctly when hour = 00.  In the parse code, hour must be
2389
>= 100 for minutes to be non-zero.  Thanks to Lint LaCour for this
2390
bug fix. (RJ)
2391
 
2392
10/11/96 (bug fix) Under Windows, the pid command returned the process
2393
handle instead of the process id. (SS)
2394
 
2395
----------------- Released 7.6, 10/16/96 -----------------------
2396
 
2397
10/29/96 (bug fix) Under Windows, sockets would consume 100% CPU time after
2398
the first accept(), due to a typo. (JL)
2399
 
2400
10/29/96 (bug fix) Incorrect refcount management caused standard channels
2401
not to get deleted at process exit or DLL unload time, causing a memory
2402
leak of upwards of 20K each time. (JL)
2403
 
2404
11/7/96 (bug fix) Auto-exec didn't work on file names that contained
2405
spaces. (JO)
2406
 
2407
11/8/96 (bug fix) Fixed core dump that would occur if more than one call
2408
to Tcl_DeleteChannelHandler was made to delete a given channel handler. (JL)
2409
 
2410
11/8/96 (bug fix) Fixed test for return value in Tcl_Seek and Tcl_SeekCmd
2411
to only treat -1 as error, instead of all negative numbers. (JL)
2412
 
2413
11/12/96 (bug fix) Do not blocking waiting for processes at the end of a
2414
pipe during exit cleanup. (JL)
2415
 
2416
11/12/96 (bug fix) If we are in exit cleanup, do not close the system level
2417
file descriptors 0, 1 and 2. Previously they were being closed which is
2418
incorrect, in the embedded case. This led to weird behavior for programs
2419
that want to interpose on I/O through the standard file descriptors (e.g.
2420
Netscape Navigator). (JL)
2421
 
2422
11/15/96 (bug fix) Fixed core dump on Windows sockets due to dependency on
2423
deletion order at exit. Now all socket functions check to see if sockets
2424
are (still) initialized, before calling through function pointers. Before,
2425
they would call and might end up calling unloaded object code. (JL)
2426
 
2427
11/15/96 (bug fix) Fixed core dump in Windows socket initialization routine
2428
if sockets were not installed on the system. Before, it was not properly
2429
checking the result of attempting to load the socket DLL, so it would call
2430
through uninitialized function pointers. (JL)
2431
 
2432
11/15/96 (bug fix) Fixed memory leak in Windows sockets which left socket
2433
DLL handle open and could hold the socket DLL in memory uneccessarily,
2434
until a reboot. (JL)
2435
 
2436
12/4/96 (bug fix) Fixed bug in Macintosh socket code that could result
2437
in lost data if a client was closed too soon after sending data. (RJ)
2438
 
2439
12/17/96 (bug fix) Fixed deadlock bug in Windows sockets due to losing an
2440
event. This was happening because of an interaction between buffering and
2441
nonblocking mode on sockets. Now switched to sockets being blocking by
2442
default, so we are also no longer emulating blocking through a private
2443
event loop. (JL)
2444
 
2445
1/21/97 (performance bug fix) Client TCP connections were slow to create
2446
because getservbyname was always called on the port.  Now this is only
2447
done if Tcl_GetInt fails. (BW)
2448
 
2449
1/21/97 (configuration fix) Made it possible to override TCL_PACKAGE_PATH
2450
during make.  Previously it was only set during autoconf process.
2451
 
2452
1/29/97 (bug fix) Fixed some problems with the clock command that
2453
impacted how dates were scaned after the year 2000. (RJ)
2454
 
2455
----------------- Released 7.6p2, 1/31/97 -----------------------
2456
 
2457
2/5/97 (bug fix) Fixed a bug where in CR-LF translation mode, \r bytes
2458
in the input stream were not being handled correctly. (JL)
2459
 
2460
2/24/97 (bug fix) Fix bug with exec under Win32s not being able to create
2461
stderr file which caused all execs to fail.  Fixed temp file leak under
2462
Win32s.  Fixed optional parameter bug with SearchPath that only happened
2463
under Win32s 1.25. (CCS)
2464
 
2465
----------------------------------------------------------
2466
Changes for Tcl 7.6 go above this line.
2467
Changes for Tcl 7.7 go below this line.
2468
----------------------------------------------------------
2469
 
2470
5/8/96 (new feature) Added Tcl_Ungets C API for putting a sequence of bytes
2471
into a channel's input buffer. This can be used for "push" model channels
2472
where the input is obtained via callbacks instead of by request of the
2473
generic IO code. No Tcl procedure yet. (JL)
2474
 
2475
11/15/96 (new feature) Implemented hidden commands. New C APIs:
2476
        Tcl_HideCommand         -- hides an existing exposed command.
2477
        Tcl_ExposeCommand       -- exposes an existing hidden command.
2478
New tcl APIs:
2479
        interp invokehidden     -- invokes a hidden command in a slave.
2480
        interp hide             -- hides an existing exposed command.
2481
        interp expose           -- exposes an existing hidden command.
2482
        interp hidden           -- returns a list of hidden commands.
2483
The implementation of Safe Tcl now uses the new hidden commands facility
2484
to implement the safe base, instead of deleting the commands from a safe
2485
interpreter. (JL)
2486
 
2487
11/15/96 (new feature) Implemented the safe base, a mechanism for
2488
installing and requesting security policies, purely in Tcl code. Overloads
2489
the package command to also allow an interpreter to "require" a policy. The
2490
following new library commands are provided:
2491
        tcl_safeCreateInterp    -- creates a slave an initializes the
2492
                                   policy mechanism.
2493
        tcl_safeInitInterp      -- initializes an existing slave with the
2494
                                   policy mechanism.
2495
        tcl_safeDeleteInterp    -- deletes a slave and deinitializes the
2496
                                   policy mechanism.
2497
Added a new file to the library, safeinit.tcl, to hold implementation. (JL)
2498
On 7/9/97, removed the policy loading mechanism from the Safe Base. Left
2499
only the Safe Base aliases dealing with auto-loading and source. (JL)
2500
 
2501
12/6/96 (new feature) Implemented Tcl_Finalize, an API that should be
2502
called by a process when it is done using Tcl. This API runs all the exit
2503
handlers to allow them to clean up resources etc. (JL)
2504
 
2505
12/17/96 (new feature) Add an http Tcl script package to the Tcl library.
2506
This package implements the client side of HTTP/1.0; the GET, HEAD,
2507
and POST requests. (BW)
2508
 
2509
1/21/97 (new feature) Added a "marktrusted" subcommand to the "interp" and
2510
to the interpreter object command. It removes the "safe" mark on an
2511
interpreter and disables hard-wired checks for safety in the C sources. (JL)
2512
 
2513
1/21/97 (removed feature) Removed "vwait" from set of commands available in
2514
a safe interpreter. (JL)
2515
 
2516
2/11/97 (new feature, bug fix) http package.  Added -accept to http_config
2517
so you can set the Accept header.  Added -handler option to http_get so
2518
you can supply your own data handler.  Also fixed POST operation to
2519
set the correct MIME type on the request. (BW)
2520
 
2521
----------------------------------------------------------
2522
Changes for Tcl 7.7 go above this line.
2523
Changes for Tcl 8.0 go below this line.
2524
----------------------------------------------------------
2525
 
2526
9/17/96 (bug fix) Using "upvar" it was possible to turn an array element
2527
into an array itself.  Changed to disallow this; it was quirky and didn't
2528
really work correctly anyway. (JO)
2529
 
2530
10/21/96 (new feature) The core of the Tcl interpreter has been replaced
2531
with an on-the-fly compiler that translates Tcl scripts to bytecoded
2532
instructions; a new interpreter then executes the bytecodes. The compiler
2533
introduces only a few minor changes at the level of Tcl scripts. The biggest
2534
changes are to expressions and lists.
2535
    - A second level of substitutions is no longer done for expressions.
2536
      This substantially improves their execution time. This means that
2537
      the expression "$x*4" produces a different result than in the past
2538
      if x is "$y+2". Fortunately, not much code depends on the old
2539
      two-level semantics. Some expressions that do, such as
2540
      "expr [join $list +]" can be recoded to work in Tcl8.0 by adding
2541
      an eval: e.g., "eval expr [join $list +]".
2542
    - Lists are now completely parsed on the first list operation to
2543
      create a faster internal representation. In the past, if you had a
2544
      misformed list but the erroneous part was after the point you
2545
      inserted or extracted an element, then you never saw an error.
2546
      In Tcl8.0 an error will be reported. This should only effect
2547
      incorrect programs that took advantage of behavior of the old
2548
      implementation that was not documented in the man pages.
2549
Other changes to Tcl scripts are discussed in the web page at
2550
http://www.sunlabs.com/research/tcl/compiler.html. (BL)
2551
*** POTENTIAL INCOMPATIBILITY ***
2552
 
2553
10/21/96 (new feature) In earlier versions of Tcl, strings were used as a
2554
universal representation; in Tcl 8.0 strings are replaced with Tcl_Obj
2555
structures ("objects") that can hold both a string value and an internal
2556
form such as a binary integer or compiled bytecodes. The new objects make it
2557
possible to store information in efficient internal forms and avoid the
2558
constant translations to and from strings that occurred with the old
2559
interpreter. There are new many new C APIs for managing objects. Some of the
2560
new library procedures for objects (such as Tcl_EvalObj) resemble existing
2561
string-based procedures (such as Tcl_Eval) but take advantage of the
2562
internal form stored in Tcl objects for greater speed. Other new procedures
2563
manage objects and allow extension writers to define new kinds of objects.
2564
See the manual entries doc/*Obj*.3 (BL)
2565
 
2566
10/24/96 (bug fix) Fixed memory leak on exit caused by some IO related
2567
data structures not being deallocated on exit because their refcount was
2568
artificially boosted. (JL)
2569
 
2570
10/24/96 (bug fix) Fixed core dump in Tcl_Close if called with NULL
2571
Tcl_Channel. (JL)
2572
 
2573
11/19/96 (new feature) Added library procedures for finding word
2574
breaks in strings in a platform specific manner.  See the library.n
2575
manual entry for more information. (SS)
2576
 
2577
11/22/96 (feature improvements) Added support for different levels of
2578
tracing during bytecode compilation and execution. This should help in
2579
tracking down suspected problems with the compiler or with converting
2580
existing code to use Tcl8.0. Two global Tcl variables, traceCompile
2581
and traceExec, can be set to generate tracing information in stdout:
2582
    - traceCompile: 0  no tracing (default)
2583
                    1  trace compilations of top level commands and procs
2584
                    2  trace and display instructions for all compilations
2585
    - traceExec:    0  no tracing
2586
                    1  trace only calls to Tcl procs
2587
                    2  trace invocations of all commands including procs
2588
                    3  detailed trace showing the result of each instruction
2589
traceExec >= 2 provides a one line summary of each called command and
2590
its arguments. Commands that have been "compiled away" such as set are
2591
not shown. (BL)
2592
 
2593
11/30/96 (bug fix) The command "info nameofexecutable" could sometimes
2594
return the name of a directory. (JO)
2595
 
2596
11/30/96 (feature improvements) Changed the code in library/init.tcl
2597
that reads in pkgIndex.tcl so that (a) it reads the files from child
2598
directories before those in the parent, so that the parent gets
2599
precedence, and (b) it doesn't quit if there is an error in a
2600
pkgIndex.tcl file;  instead, it prints an error message on standard
2601
error and continues. (JO)
2602
 
2603
10/5/96 (feature improvements) Partial implementation of binary string
2604
support: the ability for Tcl string values to contain embedded null bytes.
2605
Changed the Tcl object-based APIs to take a byte pointer and length pair
2606
instead of a null-terminated C string. Modified several object type managers
2607
to support binary strings but not, for example, the list type manager.
2608
Existing string-based C APIs are unchanged and will truncate binary
2609
strings. Compiled scripts containing nulls are also truncated. (BL)
2610
 
2611
12/12/96 (feature change) Removed the commands "cp", "mkdir", "mv",
2612
"rm", and "rmdir" from the Macintosh version of Tcl.  They were never
2613
officially supported and their functionality is now available via
2614
the file command. (RJ)
2615
 
2616
----------------- Released 8.0a1, 12/20/96 -----------------------
2617
 
2618
1/7/97 (bug fix) Under Windows, "file stat c:" was returning error instead
2619
of stat for current dir on c: drive.
2620
 
2621
1/10/97 (new feature) Added Tcl_GetIndexFromObj procedure for quick
2622
lookups of keyword arguments. (JO)
2623
 
2624
1/12/97 (new feature) Serial IO channel drivers for Windows and Unix,
2625
available by using Tcl open command to open pseudo-files like "com1:" or
2626
"/dev/ttya".  New option to Tcl fconfigure command for serial files:
2627
"-mode baud,parity,data,stop" to specify baud rate, parity, data bits, and
2628
stop bits.  Serial IO is not yet available on Mac.
2629
 
2630
1/16/97 (feature change) Restored the Tcl7.x "two level substitution
2631
semantics" for expressions. Expressions not enclosed in braces are
2632
implemented, in general, by calling the expr command procedure
2633
(Tcl_ExprObjCmd) at runtime after the Tcl interpreter has already done a
2634
first round of substitutions. This is slow (about Tcl7.x speed) because new
2635
code for the expression is generally compiled each time. However, if the
2636
expression has only variable substitutions (and not command substitutions),
2637
"optimistic" fast code is generated inline. This inline code will fail if a
2638
second round of substitutions is needed (i.e., if the value of a substituted
2639
variable itself requires more substitutions). The optimistic code will
2640
catch the error and back off to call the slower but guaranteed correct
2641
expr command procedure. (BL)
2642
 
2643
1/16/97 (feature improvements) Added Tcl_ExprLongObj and Tcl_ExprDoubleObj
2644
to round out expression-related procedures. (BL)
2645
 
2646
1/16/97 (feature change) Under Windows, at startup the environment variables
2647
"path", "comspec", and "windir" in any capitalization are converted
2648
automatically to upper case.  The PATH variable could be spelled as path,
2649
Path, PaTh, etc. and it makes programming rather annoying.  All other
2650
environment variables are left alone. (CS)
2651
 
2652
1/20/97 (new features) Rewrote the "lsort" command:
2653
    - The new version is based on reentrant merge sort code provided
2654
      by Richard Hipp, so it eliminates the reentrancy and stability
2655
      problems with the old qsort-based implementation.
2656
    - The new version supports a -dictionary option for sorting, and
2657
      it also supports a -index option for sorting lists using one
2658
      element for comparison.
2659
    - The new version is an object command, so it works well with the
2660
      Tcl compiler, especially in conjunction with the new -index
2661
      option.  When the -index option is used, this version of lsort
2662
      is more than 100 times faster than the Tcl 7.6 lsort, which had
2663
      to use the -command option to get the same effect. (JO)
2664
 
2665
1/20/97 (feature improvements) Added the improved debugging support for Tcl
2666
objects prototyped by Karl Lehenbauer .
2667
If TCL_MEM_DEBUG is defined, the object creation calls use Tcl_DbCkalloc
2668
directly in order to record the caller's source file name and line
2669
number. (BL)
2670
 
2671
1/21/97 (removed feature) Desupported the tcl_precision variable: if
2672
set, it is ignored.  Tcl now uses the full 17 digits of precision when
2673
converting real numbers to strings (with the new object system real
2674
numbers are rarely converted to strings so there is no efficiency
2675
disadvantage to printing all 17 digits; the new scheme improves
2676
accuracy and simplifies several APIs). (JO)
2677
*** POTENTIAL INCOMPATIBILITY ***
2678
 
2679
1/21/97 (feature change) Removed the "interp" argument for the
2680
procedures Tcl_GetStringFromObj, Tcl_StringObjAppend, and
2681
Tcl_StringObjAppendObj.  Also removed the "interp" argument for
2682
the updateStringProc procedure in Tcl_ObjType structures.  With
2683
the tcl_precision changes above, these are no longer needed. (JO)
2684
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0a1, but not with Tcl 7.6 ***
2685
 
2686
1/22/97 (bug fix) Fixed http.tcl so that http_reset does not result in
2687
an extra call to the command callback.  In addition, if the transaction
2688
gets a premature eof, the state(status) is "eof", not "ok". (BW)
2689
 
2690
----------------- Released 8.0a2, 1/24/97 -----------------------
2691
 
2692
1/29/97 (feature change) Changed how two digit years are parsed in the
2693
clock command.  The old interface just added 1900 which will seem
2694
broken by the year 2000.  The new scheme follows the POSIX standard
2695
and treats dates 70-99 as 1970-1999 and dates 00-38 as 2000-2038.  All
2696
other two digit dates are undefined. (RJ)
2697
*** POTENTIAL INCOMPATIBILITY ***
2698
 
2699
2/4/97 (bug fix) Fixed bug in clock code that dealt with relative
2700
dates.  Using the relative month code you could get an invalid date
2701
because it jumped into a non-existant day.  (For example, Jan 31
2702
to Feb 31.)  The code now will return the last valid day of the
2703
month in these situations.  Thanks to Hume Smith for sending in
2704
this bug fix.  (RJ)
2705
 
2706
2/10/97 (feature change) Eliminated Tcl_StringObjAppend and
2707
Tcl_StringObjAppendObj procedures, replaced them with Tcl_AppendToObj
2708
and Tcl_AppendStringsToObj procedures.  Added new procedure
2709
Tcl_SetObjLength. (JO)
2710
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2, but not with Tcl 7.6 ***
2711
 
2712
2/10/97 (new feature) Added Tcl_WrongNumArgs procedure for generating
2713
error messages about incorrect number of arguments. (JO)
2714
 
2715
2/11/97 (new feature, bug fix) http package.  Added -accept to http_config
2716
so you can set the Accept header.  Added -handler option to http_get so
2717
you can supply your own data handler.  Also fixed POST operation to
2718
set the correct MIME type on the request. (BW)
2719
 
2720
2/22/97 (bug fix) Fixed bug that caused $tcl_platform(osVersion) to be
2721
computed incorrectly under AIX. (JO)
2722
 
2723
2/25/97 (new feature, feature change) Added support for both int and long
2724
integer objects. Added Tcl_NewLongObj/Tcl_GetLongFromObj/Tcl_SetLongFromObj
2725
procedures and renamed the Tcl_Obj internalRep intValue member to
2726
longValue. Tcl_GetIntFromObj now checks for integer values too large to
2727
represent as non-long integers. Changed Tcl_GetAllObjTypes to
2728
Tcl_AppendAllObjTypes. (BL)
2729
 
2730
3/5/97 (new feature) Added new Tcl_SetListObj procedure to round out
2731
collection of procedures that set the type and value of existing Tcl
2732
objects. (BL)
2733
 
2734
3/6/97 (new feature) Added -global flag for interp invokehidden. (JL)
2735
 
2736
3/6/97 (new feature, feature change) Added isNativeObjectProc field to the
2737
Tcl_CmdInfo structure to indicate (when 1) if the command has an
2738
object-based command procedure. Removed the nameLength arg from
2739
Tcl_CreateObjCommand since command names can't contain null characters. (BL)
2740
 
2741
3/6/97 (bug fix) Fixed bug in "unknown" procedure that caused auto-
2742
loading to fail on commands whose names begin with digits. (JO)
2743
 
2744
3/7/97 (bug fix) Auto-loading now works in Safe Base. Safe interpreters
2745
only accept the Version 2 and onwards tclIndex files. (JL)
2746
 
2747
3/13/97 (bug fix) Fixed core dump due to interaction between aliases and
2748
hidden commands. Bug found by Lindsay Marshall. (JL)
2749
 
2750
3/14/97 (bug fix) Fixed mac bugs relating to time.  The -gmt option
2751
now adjusts the time in the correct direction.  (Thanks to Ed Hume for
2752
reporting a fix to this problem.)  Also fixed file "mtime" etc. to
2753
return times from GMT rather than local time zone.  (RJ)
2754
 
2755
3/18/97 (feature change) Declaration of objv in Tcl_ObjCmdProc function
2756
changed from "Tcl_Obj *objv[]" to "Tcl_Obj *CONST objv[]".  All Tcl object
2757
commands changed to use new declaration of objv.  Naive translation of
2758
string-based command procs to object-based command procs could very easily
2759
have yielded code where the contents of the objv array were changed.  This
2760
is not a problem with string-based command procs, but doing something as
2761
simple as objv[2] = objv[3] would corrupt the runtime stack and cause Tcl to
2762
crash.  Introduced CONST in declaration of objv so that attempted assignment
2763
of new pointer values to elements of the objv array will be caught by the
2764
compiler. (CCS)
2765
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2 ***
2766
 
2767
3/19/97 (bug fix) Fixed panic due to object sharing. The root cause was
2768
that old code was using Tcl_ResetResult instead of Tcl_ResetObjResult. (JL)
2769
 
2770
3/20/97 (new feature) Added a new subcommand for the file
2771
command. file attributes filename can give a list of platform-specific
2772
options (such as file/creator type on the Mac, permissions on Unix) or
2773
set the values of them. Added a new subcommand for the file
2774
command. file nativename name gives back the platform-specific form
2775
for the file. This is useful when the filename is needed to pass to
2776
the OS, such as exec under Windows 95 or AppleScript on the Mac. For
2777
more info, see file.n. (SRP)
2778
 
2779
3/24/97 (removed feature) Removed the tcl_safePolicyPath procedure. Now
2780
the policy path is computed from the auto_path by appending the directory
2781
'policies' to each element. Also fixed several bugs in automatic tracking
2782
of auto_path by computed policy path. (JL)
2783
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2 but not with Tcl 7.6 ***
2784
 
2785
4/8/97 (new feature) If the variable whose name is passed to lappend doesn't
2786
already exist, and there are no value arguments, lappend now creates the
2787
variable with an empty value instead of returning an error. Change suggested
2788
by Tom Tromey. (BL)
2789
 
2790
4/9/97 (feature change) Changed the name of the TCL_PART1_NOT_PARSED flag to
2791
TCL_PARSE_PART1. (BL)
2792
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2 but not with Tcl 7.6 ***
2793
 
2794
4/10/97 (bug fixes) Fixed various compilation-related bugs:
2795
    - "UpdateStringOfCmdName should never be invoked" panic.
2796
    - Bad code generated for expressions not in {}'s inside catch commands.
2797
    - Segmentation fault in some command procedures when two argument
2798
      object pointers refer to the same object.
2799
    - Second level of substitutions were never done for expressions not
2800
      in {}'s that consist of a single variable reference: e.g.,
2801
      "set x 27; set bool {$x}; if $bool {puts foo}" would fail with error.
2802
    - Bad code generated when code storage was grown while compiling some
2803
      expressions: ones with compilation errors or consisting of only a
2804
      variable reference.
2805
    - Bugs involving multiple interpreters: wasn't checking that a
2806
      procedure's code was compiled for the same interpreter as the one
2807
      executing it, and didn't invalidate code on hidden-exposed command
2808
      transitions.
2809
    - "Bad stack top" panic when executing scripts that require a huge
2810
      amount of stack space.
2811
    - Incorrect sharing of code for procedure bodies, and procedure code
2812
      deallocated before last execution of the procedure finished.
2813
    - Fixed compilation of expression words in quotes. For example,
2814
      if "0 < 3" {puts foo}.
2815
    - Fixed performance bug in array set command with large assignments.
2816
    - Tcl_SetObjLength segmentation fault setting length of empty object.
2817
    - If Tcl_SetObjectResult was passed the same object as the interpreter's
2818
      result object, it freed the object instead of doing nothing. Bug fix
2819
      by Michael J. McLennan.
2820
    - Tcl_ListObjAppendList inserted elements from the wrong list. Bug fix
2821
      by Michael J. McLennan.
2822
    - Segmentation fault if empty variable list was specified in a foreach
2823
      command. Bug fix by Jan Nijtmans.
2824
    - NULL command name was always passed to Tcl_CreateTrace callback
2825
      procedure.
2826
    - Wrong string representation generated for the value LONG_MIN.
2827
      For example, expr 1<<31 printed incorrectly on a 32 bit machine.
2828
    - "set {a($x)} 1" stored value in wrong variable.
2829
    - Tcl_GetBooleanFromObj was not checking for garbage after a numeric
2830
      value.
2831
    - Garbled "bad operand type" error message when evaluating expressions
2832
      not surrounded by {}'s. (BL)
2833
 
2834
4/16/97 (new feature) The expr command now has the "rand()" and
2835
"srand()" functions for getting random numbers in expr. (RJ)
2836
 
2837
4/23/97 (bug fix) Fixed core dump in bgerror when the error handler command
2838
deletes the current interpreter. Found by Juergen Schoenwald. (JL)
2839
 
2840
4/23/97 (feature change) The notifier interfaces have been redesigned
2841
to make embedding in applications with external event loops possible.
2842
A number of interfaces in the notifier and the channel drivers have
2843
changed.  Refer to the Notifier.3 and CrtChannel.3 manual entries for
2844
more details. (SS)
2845
*** POTENTIAL INCOMPATIBILITY ***
2846
 
2847
4/23/97 (removed feature) The Tcl_File interfaces have been removed.
2848
The Tcl_CreateFileHandler/Tcl_DeleteFileHandler interfaces now take
2849
Unix fd's and are only supported on the Unix platform.
2850
Tcl_GetChannelFile has been replaced with Tcl_GetChannelHandle.
2851
Tcl_MakeFileChannel now takes a platform specific file handle. (SS)
2852
*** POTENTIAL INCOMPATIBILITY ***
2853
 
2854
4/23/97 (removed feature) The modal timeout interface has been
2855
removed (Tcl_CreateModalTimeout/Tcl_DeleteModalTimeout) (SS)
2856
*** POTENTIAL INCOMPATIBILITY ***
2857
 
2858
4/23/97 (feature change) Channel drivers are now required to correctly
2859
implement blocking behavior when they are in blocking mode. (SS)
2860
*** POTENTIAL INCOMPATIBILITY ***
2861
 
2862
4/23/97 (new feature) Added the "binary" command for manipulating
2863
binary strings. Also, changed the "puts", "gets", and "read" commands
2864
to preserve embedded nulls.  (SS)
2865
 
2866
4/23/97 (new feature) Added tcl_platform(byteOrder) element to the
2867
tcl_platform array to identify the native byte order for the current
2868
host. (SS)
2869
 
2870
4/23/97 (bug fix) Fixed bug in date parsing around year boundaries. (SS)
2871
 
2872
4/24/97 (bug fix) In the process of copying a file owned by another user,
2873
Tcl was changing the owner of the copy back to the owner of the original
2874
file, therefore causing further file operations to fail because the current
2875
user didn't own the copy anymore.  The owner of the copy is now left as the
2876
current user. (CCS)
2877
 
2878
4/24/97 (feature change) Under Windows, don't automatically uppercase the
2879
environment variable "windir" -- it's supposed to be lower case.  (CCS)
2880
 
2881
4/29/97 (new feature) Added namespace support based on a namespace
2882
implementation by Michael J. McLennan of Lucent Technologies. A namespace
2883
encapsulates a collection of commands and variables to ensure that they
2884
won't interfere the commands and variables of other namespaces. The global
2885
namespace holds all global variables and commands. Additional namespaces are
2886
created with the new namespace command. The new variable command lets you
2887
create Tcl variables inside a namespace. The names of Tcl variables and
2888
commands may now be qualified by the name of the namespace containing them.
2889
The key namespace-related commands are summarized below:
2890
    - namespace ?eval? name arg ?arg...?
2891
         Used to define the commands and variables in a namespace.
2892
         Optionally creates the namespace.
2893
    - namespace export ?-clear? ?pattern pattern...?
2894
         Specifies which commands are exported from a namespace. These
2895
         are the ones that can be imported into another namespace.
2896
    - namespace import ?-force? ?pattern pattern...?
2897
         Makes the specified commands accessible in the current namespace.
2898
    - namespace current
2899
         Returns the name of the current namespace.
2900
    - variable name ?value? ?name ?value?...?
2901
         Creates one or more namespace variables. (BTL)
2902
 
2903
5/1/97 (bug fix) Under Windows, file times were reported in GMT.  Should be
2904
reported in local time. (CCS)
2905
 
2906
5/2/97 (feature change) Changed the name of the two Tcl variables used for
2907
tracing bytecode compilation and execution to tcl_traceCompile and
2908
tcl_traceExec respectively. These variables are now documented in the
2909
tclvars man page. (BL)
2910
 
2911
5/5/97 (new feature) Support "end" as the index for "lsort -index". (BW)
2912
 
2913
5/5/97 (bug fixes) Cleaned up the way the http package resets connections (BW)
2914
 
2915
5/8/97 (feature change) Newly created Tcl objects now have a reference count
2916
of zero instead of one. This simplifies C code that stores newly created
2917
objects in Tcl variables or in data structures such as list objects. That C
2918
code must increment the new object's reference count since the variable or
2919
data structure will contain a long-term reference to the object. Formerly,
2920
when new objects started out with reference count one, it was necessary to
2921
decrement the new object's reference count after the store to make sure it
2922
was left with the correct value; this is no longer necessary. (BL)
2923
 
2924
5/9/97 (new feature) Added the Tcl_GetsObj interface that takes an
2925
object reference instead of a dynamic string (as in Tcl_Gets). (SS)
2926
 
2927
5/12/97 (new feature) Added Tcl_CreateAliasObj and Tcl_GetAliasObj C APIs
2928
to allow an alias command to be created with a vector of Tcl_Obj structures
2929
and to get the vector back later. (JL)
2930
 
2931
5/12/97 (feature change) Changed Tcl_ExposeCommand and Tcl_HideCommand to
2932
leave an object result instead of a string result. (JL)
2933
 
2934
5/14/97 (feature change) Improved the handling of the interpreter result.
2935
This is still either an object or a string, but the two values are now kept
2936
consistent unless some C code reads or writes interp->result directly. See
2937
the SetResult man page for details. Removed the Tcl_ResetObjResult
2938
procedure. (BL)
2939
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0a2 ***
2940
 
2941
5/16/97 (new feature) Added "fcopy" command to move data between
2942
channels.  Refer to the manual page for more information.  Removed the
2943
"unsupported0" command since it is obsolete now.  (SS)
2944
 
2945
5/16/97 (new feature) Added Tcl_GetStringResult procedure to allow programs
2946
to get an interpreter's result as a string. If the result was previously set
2947
to an object, this procedure will convert the object to a string. Use of
2948
Tcl_GetStringResult is intended to replace direct access to interp->result,
2949
which is not safe. (BL)
2950
 
2951
5/20/97 (new features) Fixed "fcopy" to return the number of bytes
2952
transferred in the blocking case.  Updated the http package to use
2953
fcopy instead of unsupported0.  Added -timeout and -handler options to
2954
http_get.  http_get is now blocking by default.  It is only non-blocking
2955
if you supply a -command argument. (BW)
2956
 
2957
5/22/97 (bug fix) Fixed several bugs in the "lsort" command having to do
2958
with the -dictionary option and the presence of numbers embedded in the
2959
strings.  (JO)
2960
 
2961
----------------- Released 8.0b1, 5/27/97 -----------------------
2962
 
2963
6/2/97 (bug fix) Fixed bug in startup code that caused a problem in
2964
finding the library files when they are installed in a directory
2965
containing a space in the name. (SS)
2966
 
2967
6/2/97 (bug fix) Fixed bug in Unix notifier where the select mask was
2968
not being cleared under some circumstances. (SS)
2969
 
2970
6/4/97 (bug fix) Fixed bug that prevented creation of Tk widgets in
2971
namespaces. Tcl_CreateObjCommand and Tcl_CreateCommand now always create
2972
commands in the global namespace unless the command names are qualified. Tcl
2973
procedures continue to be created in the current namespace by default. (BL)
2974
 
2975
6/6/97 (new features) Added new namespace API procedures
2976
Tcl_AppendExportList and Tcl_Export to allow C code to get and set a
2977
namespace's export list. (BL)
2978
 
2979
6/11/97 (new feature) Added Tcl_ConcatObj. This object-based routine
2980
parallels the string-based routine Tcl_Concat. (SRP)
2981
 
2982
6/11/97 (new feature) Added Tcl_SetObjErrorCode. This object-based
2983
routines parallels the string-based routine Tcl_SetErrorCode. (SRP)
2984
 
2985
6/12/97 (bug fix) Fix the "unknown" procedure so that wish under Windows
2986
will exec an external program, instead of always complaining "console1 not
2987
opened for writing". (CCS)
2988
 
2989
6/12/97 (bug fix) Fixed core dump experienced by the following simple
2990
script:
2991
        interp create x
2992
        x alias exec exec
2993
        interp delete x
2994
This panic was caused by not installing the new CmdDeleteProc when exec
2995
got redefined by the alias creation step. Reported by Lindsay Marshal (JL)
2996
 
2997
6/13/97 (new features) Tcl objects newly created by Tcl_NewObj now have a
2998
string representation that points to a shared heap string of length 1. (They
2999
used to have NULL bytes and typePtr fields. This was treated as a special
3000
case to indicate an empty string, but made type manager implementations
3001
complex and error prone.) The new procedure Tcl_InvalidateStringRep is used
3002
to mark an object's string representation invalid and to free any storage
3003
associated with the old string representation. (BL)
3004
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl7.6 ***
3005
 
3006
6/16/97 (bug fix) Tcl_ScanCountedElement could leave braces unmatched
3007
if the string ended with a backslash. (JO)
3008
 
3009
6/17/97 (bug fix) Fixed channel event bug where readable events would be
3010
lost during recursive events loops if the input buffers contained
3011
data. (SS)
3012
 
3013
6/17/97 (bug fix) Fixed bug in Windows socket code that didn't
3014
reenable read events in the case where an external entity is also
3015
reading from the socket. (SS)
3016
 
3017
6/18/97 (bug fix) Changed initial setting of the notifier service mode
3018
to TCL_SERVICE_NONE to avoid unexpected event handling during
3019
initialization. (SS)
3020
 
3021
6/19/97 (bug fix/feature change) The command callback to fcopy is now
3022
called in case of errors during the background copy.  This adds a second,
3023
optional argument to the callback that is the error string.  The callback
3024
in case of errors is required for proper cleanup by the user of fcopy. (BW)
3025
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl 7.6 ***
3026
 
3027
6/19/97 (bug fix) Fixed a panic due to the following four line script:
3028
        interp create x
3029
        x alias foo bar
3030
        x eval rename foo blotz
3031
        x alias foo {}
3032
The problem was that the interp code was not using the actual current name
3033
of the command to be deleted as a result of un-aliasing foo. (JL)
3034
 
3035
6/19/97 (feature change) Pass interp down to the ChannelOption and
3036
driver specific calls so system errors can be differentiated from syntax
3037
ones. Changed Tcl_DriverGetOptionProc type. Affects Tcl_GetChannelOption,
3038
TcpGetOptionProc,  TtyGetOptionProc, etc. (DL)
3039
*** POTENTIAL INCOMPATIBILITY ***
3040
 
3041
6/19/97 (new feature) Added Tcl_BadChannelOption for use by by driver
3042
specific option procedures (Set and Get) to return a complete and
3043
meaningful error message. (DL)
3044
 
3045
6/19/97 (bug fixes) If a system call error occurs while doing an
3046
fconfigure on tcp or tty/com channel: return the appropriate error
3047
message (instead of the syntax error one or none). (Fixed for Unix and
3048
most of the Win and Mac drivers). (DL)
3049
 
3050
6/20/97 (feature change) Eval is no longer assumed as the subcommand name
3051
in namespace commands: you must now write "namespace eval nsName {...}".
3052
Abbreviations of namespace subcommand names are now allowed. (BL)
3053
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl7.6 ***
3054
 
3055
6/20/97 (feature change) Changed the errorInfo traceback message for
3056
compilation errors from "invoked from within" to "while compiling". (BL)
3057
 
3058
6/20/97 (bug fixes) Fixed various compilation-related bugs:
3059
    - "UpdateStringOfCmdName should never be called" and
3060
      "UpdateStringOfByteCode should never be called" panics.
3061
    - Segfault in TclObjInterpProc getting procedure name after evaluation
3062
      stack is reallocated (grown).
3063
    - Could not use ":" at end of variable and command names.
3064
    - Bad code generated for while and for commands with test expressions
3065
      enclosed in quotes: e.g., "set i 0; while "$i > 5" {}".
3066
    - Command trace procedures would crash if they did a Tcl_EvalObj that
3067
      reallocated the evaluation stack.
3068
    - Break and continue commands did not reset the interpreter result.
3069
    - The Tcl_ExprXXX routines, both string- or object-based, always
3070
      modified the interpreter result even if there was no error.
3071
    - The argument parsing procedure used by several compile procedures
3072
      always treated "]" as end of a command: e.g., "set a ]" would fail.
3073
    - Changed errorInfo traceback message for compilation errors from
3074
      "invoked from within" to "while compiling".
3075
    - Problem initializing Tcl object managers during interpreter creation.
3076
    - Added check and error message if formal parameter to a procedure is
3077
      an array element. (BL)
3078
 
3079
6/23/97 (new feature) Added "registry" package to allow manipulation
3080
of the Windows system registry.  See manual entry for details. (SS)
3081
 
3082
6/24/97 (feature change) Converted http to a package and added the
3083
http1.0 subdirectory of the Tcl script library.  This means you have
3084
to do a "package require http" to use this, as advertised in the man page. (BW)
3085
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl 7.6 ***
3086
 
3087
6/24/97 (bug fix) Ensure that Tcl_Set/GetVar C APIs, when called without
3088
TCL_LEAVE_ERR_MSG, don't touch the interp result. (DL)
3089
 
3090
6/26/97 (feature change) Changed name of Tcl_ExprStringObj to
3091
Tcl_ExprObj. (BL)
3092
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0b1, but not with Tcl 7.6 ***
3093
 
3094
----------------- Released 8.0b2, 6/30/97 -----------------------
3095
 
3096
7/1/97 (new feature) TCL_BUILD_SHARED flag set in tclConfig.sh
3097
when Tcl has been built with --enable-shared. A new tclLibObjs
3098
make target, echoing the list of the .o's needed to build a tcl
3099
library, is now provided. (DL)
3100
 
3101
7/1/97 (feature change) compat/getcwd.c removed and changed the
3102
only place where getcwd is used so a new USEGETWD flag selects
3103
the use of the replacement "getwd". Adding this flag is recommended
3104
for SunOS 4 (because getcwd on SunOS 4 uses a pipe to pwd(1)!). (DL)
3105
 
3106
7/7/97 (feature change) The split command now supports binary data (i.e.,
3107
null characters in strings). (BL)
3108
 
3109
7/7/97 (bug fix) string first returned the wrong result if the first
3110
argument string was empty. (BL)
3111
 
3112
7/8/97 (bug fix) Fixed core dump in fcopy that could occur when a command
3113
callback was supplied and an error or eof condition caused no background
3114
activity.  A refcount bug triggered a panic in Tcl_ListObjAppendElement. (BW)
3115
 
3116
7/8/97 (bug fix) Relaxed the pattern matching on http_get so you do not
3117
need a trailing path component.  You can now get away with just
3118
http_get sunscript.sun.com                                      (BW)
3119
 
3120
7/9/97 (bug fix) Creating anonymous interpreters no longer smashes existing
3121
commands with names similar to the generated name. Previously creating an
3122
anonymous interpreter could smash an existing command, now it skips until
3123
it finds a command name that isn't being used. (JL)
3124
 
3125
7/9/97 (feature change) Removed the policy management mechanism from the
3126
Safe Base; left the aliases to source and load modules, and to do a limited
3127
form of the "file" command. See entry of 11/15/96. (JL)
3128
 
3129
7/9/97 (bug fixes) Fixed various compilation-related bugs:
3130
    - Line numbers in errorInfo now are the same as those in Tcl7.6 unless
3131
there are compilation errors. Compilation error messages now include the
3132
entire command in error.
3133
    - Trailing ::s after namespace names weren't being ignored.
3134
    - Could not refer to an namespace variable with an empty name using a
3135
name of the form "n::". (BL)
3136
 
3137
7/9/97 (bug fix) Fixed bug in Tcl_Export that prevented you from exporting
3138
from other than the current namespace. (BL)
3139
 
3140
7/9/97 (bug fix) env.test was removing env var needed for proper finding
3141
of libraries in child process. (DL)
3142
 
3143
7/10/97 (bug fixes/new feature) Cleanup in Tcl_MakeSafe. Less information
3144
is leaked to safe interps. Error message fixes for interp sub commands.
3145
Likewise changes in safealias.tcl; tcl_safeCreateInterp can now be called
3146
without argument to generate the slave name (like in interp create). (DL)
3147
 
3148
7/10/97 (bug fixes) Bytecode compiler now generates more detailed
3149
command location information: subcommands as well as commands now have
3150
location information. This means command trace procedures now get the
3151
correct source string for each command in their command parameter. (BL)
3152
 
3153
7/22/97 (bug fixes) Performance improvement in Safe interpreters
3154
handling. Added new mask value to (tclInt.h) Interp.flags record. (DL)
3155
 
3156
7/22/97 (bug fix) Fixed panic in 'interp target {} foo'. This bug
3157
was present since Tcl 7.6. (JL)
3158
 
3159
7/22/97 (bug fix) Fixed bug in compilation of procedures in namespaces: the
3160
procedure's namespace must be used to look up compile procedures, not the
3161
current namespace. (BL)
3162
 
3163
7/22/97 (bug fix) Use of the -channel option of http_get was not setting
3164
the end of line translations mode on the channel, so copying binary data
3165
with the -channel option was corrupting the result on non-unix platforms. (BW)
3166
 
3167
7/22/97 (bug fixes) file commands and ~user (seg fault and other
3168
improper returns). (DL)
3169
 
3170
7/23/97 (feature change) Reenabled "vwait" in Safe Base. (JL)
3171
 
3172
7/23/97 (bug fixes) Fixed two bugs involving read traces on array variables
3173
in procedures: trace procedures were sometimes not called, and reading
3174
nonexistant array elements didn't create undefined element variables that
3175
could later be defined by trace procedures. (BL)
3176
 
3177
7/24/97 (bug fix) Windows memory allocation performance was
3178
superlinear in some cases.  Made the Mac allocator generic and changed
3179
both the Mac and Windows platforms to use the new allocator instead of
3180
malloc and free. (SS)
3181
 
3182
7/24/97 - 8/12/97 (bug fixes/change of features) Completely revamped safe
3183
sourcing/loading (see safe.n) to hide pathnames, use virtual
3184
paths tokens instead, improved security in several respects and made it
3185
more tunable. Multi level interp loading can work too now. Package auto
3186
loading now works in safe interps as long as the package directory is in
3187
the auto_path (no deep crawling allowed in safe interps). (DL)
3188
*** POTENTIAL INCOMPATIBILITY with previous alpha and beta releases ***
3189
 
3190
7/24/97 (bug fixes) Made Tcl_SetVar* and Tcl_NewString* treat a NULL value
3191
as an empty string. (This fixes hairy crash case where you would crash
3192
because load command for other interps assumed presence of
3193
errorInfo...). (DL)
3194
 
3195
7/28/97 (bug fix) Fixed pkg_mkIndex to understand namespaces.  It will
3196
use the export list of a namespace and create auto_index entries for
3197
all export commands.  Those names are in their fully qualified form in the
3198
auto_index.  Therefore, I tweaked unknown to try both $cmd and ::$cmd.
3199
Also fixed pkg_mkIndex so you can have "package require" commands inside
3200
your packages.  These commands are ignored, which is mostly ok except
3201
when you must load another package before loading yours because of
3202
linking dependencies. (BW)
3203
 
3204
7/28/97 (bug fix) A variable created by the variable command now persists
3205
until the namespace is destroyed or the variable is unset. This is true even
3206
if the variable has not been initialized; these variables used to be
3207
destroyed if an error occurred when accessing them. In addition, the "info
3208
vars" command lists uninitialized namespace variables, while the "info
3209
exists" command returns 0 for them. (BL)
3210
 
3211
7/29/97 (feature change)  Changed the http package to use the ::http
3212
namespace. http_get renamed to http::geturl, http_config renamed to
3213
http::config, http_formatQuery renamed to http::formatQuery.
3214
It now provides the 2.0 version of the package.
3215
The 1.0 version is still available with the old names.
3216
*** POTENTIAL INCOMPATIBILITY with Tcl 8.0b2 but not with Tcl 7.6 ***
3217
 
3218
7/29/97 (bug fix, new feature) Tcl_Main now uses Tcl objects internally to
3219
preserve NULLs in commands and command output. Added new API procedure
3220
Tcl_RecordAndEvalObj that resembles Tcl_RecordAndEval but takes an object
3221
containing a command. (BL)
3222
 
3223
7/30/97 (bug fix) Tcl freed strings in the environ array even if it
3224
did not allocate them. (SS)
3225
 
3226
7/30/97 (bug fix) If a procedure is renamed into a different namespace, it
3227
now executes in the context of that namespace. (BL)
3228
 
3229
7/30/97 (bug fix) Prevent renaming of commands into and from namespaces as
3230
part of hiding them. (JL)
3231
 
3232
7/31/97 (feature change) Moved the history command from C to tcl.
3233
This uses the ::history namespace.  The "words" and "substitute" options
3234
are no longer supported.  In addition, the "keep" option without a value
3235
returns the current keep limit.  There is a new "clear" option.
3236
The unknown command now supports !! again. (BW)
3237
*** POTENTIAL INCOMPATIBILTY  ***
3238
 
3239
7/30/97 (bug fix) Made sure that a slave can not fool the master into
3240
hiding the wrong command. Made sure we don't crash in hiding + namespaces
3241
issues. (DL)
3242
 
3243
8/4/97 (bug fix) Concat, eval, uplevel, and similar commands were
3244
incorrectly trimming trailing space characters from their arguments
3245
even when the space characters were preceded by a backslash. (JO)
3246
 
3247
8/4/97 (bug fix) Removed the hard link between bgerror and tkerror.
3248
Only bgerror is supported in tcl core. Tk will still look for a
3249
tkerror but using regular tcl code for that feature. (DL)
3250
*** POTENTIAL INCOMPATIBILTY with code relying on the hard link ***
3251
 
3252
8/6/97 (bug fix) Reduced size required for compiled bytecodes by using a
3253
more compact encoding for the command pc-to-source map. (BL)
3254
 
3255
8/6/97 (new feature) Added support for additional compilation and execution
3256
statistics when Tcl is compiled with the TCL_COMPILE_STATS flag. (BL)
3257
 
3258
8/7/97 (bug fix) Expressions not in {}s that have a comparison operator as
3259
the topmost operator must be compiled out-of-line (call the expr cmd at
3260
runtime) to properly support expr's two-level substitution semantics. An
3261
example is "set a 2; set b {$a}; puts [expr $b == 2]". (BL)
3262
 
3263
8/11/97 (bug fix) The catch command would sometimes crash if a variable name
3264
was given and the bytecode evaluation stack was grown when executing the
3265
argument script. (BL)
3266
 
3267
8/12/97 (feature change) Reinstated the variable tcl_precision to control
3268
the number of digits used when floating-point values are converted to
3269
strings, with default of 12 digits.  However, had to make tcl_precision
3270
shared among all interpreters (except that safe interpreters can't
3271
modify it).  This makes the Tcl 8.0 behavior almost identical to 7.6
3272
except that the default precision is 12 instead of 6. (JO)
3273
*** POTENTIAL INCOMPATIBILITY ***
3274
 
3275
----------------- Released 8.0, 8/18/97 -----------------------
3276
 
3277
8/19/97 (bug fix) Minimal fix for glob -nocomplain bugs:
3278
"glob -nocomplain unreadableDir/*" was generating an anonymous
3279
error. More in depth fixes will come with 8.1. (DL).
3280
 
3281
8/20/97 (bug fix) Removed check for FLT_MIN in binary command so
3282
underflow conditions are handled by the compiler automatic
3283
conversions. (SS)
3284
 
3285
8/20/97 (bug fixes) Fixed several compilation-related bugs:
3286
    - Array cmd wasn't detecting arrays that, while compiled, do not yet
3287
      exist (e.g., are marked undefined since they haven't been assigned
3288
      to yet).
3289
    - The GetToken procedure in tclCompExpr.c wasn't recognizing properly
3290
      whether an integer token was invalid. For example, "0x$" is not
3291
      a valid integer.
3292
    - Performance bug in TclExecuteByteCode: the size of its stack frame
3293
      was reduced by over 20% by moving errorInfo code elsewhere.
3294
    - Uninitialized memory read error in tclCompile.c. (BL)
3295
 
3296
8/21/97 (bug fix) safe::interpConfigure now behave like Tk widget's
3297
configure : it changes only the options you provide and you can get
3298
the current value of any single option. New ?-nested boolean? and
3299
?-statics boolean? for all safe::interp* commands but we still
3300
accept (upward compatibility) the previously defined non valued
3301
flags ?-noStatics? and ?-nestedLoadOk?. Improved the documentation. (DL).
3302
 
3303
8/22/97 (bug fix) Updated PrintDbl.3 to reflect the fact that the
3304
tcl_precision variable is still used and that it is now shared by all
3305
interpreters. (BL)
3306
 
3307
8/25/97 (bug fix) Fixed array access bug in IllegalExprOperandType
3308
procedure in tclExecute.c: it was not properly supporting the || and &&
3309
operators. (BL)
3310
 
3311
8/27/97 (bug fix) In cases where a channel handler was created with an
3312
empty event mask while data was still buffered in the channel, the
3313
channel code would get stuck spinning on a timer that would starve
3314
idle handlers.  This mostly happened in Tk when reading from stdin. (SS)
3315
 
3316
9/4/97 (bug fix) Slave interps now inherit the maximum recursion limit
3317
of their parent instead of starting back at the default. {nb: this still
3318
does not prevent stack overflow by multi-interps recursion or aliasing} (DL)
3319
 
3320
9/11/97 (bug fix) An uninitialized variable in Tcl_WaitPid caused
3321
pipes to fail to report eof properly under Windows. (SS)
3322
 
3323
9/12/97 (bug fix) "exec" was misidentifying some DOS executables as not
3324
executable. (CCS)
3325
 
3326
9/14/97 (bug fix) Was using the wrong structure in sizeof operation in
3327
tclUnixChan.c. (JL)
3328
 
3329
9/15/97 (bug fix) Fixed notifier to break out of do-one-event loop if
3330
Tcl_WaitForEvent returns 1, so that callers of Tcl_DoOneEvent will get
3331
a chance to check whether the event just handled is significant. This
3332
affected mainly recursive calls to Tcl_VWaitCmd; these did not get a
3333
chance to notice that the variable they were waiting for has been set
3334
and thus they didn't terminate the vwait. (JL, DL, SS)
3335
 
3336
9/15/97 (bug fix) Alignment problems in "binary format" would cause a
3337
crash on some platforms when formatting floating point numbers. (SS)
3338
 
3339
9/15/97 (bug fix) Fixed bug in Macintosh socket code.  Now passes all
3340
tests in socket.test that are not platform specific. (Thanks to Mark
3341
Roseman for the pointer on the fix.)  (RJ)
3342
 
3343
9/18/97 (bug fix) Fixed bug -dictionary option of lsort that could
3344
cause the compare function to run off the end of an array if the
3345
number only contained 0's. (Thanks to Greg Couch for the report.) (RJ)
3346
 
3347
9/18/97 (bug fix) TclFinalizeEnvironment was not cleaning up
3348
properly. (DL, JI)
3349
 
3350
9/18/97 (bug fix) Fixed long-standing bug where an "array get" command
3351
did not trigger traces on the array or its elements. (BL)
3352
 
3353
9/18/97 (bug fixes) Fixed compilation-related bugs:
3354
    - Fixed errorInfo traceback information for toplevel coomands that
3355
      contain nested commands.
3356
    - In the expr command, && and || now accept boolean operands as well
3357
      as numeric ones. (BL)
3358
 
3359
9/22/97 (bug fix) Fixed bug that prevented translation modes from being
3360
set independently for input and output on sockets if input was "auto". (JL)
3361
 
3362
9/24/97 (bug fix) Tcl_EvalFile(3) and thus source(n) now works fine on
3363
files containing NUL chars. (DL)
3364
 
3365
9/26/97 (bug fix) Fixed use of uninitialized memory in the environ array
3366
that later could cause random core dumps. Applies to all platforms. (JL)
3367
 
3368
9/26/97 (bug fix) Fixed use of uninitialized memory in socket address data
3369
structure under some circumstances. This could cause random core dumps.
3370
This applies only to Unix. (JL)
3371
 
3372
9/26/97 (bug fix) Opening files on PC-NFS volumes would cause a hang
3373
until the system timed after the file was closed. (SS)
3374
 
3375
10/6/97 (bug fix) The join(n) command, though objectified, was loosing
3376
NULs in the joinString and in list elements after the 2nd one.
3377
Now you can "join $list \0" for instance. (DL)
3378
 
3379
10/9/97 (bug fix) Under windows, if env(TMP) or env(TEMP) referred to a
3380
non-existent directory, exec would fail when trying to create its temporary
3381
files. (CCS)
3382
 
3383
10/9/97 (bug fix) Under mac and windows, "info hostname" would crash if
3384
sockets were installed but the hostname could not be determined anyhow.
3385
Tcl_GetHostName() was returning NULL when it should have been returning
3386
an empty string. (CCS)
3387
 
3388
10/10/97 (bug fix) "file attribute /" returned error on windows. (CCS)
3389
 
3390
10/10/97 (bug fix) Fixed the auto_load procedure to handle procedures
3391
defined in namespaces better.  Also fixed pgk_mkIndex so it sees procedures
3392
defined in nested namespaces.  Index entries are still only made for
3393
exported procedures. (BW)
3394
 
3395
10/13/97 (bug fix) On unix, for files with unknown group or owner
3396
attributes, querying the "file attributes" would return an error rather than
3397
returning the group's or owner's id number, although tha command accepts
3398
numbers when setting the file's group or owner.  (CCS)
3399
 
3400
10/22/97 (bug fix) "fcopy" did not eval the callback script at the
3401
global scope. (SS)
3402
 
3403
10/22/97 (bug fix) Fixed the signature of the CopyDone callback used in
3404
the http package(s) so they can handle error cases properly. (BW)
3405
 
3406
10/28/97 (bug fixes) Fixed a problem where lappend would free the Tcl object
3407
in a variable if a Tcl_ObjSetVar2 failed because of an error calling a trace
3408
on the variable. (BL)
3409
 
3410
10/28/97 (bug fix) Changed binary scan to properly handle sign
3411
extension of integers on 64-bit or larger machines. (SS)
3412
 
3413
11/3/97 (bug fixes) Fixed several bugs:
3414
    - expressions such as "expr ($x)" must be compiled out-of-line
3415
      (call the expr command procedure at runtime) to ensure the correct
3416
      behavior when "$x" is an expression such as "5+10".
3417
    - "array set a {}" now creates a new array var with an empty array
3418
      value if the var didn't already exist.
3419
    - "lreplace $foo end end" no longer returns an error (just an empty
3420
      list) if foo is empty.
3421
    - upvar will no longer create a variable in a namespace that refers
3422
      to a variable in a procedure.
3423
    - deleting a command trace within a command trace callback would
3424
      make the code that calls traces to reference freed memory.
3425
    - significantly sped up "string first" and "string last" (fix from
3426
      darrel@gemstone.com).
3427
    - seg fault in Tcl_NewStringObj() when a NULL is passed as the byte
3428
      pointer argument and Tcl is compiled with -DTCL_MEM_DEBUG.
3429
    - documentation and error msg fixes. (BL)
3430
 
3431
11/3/97 (bug fix) Fixed a number of I/O bugs related to word sizes on
3432
64-bit machines. (SS)
3433
 
3434
11/6/97 (bug fix) The exit code of the first process created by Tcl
3435
on Windows was not properly reported due to an initialization
3436
problem. (SS)
3437
 
3438
----------------- Released 8.0p1, 11/7/97 -----------------------
3439
 
3440
11/19/97 (bug fix) Fixed bug in linsert where it sometimes accidently
3441
cleared out a shared argument list object. (BL).
3442
 
3443
11/19/97 (bug fix) Autoloading in namespaces was not working properly.
3444
auto_mkindex is still not really namespace aware but most common
3445
cases should now be handled properly (see init.test). (BW, DL)
3446
 
3447
11/20/97 (enhancement) Made the changes required by the new Apple
3448
Universal Headers V.3.0, so that Tcl will compile with CW Pro 2.
3449
 
3450
11/24/97 (bug fix) Fixed tests in clock test suite that needed the
3451
-gmt flag set.  Thanks to Jan Nijtmans for reporting the problem. (RJ)
3452
 
3453
----------------- Released 8.0p2, 11/25/97 -----------------------
3454
 
3455
12/3/97 (bug fix/optimization) Removed uneeded and potentially dangerous
3456
instances of double evaluations if "if" and "expr" statements from
3457
the library files. It is recommended that unless you need a double
3458
evaluation you always use "expr {...}" instead of "expr ..." and
3459
"if {...} ..." instead of "if ... ...". It will also be faster
3460
thanks to the byte compiler. (DL)
3461
 
3462
---- Shipped as part of the plugin2.0b5 as 8.0p2Plugin1, Dec 8th 97 ----
3463
 
3464
12/8/97 (bug fix) Need to protect the newly accepted channel in an
3465
accept callback on a socket, otherwise the callback may close it and
3466
cause an error, which would cause the C code to attempt to close the
3467
now deleted channel. Bumping the refcount assures that the channel sticks
3468
around to be really closed in this case. (JL)
3469
 
3470
12/8/97 (bug fix) Need to protect the channel in a fileevent so that it
3471
is not deleted before the fileevent handler returns. (CS, JL)
3472
 
3473
12/18/97 (bug fix) In the opt argument parsing package: if the description
3474
had only flags, the "too many arguments" case was not detected. The default
3475
value was not used for the special "args" ending argument. (DL)
3476
 
3477
1/15/98 (improvement) Moved common part of initScript in common file.
3478
Moved windows specific initialization to init.tcl so you can initialize
3479
Tcl in windows without having to call Tcl_Init which is now only
3480
searching for init.tcl {back ported from 8.1}. (DL)
3481
 
3482
---- Shipped as part of the plugin as 8.0p2Plugin2, Jan 15th 98 ----
3483
 
3484
5/27/98 (bug fix) Windows socket driver did not notice new data arriving
3485
on nonblocking sockets until the event loop was entered. (SS)
3486
 
3487
5/27/98 (bug fix) Windows socket driver used FIONREAD, which is not
3488
supported correctly by WinSock. (SS)
3489
 
3490
6/9/98 (bug fix) Generic channel code failed to report readable file
3491
events on buffered data that was left behind by a gets or read that
3492
did not consume all available data. (SS)
3493
 
3494
6/18/98 (bug fix) Compilation of loop expressions was too aggressive
3495
and incorrectly inlined non-literal expressions. (SS)
3496
 
3497
6/18/98 (bug fix) "info var" and "info locals" incorrectly reported
3498
the existence of compiler temporary variables. (SS)
3499
 
3500
6/18/98 (bug fix) Dictionary sorting used signed character
3501
comparisons. (SS)
3502
 
3503
6/18/98 (bug fix) Compile procs corrupted the exception stack in some
3504
cases. (SS)
3505
 
3506
6/18/98 (bug fix) Array set had erratic behavior when initializing a
3507
variable from an empty value list. (SS)
3508
 
3509
6/18/98 (bug fix) The Windows registry package had a bad bounds check
3510
that could lead to a crash. (SS)
3511
 
3512
6/18/98 (bug fix) The foreach compile proc did not correctly handle
3513
non-local variable references. (SS)
3514
 
3515
6/25/98 (new features) Added name resolution hooks to support [incr Tcl].
3516
There are new internal Tcl_*Resolver* APIs to add, query and remove the hooks.
3517
With this changes it should be possible to dynamically load [incr Tcl]
3518
as an extension. (MM)
3519
 
3520
7/1/97 (bug fix) The commands "info args, body, default, procs" did
3521
not correctly handle imported procedures. (RJ)
3522
 
3523
7/6/98 (improvement) pkg_mkIndex now implements the "package require"
3524
command.  This makes it possible to create index files for packages
3525
that require another package and then execute code from that package in
3526
their file. Previously, this would throw an error because the required
3527
package had not been loaded.  The -nopkgrequied flag is provided to
3528
revert back to the old functionality. (EMS)
3529
 
3530
7/6/98 (improvement) back-ported the -direct flag from 8.1 into
3531
pkg_mkIndex.  This results in pkgIndex.tcl files that contain direct
3532
source or load commands instead of tclPkgSetup commands. (EMS)
3533
 
3534
7/6/98 (improvement) made changes to the AuxData items structures to support
3535
storage of compiled scripts on disk. Also some related minor changes in
3536
the compilation and execution engine. (EMS)
3537
 
3538
6/4/98 (enhancement) Added new internal routines to support inserting
3539
and deleting from the stat, access, and open-file-channel mechanisms.
3540
TclAccessInsertProc, TclStatInsertProc, & TclOpenFileChannelInsertProc
3541
insert pointers to such routines; TclAccessDeleteProc, TclStatDeleteProc,
3542
& TclOpenFileChannelDeleteProc delete pointers to such routines.  See
3543
the file generic/tclIOUtils.c for more details. (SKS)
3544
 
3545
7/1/98 (enhancement) Added a new internal C variable
3546
tclPreInitScript.  This is a pointer to a string that may hold an
3547
initialization script; If this pointer is non-NULL it is evaluated in
3548
Tcl_Init() prior to the built-in initialization script defined in the
3549
file generic/tclInitScript.h.  (SKS)
3550
 
3551
7/6/98 (bug fix) Removed dead code in PlatformInitExitHandler so that
3552
the TCL_LIBRARY value can be safely patched in binaries. (BW)
3553
 
3554
7/24/98 (enhancement) Incorporated a new version of auto_mkindex that
3555
can support the [incr Tcl] class structures.  This version will index
3556
all procedures in a source file, not just those where "proc" starts
3557
at the beginning of the line.  If you want the old behavior, use the
3558
auto_mkindex_old procedure. (MM)
3559
 
3560
7/24/98 (feature change) Changed the Windows registry key to be
3561
HKEY_LOCAL_MACHINE\Software\Scriptics\Tcl\8.0, and to store the path
3562
in the default value instead of "Root".  Also, this key can be
3563
specified at compile time in case Tcl is being used in a different
3564
context where it needs an alternate library path from the standard Tcl
3565
installation. (SS)
3566
 
3567
7/24/98 (feature change) Changed the search order for init.tcl.  The
3568
tcl_library variable can now be set before calling Tcl_Init to avoid
3569
doing any searches.  If it isn't set, then Tcl checks
3570
env(TCL_LIBRARY), the static value set at compile time, an install
3571
directory relative to the executable, a source directory relative to
3572
the executable, and a tcl directory relative to the source heirarchy
3573
containing the executable.  See the comment at the top of
3574
generic/tclInitScript.h for more details. (SS)
3575
 
3576
7/27/98 (config change) Changed the use of the DBGX flag in configure.in
3577
and the makefile to be TCL_DBGX.  Users of tclConfig.sh may need to pass
3578
this through their configure files with AC_SUBST. (BW)
3579
 
3580
729/98 (bug fix) Changed [info body] to return a copy of the body of a
3581
compiled procedure instead of the body itself, to avoid invalidation
3582
of the internal rep and loss of the byte-codes. (EMS)
3583
 
3584
8/5/98 (bug fix) The platform init code could walk off the end of a
3585
buffer when reading the PkgPath registry value on Windows. (SS)
3586
 
3587
8/5/98 (Windows makefile change) Introduced a set of macros to deal with
3588
exporting symbols when compiling DLLS on Windows. See win/README for
3589
details. (EMS)
3590
 
3591
8/5/98 (addendum) Added a second Windows registry key under
3592
HKEY_LOCAL_MACHINE\Software\Scriptics\Tcl\8.0, named "pkgPath".
3593
This is a multi-string value used to initialize the tcl_pkgPath
3594
variable. This is required if extension DLLs are in architecture specific
3595
subdirectories. (SS)
3596
 
3597
8/6/98 (new feature) Added tcl_findLibrary to init.tcl for use by
3598
extensions, including Tk.  This searches in a canonical way for
3599
an extensions library directory and initialization file. (BW)
3600
 
3601
8/10/98 (bug fix) Imported commands used to get lost if the target
3602
of the import was redefined.  Tcl_CreateCommand and Tcl_CreateObjCommand
3603
were updated to restore import links. (Note that if you rename a command,
3604
the import links move to the new name, and if you delete a command then
3605
the import links get lost. These semantics have not changed.) (MC)
3606
 
3607
-------- Released 8.0.3 to the Tcl Consortium CD-ROM project, 8/10/98 ------

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.