-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCHANGES.html
506 lines (444 loc) · 18.3 KB
/
CHANGES.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
<!-- @(#) $Header: /cvsroot/otcl-tclcl/otcl/CHANGES.html,v 1.52 2009/12/30 20:08:12 tom_henderson Exp $-->
<html>
<head><title>OTcl Change Log</title></head>
<body>
<h1>Change History since version 0.96 (otcl)</h1>
<hr>
<h3>otcl-1.14
<b>Released Sat Oct 29 2011</h3>
<p> (Major change is to update for tcl-8.5 changes, contributed from Amir
Habibi ([email protected])) TCL 8.5.3 has several
fundamental internal and API changes that render OTCL's use of its low level
data structures and API syntactically and semnatically incompatible. The
major changes are:
<ul>
<li>Variables are kept in a new internal hashtable type named VarInHash.
Majority of hashtable API functions do not take this into consideration and
lead to segmentation faults. Unfortunately majority of the potential
API functions are defined as static in original TCL code under
generic/tclVar.c and we have to redefine them in OTCL code.
<ul>CallFrame.varTablePtr doesn't any longer refer to a string based hashtable.
The new type is TclVarHashtable that encapsulates a VarInHash type
hashtable (table) along with a namespace (nsPtr). It doesn't need to be
initialized as TCL engin will allocate it if a local variable is to be defined.
<li>Commands are parsed into object-based and string-based functions in
Tcl_CmdInfo and clientData is not any longer guaranteed to be iof (Proc *) type.
</ul>
<p>Changes made in otcl1-13 to make it compatible with TCL 8.5.3 and
hopefully later versions are as follows:
(Referenced line numbers are with regards to the new version)
<ul>
<li>0059-0064: Modified to reflect the change in the CallFrame. it also
defines TCL_VERSION_8_5_OR_HIGHER to simplify changes.
<li> 0069-0083: Define few Tcl_xxx macros to make the changes as clean as
possible. These macros are defined for pre and post TCL 8.5.3
<li> 0587-0597: AddMethod is supposed to keep a copy of a Tcl_CmdInfo
data structure after TCL engine has parsed the tcl code. ocd input argument
is addded to the prototype to deal with object-based ClientData or
the (Proc *) of the tcl procedure. For internal Object and Class objects
only string-based information is needed by OTCL. Based on this change,
calls to AddMethod in the following lines are modified:
1418-1423, 1845-1849, 1945, 1954
<li>0609-0612: Apparently TCL calls the delete function on the
Tcl_CmdInfo and we don't need to call it again otherwise glibc panics
b/c of double free call on the same pointer.
(I didn't dig into this one and my fix may cause a memory leak)
<li>0732-0737: ListKeys is used for dumping keys in all hashtables and
since the variables has is no longer a string hash, this functions is
slightly modified to reflect this change. Since TCL doesn't make VarHash
related functions available to public, we can't automatically recognize a
VarInHash type and I resorted to adding a new input argument, isVarHash,
to explicitly pass the flag to this function. Based on this change,
calls to Listkeys in the following lines are modified:
1372, 1388, 1804
<li>0784: Modified to reflect object-based versus string-based
functions use of clientData and objClientData in Tcl_CmdInfo respectively.
<li>0920: VarTablePtr doesn't need to be initialized in TCL 8.5.3 and the
call to Tcl_InitHashTable for older versions is added to
Tcl_VarHashInitilize macro.
<li> 0949-0952: Modified to initialize additional fields in CallFrame.
<li>1004: Modified to cover the cases where varTablePtr remains null during
the lifetime of the object.
<li> 1008-1015: Modified to reflect changes in varTablePtr
<li>1021-1035: This block of code is no longer needed as in TCL 8.5.3 hPtr
is removed Var structure and instead VarInHash encapsualtes Var and
Tcl_HashEntry. (This may need further investigation !!!)
<li>1036-137: Modified to cover the cases where varTablePtr remains
null during the lifetime of the object.
<li>1069-1071: Modified to use macros that deal with different ways of
initialization of varTablePtr in TCL 8.5.3 and older versions.
<li>1208-1210: Modified to use macros that deal with different ways of
initialization of varTablePtr in TCL 8.5.3 and older versions.
<li>1211: Modified to clarify the assignment. This is not related to changes
for TCL 8.5.3
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&package_id=22199">otcl-1.13</a>
<b>Released Sat Mar 10 2007</h3>
<li> Refresh packages, Sun OS compilation patch </li>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&package_id=22199">otcl-1.12</a>
<b>Released Sat Sep 24 2006</h3>
<li> Refresh packages </li>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&package_id=22199&release_id=364716">otcl-1.11</a>
<b>Released Wed Oct 19 21:04:00 PDT 2005</h3>
<ul>
<li> One change from otcl-1.10-- reverting the removal of X libs and headers from the configure files, to support building on Cygwin.
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&package_id=22199&release_id=360698">otcl-1.10</a>
<b>Released Sun Oct 2 15:00:00 PDT 2005</h3>
<ul>
<p>
<li>
<b><a href="http://www.tomh.org">[tomh]</a></b> <b>Mon Sep 26 21:58:00 PDT 2005</b></li>
<br> Bumping up version numbers: configure.in.TclCL, configure.in.tcl, configure.in.tk
</ul>
<ul>
<p>
<li>
<b><a href="http://www.tomh.org">[tomh]</a></b> <b>Sun Sep 25 22:22:00 PDT 2005</b></li>
<br> Remove configure.in.Tcl because it is in the way for HFS+ file systems. Slight mod to the Tcl include path for Fedora Core 4
</ul>
<ul>
<p>
<li>
<b><a href="http://www.tomh.org">[tomh]</a></b> <b>Tue Sep 6 21:53:00 PDT 2005</b></li>
<br> Patch for Mac OS X (XCode 2.1). Contributed by Francesco Gringoli.
</ul>
<ul>
<p>
<li>
<b><a href="http://www.tomh.org">[tomh]</a></b> <b>Wed Aug 31 18:54:00 PDT 2005</b></li>
<br> patches for Debian pre-installed Tcl/Tk, and for building with -Wall
and -Werror on gcc-4.0.1 (mainly autoconf fixes). Contributed by Georg
Wittenburg and Mathieu Lacage, respectively.
</ul>
<ul>
<p>
<li>
<b><a href="http://www.isi.edu/~xuanc/">[xuanc]</a></b> <b>Tue Feb 10 21:07:17 PST 2004</b></li>
<br> Change the default versions in conf/configure.in.{tcl,tk,otcl,TclCL}
</ul>
<ul>
<li><b><a href="http://www.isi.edu/~johnh/">[johnh]</a></b> <b>Tue Feb 10 17:16:59 PST 2004</b></li>
<br> Change configure support for Fedora's /usr/share/tcl8.3.
</ul>
<hr>
<h3>
<a href="http://sourceforge.net/project/showfiles.php?group_id=30174&package_id=22199&release_id=298323">otcl-1.9</a>
<b>Released Wed Jan 19 11:55:01 PST 2005</h3>
<hr>
<h3>
<a href="http://sourceforge.net/project/showfiles.php?group_id=30174&package_id=22199&release_id=208746">otcl-1.0a9[OLD]/otcl-1.8[NEW]</a>
<b>Released Fri Jan 9 12:04:50 PST 2004 </h3>
<ul>
<li><b><a href="http://www.isi.edu/~xuanc/">[xuanc]</a></b> <b>Tue Jul 29 11:16:14 PDT 2003
</b></li>
<br>
Changes to make otcl build with tcl/tk 8.4.4.
<ul>
<li>Define macros CONST84 and CONST84_RETURN in otcl.h
<li>Change char* to CONST84 char* (or CONST84_RETRUN char * if it is a
function return) in otcl.c
<li>test hangs for lib/test.tcl (autoload), see comments in lib/test.tcl
</ul>
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&release_id=83951">otcl-1.0a8[OLD]/otcl-1.7[NEW]</a>
<b>Released on Wed Apr 10 14:12:36 PDT 2002</h3>
<ul>
<li><b><a href="http://sourceforge.net/users/lloydlim/">[lloydlim]</a></b>
<b>Thu Aug 30 00:55:33 PDT 2001</b></li>
Changes to makefile.vc:
<ul>
<li>Now it will actually work with a standard Visual C++ installation.
<li>Added flexibility in determining location of Tcl/Tk directories.
<li>Updated for Tcl/Tk 8.3.3.
<li>Updated for new Tcl/Tk static build support. See Tcl patch #456759 and
Tk patch #456761.
<li>Eliminated warning messages.
</ul>
<p>
<li><b><a href="http://www.isi.edu/~johnh/">[johnh]</a></b> <b>Tue Jun 26 11:49:20 PDT 2001</b></li>
<br> Updated README.html with more details about finding tclInt.h.
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&release_id=49078">otcl-1.0a7[OLD]/otcl-1.6[NEW]</a>
<b>Released on Wed May 30 10:07:21 PDT 2001</b></h3>
<ul>
<li>
<b><a href="http://www.isi.edu/~johnh/">[johnh]</a></b> <b>Tue Dec 12 10:36:34 PST 2000</b></li>
<br> Updated config.guess to autoconf's current one.
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&release_id=49076">otcl-1.0a6[OLD]/otcl-1.5[NEW]</a>
<b>Released on Mon Oct 16 21:01:42 PDT 2000</b></h3>
<ul>
<li><b><a href="http://www.isi.edu/~yaxu">[yaxu]</a></b>
<b>Mon Oct 16 21:01:42 PDT 2000</b><br>
Otcl 1.0a6 released
<li><b><a href="http://www.isi.edu/~haoboy">[haoboy]</a></b>
<b>Thu Oct 5 10:59:59 PDT 2000</b><br>
Patch for instvar in global scope by
<a href="mailto:[email protected]">Orion Hodson</a>.
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&release_id=49075">otcl-1.0a5[OLD]/otcl-1.4[NEW]</a>
<b>Released on Tue Jan 18 16:06:34 PST 2000</b></h3>
<ul>
<li><b><a href="http://www.isi.edu/~haoboy">[haoboy]</a></b>
<b>Mon Jul 12 12:59:09 PDT 1999</b><br>
The strategy for making otcl work with a range of tcl versions
is to pull out all incompatibilities into this section.
The main-line code should basicly follow the current Tcl
interfaces. Where those interfaces don't work with older versions,
replace the interface with compat_Tcl_<function> and add work-around
code here.<br>
Guidelines on porting otcl to newer versions of TCL:<br>
<ul>
<li> Data structure changes: define a macro to wrap around the
data structure names for different versions, and define access macros
to provide a uniform interface to different fields.
If there are drastically different data structure changes that require
control logic changes, see below. <br>
<li> Control logic changes: define a macro for the new initialization or
processing and set it to empty for the older versions.
</ul>
<p>
<li> <b><a href="http://www.isi.edu/~haoboy">[haoboy]</a></b>
<b>Thu May 27 19:17:51 PDT 1999</b><br>
Corrected compiling directives so that it works with tcl/tk 8.1.1.
<p>
<li> <b><a href=http://www.isi.edu/~haoboy>[haoboy]</a></b>
<b>Thu May 13 16:46:14 PDT 1999</b><br>
Bug report, NOT fixed:
OTcl does not allow any variables with name 'p1' and 'p2' in the
global name space, however, all other names seem to be fine.
<pre>
yym:src/otcl(140): otclsh
% Class B
B
% B p1
couldn't find result of alloc
% B p2
couldn't find result of alloc
% B p3
p3
% B p0
p0
</pre>
<p>
<li> <b><a href=mailto:[email protected]>[YP]</a></b>
<b>
Mon Jan 4 5:00:00 PST 1999
</b><br>
BUG REPORT(NOT FIXED): validation test of autoload
fails to pass under Linux and FreeBSD. Here is the upper part
of the stack (Linux, which results in a segmentation fault):
<pre>
#0 0x4011378d in __libc_free (mem=0xbffed744) at malloc.c:2861
#1 0x804a84b in AutoLoaderDP (cd=0xbffed744) at otcl.c:492
#2 0x804aa35 in RemoveMethod (methods=0x80fc514, nm=0x8100920 "1", cd=0x80fc4c0) at otcl.c:571
#3 0x804c9e0 in OTclCInstProcMethod (cd=0x80fc4c0, in=0x8099f90, argc=7, argv=0xbfff00f4) at otcl.c:1769
#4 0x804a674 in OTclDispatch (cd=0x80fc4c0, in=0x8099f90, argc=5, argv=0xbfff0144) at otcl.c:421
#5 0x804e523 in TclInvokeStringCommand ()
</pre>
This does not appear to be critical for ns, because it does not
uses autoloading.
<br>
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&release_id=49074">
otcl-1.0a4[OLD]/otcl1.3[NEW]</a>
<b>Released on Mon Feb 22 17:50:15 PST 1999</b></h3>
<ul>
<li><b><a href=http://www.isi.edu/~haoboy>[haoboy]</a></b>
<b>Thu May 13 16:46:14 PDT 1999</b><br>
Added the following patch to not let OTcl crash when it's not able to
create a variable:
<pre>
--- otcl.c~ 1998/09/07 18:53:43
+++ otcl.c 1999/05/13 23:30:13
@@ -1,6 +1,6 @@
/* -*- Mode: c++ -*-
*
- * $Id: CHANGES.html,v 1.52 2009/12/30 20:08:12 tom_henderson Exp $
+ * $Id: CHANGES.html,v 1.52 2009/12/30 20:08:12 tom_henderson Exp $
*
* Copyright 1993 Massachusetts Institute of Technology
*
@@ -1522,7 +1522,8 @@
if (result != TCL_OK) return result;
obj = OTclGetObject(in, argv[4]);
- if (obj == 0) OTclErrMsg(in, "couldn't find result of alloc",
TCL_STATIC);
+ if (obj == 0)
+ return OTclErrMsg(in, "couldn't find result of alloc",
TCL_STATIC);
(void)RemoveInstance(obj, obj->cl);
AddInstance(obj, cl);
</pre>
<li> <b><a href=http://www.isi.edu/~johnh>[johnh]</a></b>
<b>
Thu Jul 23 10:26:54 PDT 1998
</b><br>
tcl-7.6 support was broken; fixes inspired by Lloyd Wood should restore it.
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&release_id=49073">
otcl-1.0a3[OLD]/otcl-1.2[NEW]</a>
<b>Released on Tue July 7 13:10:00 PST 1998</b></h3>
<ul>
<li><b><a href=http://www.isi.edu/~johnh>[johnh]</a></b>
<b>
Tue Jun 30 09:49:53 PDT 1998
</b><br>
classinstvars support turned on by default
(and the ifdef's removed).
<li><b><a href=http://www.isi.edu/~johnh>[johnh]</a></b>
<b>
Tue Jun 9 13:42:06 PDT 1998
</b><br>
<ul>
<li> Added support code for delayed binding (in tclcl).
Currently this code is only turned on if you
do --enable-tclcl-classinstvars when configuring.
<li> re-autoconf'ed
<li> condesed some of the tcl7/tcl8 compatibility code
with #define ObjVarTablePtr
</ul>
<li><b><a href=http://www.isi.edu/~johnh>[johnh]</a></b>
<b>
Thu May 21 21:49:34 PDT 1998
</b><br>
<ul>
<li> Fixed a case in OTclDispatch error handling where clobbered
arguments (in the buggy callee) lead to a segfault.
</ul>
<li><b><a href=http://www.isi.edu/~johnh>[johnh]</a></b>
<b>
Mon May 18 16:46:51 PDT 1998
</b><br>
<ul>
<li> install targets were backwards.
</ul>
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&release_id=49072">
otcl-1.0a2[OLD]/otcl-1.1[NEW]</a>
<b>Fri Jan 23 11:54:21 PST 1998</b></h3>
<ul>
<li><b><a href=http://www.cs.berkeley.edu/~mccanne>[SM]</a></b>
<b>
Mon Dec 22 12:59:21 PST 1997
</b><br>
<ul>
<li> Fixed exactly the same bug as last rev. Only difference is
it occurred in another place.
</ul>
<li><b><a href=http://www.cs.berkeley.edu/~mccanne>[SM]</a></b>
<b>
Sun Dec 21 22:11:14 PST 1997
</b><br>
<ul>
<li> Fixed a bug in OTclDispatch that caused core dump when
an error conditrion occured evaluating an instproc with more than 8 args.
</ul>
<li><b><a href="http://www.cs.berkeley.edu/~tecklee">[TLT]</a>
Wed Dec 17 15:22:49 GMT-8:00 1997</b>
<ul>
<li> Added additional stack trace info when there is an error in
OTclDispatch. This gives "resolved_class procname ..." in addition to the
"_o? procname" line.
</ul>
</ul>
<hr>
<h3><a href="http://sourceforge.net/project/showfiles.php?group_id=30174&release_id=49070">
otcl-1.0a1[OLD]/otcl-1.0[NEW]</a>
<b>Mon Dec 15 20:13:00 PST 1997</b></h3>
<i> Non-publicized test release. </i>
<ul>
<li><b><a href=http://www.cs.berkeley.edu/~mccanne>[SM]</a></b>
<b>
Mon Dec 15 20:13:00 PST 1997
</b><br>
<ul>
<li> Converted configure to use mash/ns configure infratructure.
<li> Cleaned up this change history.
<li> Fixed things up for test release of 1.0a1
(need to clear with Wetherall, though he gave a preliminary "okay").
</ul>
<li><b><a href="http://www.isi.edu/~kannan">[KVa]</a>
Mon Dec 8 09:51:16 PST 1997</b>
<ul>
<li>Linux uses libdl.a (not libdld.a).<br>
Fix configure, configure.in.
</ul>
<li><b><a href="http://www.cs.berkeley.edu/~tecklee">[TLT]</a>
Sat Nov 15 18:29:41 GMT-8:00 1997</b>
<ul>
<li> changed makefile to compile functions with static library
<li> changed otcl procedures to use a single "::otcl" namespace. This
removes the need for the previous kludge in otcl, whereby a tcl procedure
is created using TclProjCmd, and then deleted from the interpreter so
that only otcl knows about it. For the deletion to work, we have to
use a hack which increment the reference count before deleting
it. Besides the high chance that this hack will not work with future
versions of tcl, the deletion also invalidates the byte compilation
and as a result each proc is byte-compiled twice.
<p> In AddMethod(), procedures are now created as <tt>::otcl::p<i>n</i></tt>
where <i>n</i> is a running number. The deleteproc of the created
procedure (OTclDeleteProc) now uses Tcl_FindCommand() to delete the procedure
from tcl if it still exists.
<p> Some simple experiments show that the impact on speed and memory is
small.
</ul>
<li><b><a href=http://www.cs.berkeley.edu/~elan>[EA]</a></b>
<b>
Tue Oct 28 11:50:08 PST 1997
</b><br>
<ul>
<li> Fixed problem in ListProcArgs since tcl8 now appends instvars and
arguments to ame list, but adds a flag.
</ul>
<li><b><a href=http://www.cs.berkeley.edu/~tecklee>[TLT]</a></b>
<b>
Sat Oct 25 19:49:19 PDT 1997
</b><br>
<ul>
<li> fix problem where some variables are freed multiple times. The variable
flags is a bitmap now, so that (vp->flags != VAR_UNDEFINED) is not correct.
</ul>
<li><b><a href=http://www.cs.berkeley.edu/~tecklee>[TLT]</a></b>
<b>
Mon Oct 6 14:46:51 PDT 1997
</b><br>
<ul>
<li> Merged in patch for Tcl/Tk8.0 from <a
href="http://catarina.usc.edu/~haoboy/otcl-0.96.patch">http://catarina.usc.edu/~haoboy/otcl-0.96.patch</a>.
<li> (Bug fix) PrimitiveCDestory attempts to delete the instances hash
table after its contents have been free in PrimitiveODestory. Created new
function PrimitiveODestoryNoFree that does not free the memory itself.
<li> (Bug fix) <tt>MakeProc</tt> creates a new procedure, then calls
<tt>Tcl_DeleteCommand</tt> with a null deleteproc to create a Tcl-invisible
proc. With 8.0, <tt>Tcl_DeleteCommand</tt> frees the <tt>cmdPtr</tt> structure
also, which renders the "invisible proc" unusable. Added code to prevent the
deletion of <tt>cmdPtr</tt> and free it up when the procedure is
destoryed.<br>
<i> Check that this kludge works when we move to a new version! </i>
</ul>
<li><b><a href=http://www.cs.berkeley.edu/~tecklee>[TLT]</a></b>
<b>Thu Aug 7 13:26:18 PDT 1997</b><br>
Checkin of makefile.vc for win32. otcl.lib and tclsh.exe now compiles under
WinNT 4.0. It should run/compile on win95 as well (not tested yet).
<li><b><a href=http://www.cs.berkeley.edu/~tecklee>[TLT]</a></b>
<b>July 97</b>
Merged in changes from <a href="http://www.cs.berkeley.edu/~mccanne">Steve
Mccanne</a> to fix the bug that causes tcl to remove and free some instvars
twice.
</ul>
<hr>
</body>
</html>