-
Notifications
You must be signed in to change notification settings - Fork 11
/
ChangeLog
1196 lines (834 loc) · 47.3 KB
/
ChangeLog
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
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2014-09-09 Donal Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 1.0.2 ===
Patch release to correspond with Tcl 8.6.2.
* generic/tclOO.c (InitFoundation): [7d52e1101b]: Ensure that
oo::class is shown as a subclass of oo::object.
* generic/tclOO.c (ReleaseClassContents): [75b8433707]: Plug a memory
leak in the test suite related to destruction ordering. (Thanks to
Don Porter.)
* generic/tclOO.h, generic/pkgoo.c: [f51efe99a7]: Adjustments to
symbol exporting to ensure that the TclOO stub API is correctly
provided to other packages. (Thanks to Jan Nijtmans.)
2013-09-19 Donal Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 1.0.1 ===
Patch release to correspond with Tcl 8.6.1.
* doc/next.n (METHOD SEARCH ORDER): Bug [3606943]: Corrected
description of method search order.
2013-08-02 Donal Fellows <[email protected]>
* generic/tclOODefineCmds.c (ClassSuperSet): Bug [9d61624b3d]: Stop
crashes when emptying the superclass slot, even when doing elaborate
things with metaclasses.
2013-02-09 Donal K. Fellows <[email protected]>
* generic/tclOOBasic.c (TclOO_Object_VarName): [Bug 3603695]: Change
the way that the 'varname' method is implemented so that there are no
longer problems with interactions due to the resolver. Thanks to
Taylor Venable <[email protected]> for identifying the problem.
2012-12-21 Donal K. Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 1.0 ===
This officially corresponds to the version of TclOO that is included
with Tcl 8.6.0, except for features (notably coroutine support) that
require the 8.6 runtime and not-officially-observable differences like
the degree of bytecode compilation support.
2012-11-09 Donal K. Fellows <[email protected]>
* doc/OOInitStubs.3: Added description of how to use Tcl_OOInitStubs
to initialize the TclOO C interface.
2012-07-26 Donal K. Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 0.7 ===
* generic/tclOO.c (ObjectRenamedTrace, ReleaseClassContents):
[Bug 3547839]: Use the memory management scheme used in version of
TclOO that is included in Tcl 8.6, as that doesn't crash when objects
are ripped out from underneath its feet.
(Tcl_NewObjectInstance): [Bug 2903011]: Improve fix of this bug; a
reference must be held from before the constructor is invoked to after
any resulting deletions are done.
2012-05-20 Donal K. Fellows <[email protected]>
* generic/tclOOBasic.c (TclOO_Class_Constructor): [Bug 2023112]: Cut
the amount of hackiness in class constructors, and refactor some of
the error message handling from [oo::define] to be saner in the face
of odd happenings.
2012-04-10 Donal K. Fellows <[email protected]>
* generic/tclOODefineCmds.c (ClassVarsSet, ObjVarsSet): [Bug 3396896]:
Ensure that the lists of variable names used to drive variable
resolution will never have the same name twice.
2012-04-04 Donal K. Fellows <[email protected]>
* generic/tclOO.c (Tcl_NewObjectInstance, TclNRNewObjectInstance):
[Bug 3514761]: Fixed bogosity with automated argument description
handling when constructing an instance of a class that is itself a
member of an ensemble. Thanks to Andreas Kupries for identifying that
this was a problem case at all!
(Tcl_CopyObjectInstance): Fix potential bleed-over of ensemble
information into [oo::copy].
2012-03-27 Donal K. Fellows <[email protected]>
IMPLEMENTATION OF TIP#397.
* generic/tclOO.c (Tcl_CopyObjectInstance): [Bug 3474460]: Make the
target object name optional when copying classes. [RFE 3485060]: Add
callback method ("<cloned>") so that scripted control over copying is
easier.
***POTENTIAL INCOMPATIBILITY***
If you'd previously been using the "<cloned>" method name, this now
has a standard semantics and call interface. Only a problem if you are
also using [oo::copy].
2012-03-23 Donal K. Fellows <[email protected]>
IMPLEMENTATION OF TIP#380.
* doc/define.n, doc/object.n, generic/tclOO.c, generic/tclOOBasic.c:
* generic/tclOOCall.c, generic/tclOODefineCmds.c, generic/tclOOInt.h:
* tests/oo.test: Switch definitions of lists of things in objects and
classes to a slot-based approach, which gives a lot more flexibility
and programmability at the script-level. Introduce new [::oo::Slot]
class which is the implementation of these things.
***POTENTIAL INCOMPATIBILITY***
The unknown method handler now may be asked to deal with the case
where no method name is provided at all. The default implementation
generates a compatible error message, and any override that forces the
presence of a first argument (i.e., a method name) will continue to
function as at present as well, so this is a pretty small change.
2012-02-21 Donal K. Fellows <[email protected]>
* Makefile.in (install-package, install-libraries): [Bug 3490157]:
Don't use ranlib during installation process. It's already been done
during build.
2012-01-25 Donal K. Fellows <[email protected]>
* generic/tclOO.c (Tcl_CopyObjectInstance): [Bug 3474460]: When
copying an object, make sure that the configuration of the variable
resolver is also duplicated.
2011-08-07 Donal K. Fellows <[email protected]>
* generic/tclOOInfo.c (InfoClassCallCmd): [Bug 3387082]: Plug memory
leak in call chain introspection.
2011-07-14 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (TclOORenderCallChain): [Bug 3365156]: Remove
stray refcount bump that caused a memory leak.
2011-05-25 Donal K. Fellows <[email protected]>
IMPLEMENTATION OF TIP#381.
* doc/next.n, doc/ooInfo.n, doc/self.n, generic/tclOO.c,
* generic/tclOOBasic.c, generic/tclOOCall.c, generic/tclOOInfo.c,
* generic/tclOOInt.h, tests/oo.test, tests/ooNext2.test: Added
introspection of call chains ([self call], [info object call], [info
class call]) and ability to skip ahead in chain ([nextto]).
2011-03-11 Donal K. Fellows <[email protected]>
* generic/tclOO.c (Tcl_NewObjectInstance, TclNRNewObjectInstance)
(TclOOObjectCmdCore, FinalizeObjectCall):
* generic/tclOOBasic.c (TclOO_Object_Destroy, AfterNRDestructor):
* generic/tclOOCall.c (TclOODeleteContext, TclOOGetCallContext):
Reorganization of call context reference count management so that code
is (mostly) simpler.
* generic/tclOOMethod.c (ProcedureMethodCompiledVarConnect)
(ProcedureMethodCompiledVarDelete): [Bug 3185009]: Keep references to
resolved object variables so that an unset doesn't leave any dangling
pointers for code to trip over.
2011-01-18 Donal K. Fellows <[email protected]>
* generic/tclOOMethod.c (PushMethodCallFrame): [Bug 3001438]: Make
sure that the cmdPtr field of the procPtr is correct and relevant at
all times so that [info frame] can report sensible information about a
frame after a return to it from a recursive call, instead of probably
crashing (depending on what else has overwritten the Tcl stack!)
2010-11-09 Donal K. Fellows <[email protected]>
* tests/oo.test: [Bug 3105999]: Backport of memory tests (issue itself
did not exist in this branch of the code).
2010-03-24 Donal K. Fellows <[email protected]>
* generic/tclOOInfo.c (InfoObjectMethodTypeCmd)
(InfoClassMethodTypeCmd): Added introspection of method types so that
it is possible to find this info out without using errors.
* generic/tclOOMethod.c (procMethodType): Now that introspection can
reveal the name of method types, regularize the name of normal methods
to be the name of the definition type used to create them.
2010-03-05 Donal K. Fellows <[email protected]>
* generic/tclOO.h, generic/tclOOInt.h: [Patch 2961556]: Change TclOO
to use the same style of function typedefs as Tcl, as this is about
the last chance to get this right.
***POTENTIAL INCOMPATIBILITY***
Source code that uses function typedefs from TclOO will need to update
variables and argument definitions so that pointers to the function
values are used instead. Binary compatibility is not affected.
2010-03-04 Donal K. Fellows <[email protected]>
* generic/tclOO.c (ObjectRenamedTrace): [Bug 2962664]: Add special
handling so that when the class of classes is deleted, so is the class
of objects. Immediately.
* generic/tclOOInt.h (ROOT_CLASS): Add new flag for specially marking
the root class. Simpler and more robust than the previous technique.
2010-02-02 Donal K. Fellows <[email protected]>
* generic/tclOO.c (AllocObject, MyDeleted): A slightly faster way to
handle the deletion of [my] is with a standard delete callback. This
is because it doesn't require an additional memory allocation during
object creation.
* generic/tclOOBasic.c (TclOO_Object_Destroy): [Bug 2944404]: Do not
crash when a destructor deletes the object that is executing that
destructor.
2010-01-28 Donal K. Fellows <[email protected]>
* generic/tclOOBasic.c (TclOO_Object_Destroy): Move the execution of
destructors to a point where they can produce an error. This will not
work for all destructors, but it does mean that more failing calls of
them will be caught.
* generic/tclOO.c (AllocObject, MyDeletedTrace, ObjectRenamedTrace):
(ObjectNamespaceDeleted): Stop various ways of getting at commands
with dangling pointers to the object. Also increases the reliability
of calling of destructors (though most destructors won't benefit; when
an object is deleted namespace-first, its destructors are not run in a
nice state as the namespace is partially gone).
2009-11-27 Donal K. Fellows <[email protected]>
* doc/Class.3, doc/Method.3: [Patch 2903921]: Small spelling fixes
from Larry Virden.
BUMP VERSION TO 0.6.2. Too many people need accumulated small versions
and bugfixes, so the version-bump removes confusion.
* generic/tclOOBasic.c (TclOO_Object_LinkVar): [Bug 2903811]: Remove
unneeded restrictions on who can usefully call this method.
2009-11-24 Donal K. Fellows <[email protected]>
* generic/tclOO.c (Tcl_NewObjectInstance): [Bug 2903011]: Make it an
error to destroy an object in a constructor, and also make sure that
an object is not deleted twice in the error case.
2009-11-02 Donal K. Fellows <[email protected]>
* doc/object.n (DESCRIPTION): Substantive revision to make it clearer
what the fundamental semantics of an object actually are.
2009-10-22 Donal K. Fellows <[email protected]>
* generic/tclOOBasic.c (TclOO_Object_VarName): [Bug 2883857]: Allow
the passing of array element names through this method.
2009-07-24 Donal K. Fellows <[email protected]>
* doc/self.n (self class): [Bug 2704302]: Add some text to make it
clearer how to get the name of the current object's class.
2009-07-19 Donal K. Fellows <[email protected]>
* generic/tclOO.decls, generic/tclOO.c (Tcl_GetObjectName): Expose a
function for efficiently returning the current name of an object.
2009-06-25 Donal K. Fellows <[email protected]>
* tests/oo.test: [Bug 2811598]: Improve fragile tests.
2009-06-08 Donal K. Fellows <[email protected]>
* doc/copy.n: Fix error in example spotted by Venkat Iyer.
2009-05-145 Donal K. Fellows <[email protected]>
* generic/tclOOInfo.c (InfoObjectNsCmd): Added introspection mechanism
for finding out what an object's namespace is. Experience suggests
that it is just too useful to be able to do without it.
2009-05-05 Donal K. Fellows <[email protected]>
* generic/tclOO.c (InitFoundation, AllocObject, AllocClass):
* generic/tclOODefineCmds.c (InitDefineContext): Make sure that when
support namespaces are deleted, nothing bad can subsequently happen.
Issue spotted by Don Porter.
2009-04-11 Donal K. Fellows <[email protected]>
* generic/tclOOMethod.c (InvokeForwardMethod): Clarify the resolution
behaviour of the name of the command that is forwarded to: it's now
resolved using the object's namespace as context, which is much more
useful than the previous (somewhat random) behaviour of using the
caller's current namespace. Alas, this takes a substantive performance
hit for forwards to commands that are not fully qualified, but that is
unavoidable due to the lack of certain internal APIs in Tcl 8.5.
2009-03-24 Donal K. Fellows <[email protected]>
* generic/tclOOBasic.c (TclOOSelfObjCmd): [Bug 2704302]: Make 'self
class' better defined in the context of objects that change class.
2009-02-12 Donal K. Fellows <[email protected]>
* generic/tclOODefineCmds.c (TclOOGetDefineCmdContext): Use the
correct field in the Interp structure for retrieving the frame to get
the context object so that people can extend [oo::define] without deep
shenanigans. Bug found by Federico Ferri.
2009-01-29 Donal K. Fellows <[email protected]>
* generic/tclOODecls.h (Tcl_OOInitStubs): [Bug 2537839]: Make the
declaration of this macro work correctly in the non-stub case.
2009-01-27 Donal K. Fellows <[email protected]>
* generic/tclOODefineCmds.c (Tcl_ClassSetConstructor):
[Bug 2531577]: Ensure that caches of constructor chains are cleared
when the constructor is changed.
2009-01-06 Donal K. Fellows <[email protected]>
* generic/tclOOInfo.c (InfoObjectMethodsCmd,InfoClassMethodsCmd): Only
delete pointers that were actually allocated! [Bug 2489836]
* generic/tclOO.c (Tcl_NewObjectInstance): Perform search for existing
commands in right context. [Bug 2481109]
2008-11-01 Donal K. Fellows <[email protected]>
* generic/tclOOBasic.c (TclOONRUpcatch): Reworked the code that does
* generic/tclOO.c (InitFoundation): class constructor handling so
that it is more robust and runs the constructor call in the context of
the caller of the class's constructor method. Needed because the
previously used code did not work at all after applying the fix below;
no Tcl existing command could reliably do what was needed any more.
* generic/tclOODefineCmds.c (GetClassInOuterContext): Rework and
factor out the code to resolve class names in definitions so that
classes are resolved from the perspective of the caller of the
[oo::define] command, rather than from the oo::define namespace! This
makes much code simpler by reducing how often fully-qualified names
are required (previously always in practice, so no back-compat issues
exist). [Bug 2200824]
2008-10-14 Donal K. Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 0.6 ===
* configure.in, README.txt, win/TclOO.rc: Bump version.
* generic/tclOO.h (TCLOO_VERSION):
Various minor fixes (ported from Tcl HEAD) to prepare for 0.6 release.
* generic/tclOO.c (Tcl_ObjectContextInvokeNext): Added gracefulness in
the face of interpreters being deleted.
* generic/tclOO.c (InitFoundation): Use INT2PTR/PTR2INT macros
* generic/tclOODefineCmds.c (many): instead of somewhat dodgy
* generic/tclOOCall.c (TclOOGetSortedMethodList): casts.
(TclOOGetSortedClassMethodList):
* generic/tclOOBasic.c (TclOOSelfObjCmd): Clean up of code of [self]
command to use names from Foundation. Don't write directly to the
interpreter result object.
(TclOO_Object_LinkVar): Application of the "do nothing gracefully"
principle.
* generic/tclOOInfo.c (various): Don't write directly to the
interpreter result object.
* generic/tclOOInt.h: Added macro magic to make things work with
Objective C. [Bug 2163447]
2008-10-10 Donal K. Fellows <[email protected]>
* generic/tclOODefineCmds.c (TclOODefineUnexportObjCmd)
(TclOODefineExportObjCmd): Corrected export/unexport record synthesis.
[Bug 2155658]
2008-09-25 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (InitCallChain, IsStillValid):
* tests/oo.test (oo-25.2): Revise call chain cache management so that
it takes into account class-wide caching correctly. [Bug 2120903]
2008-09-24 Donal K. Fellows <[email protected]>
* generic/tclOOMethod.c (DBPRINT): Remove obsolete debugging macro.
[Bug 2124814]
2008-09-23 Donal K. Fellows <[email protected]>
* doc/Method.3: Corrected documentation. [Patch 2082450]
2008-09-22 Donal K. Fellows <[email protected]>
* configure.in, README.txt, generic/tclOO.h, win/TclOO.rc: Bump
version to 0.6a1.
IMPLEMENTATION OF TIP#320.
* generic/tclOODefineCmds.c (TclOODefineVariablesObjCmd):
* generic/tclOOInfo.c (InfoObjectVariablesCmd, InfoClassVariablesCmd):
* generic/tclOOMethod.c (TclOOSetupVariableResolver, etc):
* doc/define.n, doc/ooInfo.n, benchmarks/cps.tcl:
* tests/oo.test (oo-26.*): Allow the declaration of the common
variables used in methods of a class or object. These are then mapped
in using a variable resolver. This makes many class declarations much
simpler overall, encourages good usage of variable names, and also
boosts speed a bit.
* generic/tclOOMethod.c (TclOOGetMethodBody): Factor out the code to
get the body of a procedure-like method. Reduces the amount of "poking
inside the abstraction" that is done by the introspection code.
2008-08-29 Donal K. Fellows <[email protected]>
* generic/tclOO.c (ObjectRenamedTrace): Backport of corrected handling
of detection of when it is appropriate to run destructors.
2008-08-12 Jeff Hobbs <[email protected]>
* generic/tclOOInfo.c (InfoObjectDefnCmd, InfoObjectMixinsCmd):
fix # args displayed. [Bug 2048676]
2008-07-02 Donal K. Fellows <[email protected]>
* configure.in: Bump version number to 0.5.1.
* aclocal.m4 (TEAX_SUBST_RESOURCE): Stop trying to build the resource
descriptor in when using the VC toolchain for now; it seems to be
causing problems with the versions built for the teapot.
2008-06-29 Donal K. Fellows <[email protected]>
* README.txt: Update to be more relevant to this distribution.
* many files: Fix copyrights.
* doc/object.n (EXAMPLES): Fix incorrect usage of oo::define to be
done with oo::objdefine instead. [Bug 2004480]
2008-06-26 Donal K. Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 0.5 ===
* configure.in, generic/tclOO.h, tests/oo.test, win/TclOO.rc: Update
version numbers for 0.5 release. This version constitutes the point
where the merge to Tcl 8.6a0 (after TIP#257) was finalized;
intermediate changes from 0.4 are corrected issues discovered during
the merge and immediate wider-scale testing.
* Makefile.in (genstubs): Change the stub table
* generic/tclOOStubLib.c (TclOOInitializeStubs): generation to use the
* generic/tclOO.c (Tcloo_Init): Tcl system, not the
* generic/tclOO.decls: Tile system.
* tools/genStubs.tcl: Removed no-longer-needed file.
*** POTENTIAL INCOMPATABILITY ***
If you use the TclOO C API, you *must* recompile against this new
version. The layout of the stubs table is different. Many apologies.
2008-06-19 Donal K. Fellows <[email protected]>
* generic/tclOO.c (Tcl_ObjectContextInvokeNext): Corrected 'next' (at
* tests/oo.test (oo-7.8): end of a call chain) to make it
* doc/next.n: consistent with the TIP. [Bug 1998244]
* generic/tclOOCall.c (AddSimpleClassChainToCallContext): Make sure
* tests/oo.test (oo-14.8): that class mixins are processed in the
documented order. [Bug 1998221]
2008-06-09 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (TclOOGetSortedMethodList): Plug memory leak
that occurred when all methods were hidden. [Bug 1987817]
2008-06-02 Donal K. Fellows <[email protected]>
* generic/tclOO.c (ReleaseClassContents): Tidy up a bit by hiding more
of the details of how lists work; they're not interesting, but they
were verbose. No longer...
* generic/tclOO.c (ReleaseClassContents): Fix reference counting
problem identified by Keven Kenny through use of valgrind, which was
caused by failing to protect the Object as well as the Class (attached
to it) of a subclass being deleted and hence getting a freed-memory
read when attempting to delete the class command. [Bug 1981001]
2008-06-01 Donal K. Fellows <[email protected]>
* generic/tclOOMethod.c (Tcl_NewMethod): Fix wrong initialization of
reference counts when changing a method that is currently in use.
Thanks to Kevin Kenny for spotting. [Bug 1981001]
2008-05-31 Donal K. Fellows <[email protected]>
* generic/tclOO.c (InitFoundation): Correct reference counting for
strings used when creating the constructor for classes.
* generic/tclOOMethod.c (TclOODelMethodRef): Correct fencepost error
in reference counting of method implementation structures.
* tests/oo.test (oo-0.5): Added a test to detect a memory leak problem
relating to disposal of the core object system.
2008-05-30 Donal K. Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 0.4 ===
* configure.in, generic/tclOO.h, tests/oo.test, win/TclOO.rc: Update
version numbers for 0.4 release. This version constitutes the point
where a merge to Tcl 8.6a0 (after TIP#257) was carried out.
2008-05-29 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (TclOOGetSortedClassMethodList):
* generic/tclOOInfo.c (InfoObjectMethodsCmd, InfoClassMethodsCmd):
* tests/oo.test, doc/ooInfo.n: Corrected, simplified and systematized
the code to introspect the list of methods supported by an object or
class. Now, -all checks (super)classes and -private gets what is
accepted by [my].
2008-05-28 Donal K. Fellows <[email protected]>
* tests/oo.test (oo-16.4): Deepen this test to make it clearer what
the difference between a class and a metaclass is.
(initInterpreter): Factor out the code to set up a sub-interpreter for
loading TclOO, so that the tests work when run with TclOO not loaded
from the current directory.
2008-05-26 Donal K. Fellows <[email protected]>
* generic/tclOO.c (InitFoundation): Make the counter that gives each
object a unique serial number be a thread-local so that if a method
chain reference in a Tcl_Obj internal representation crosses an
interpreter boundary, it won't cause problems if it happens to
coincide. Performance cost is almost nil (one extra pointer needs to
be dereferenced during object creation, plus a bit more per-interp
cost to initialize access to the thread-specific data).
2008-05-25 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (TclOOGetCallContext): Cache call chains at the
class level when possible. This should speed up the case where an
object is a "typical" member of the class quite a bit by not requiring
a rebuild of the call chain for each instance. Will do quite a bit to
reduce the memory consumption (fewer hash tables!) at a cost of some
comparisons being marginally slower.
2008-05-24 Donal K. Fellows <[email protected]>
* generic/tclOOMethod.c (PushMethodCallFrame): Reduce number of
different stack frame flags used. Just use two now, one to indicate
that this is a method and one to indicate that this is a definition
context.
* configure.in: Bump version to pre-0.4.
* generic/tclOOBasic.c: Factor out the implementations of commands and
methods. Makes it easier to see which parts are script-level API.
* generic/tclOO.c: Clean up responsibilities between InitFoundation
and Tcloo_Init.
2008-05-23 Donal K. Fellows <[email protected]>
* generic/tclOO.c and others: Removed use of Tcl_Preserve for
structure lifetime management and replaced with a reference counting
scheme instead, for a small but consistent speed boost on all method
calls and especially object destruction.
2008-05-22 Donal K. Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 0.3 ===
* configure.in, generic/tclOO.h, tests/oo.test, win/TclOO.rc: Update
version numbers for 0.3 release.
2008-05-21 Donal K. Fellows <[email protected]>
* generic/tclOO.c (TclOOObjectCmdCore): Turn off caching in the
primary case that causes problems when a method name mapper is
installed. API will need rethinking, but it's very complex to handle
efficiently. [Bug 1895546]
* generic/tclOO.c (AllocObject): Directly allocate structures relating
to the object's [my] command; we know that's a fresh namespace so the
extra checks performed by Tcl_CreateObjCommand are pure overhead.
(Tcl_NewObjectInstance): Remove bottlenecks relating to command
renaming; using Tcl_FindCommand for the safety check is much faster!
* generic/tclOODefineCmds.c (FindCommand): Factor out the code to do
lookup of commands with abbreviations in the case where the definition
command is not given a script.
2008-05-20 Donal K. Fellows <[email protected]>
* generic/tclOODefineCmds.c (TclOOUnknownDefinition): Added an unknown
handler to the oo::define and oo::objdefine commands internal
namespace processing so that you can use unique prefixes. Addresses
[Bug 1962026] on a practical level (though not aesthetically).
* generic/tclOOInt.h (Object): Put a reference to the object system
foundation into the object structure so that fewer hash table lookups
are required during the creation of objects and the invokation of
methods upon objects.
2008-05-18 Donal K. Fellows <[email protected]>
* generic/tclOO.c (TclOOInvokeObject): Strip out one of the context
caches (no longer needed because the key differences between public
and private contexts are no longer cached anyway) and rename to better
reflect the true nature.
* generic/tclOOCall.c (TclOOGetCallContext): Revise flag handling to
take account of the fact that public and private call chains are now
cached together.
* generic/tclOO.c, generic/tclOOMethod.c: Strip out overhead from the
call path for the basic predefined methods.
2008-05-17 Donal K. Fellows <[email protected]>
* generic/tclOO.c (Tcloo_SafeInit): Defined this so that TclOO is
loadable in safe interpreters; nothing it does is unsafe as it does
not manipulate system resources.
* generic/tclOODefineCmds.c (TclOODefineExportObjCmd)
(TclOODefineUnexportObjCmd): Only invalidate method chains when the
export status of a method is actually changed.
2008-05-16 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (TclOOInvokeContext): Relocate the special
handling of the count of arguments to here from multiple other
locations in the source code. It should only be special at the very
first step in the call chain; after that, normal [next] processing
should occur. [Bug 1965063]
2008-05-15 Donal K. Fellows <[email protected]>
* generic/tclOO.c (Tcl_GetObjectFromObj): Make sure that [namespace
import] doesn't fool the code to determine if a command is an object.
[Bug 1963130]
2008-05-13 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (TclOOGetCallContext, etc.): Rework the context
management code so that call contexts are split into two parts: a part
that is static over the lifetime of the context and which can be
cached and shared between calls (allocated with ckalloc) and a part
that varies during a call, which isn't shared or cached (and which is
allocated with TclStackAlloc). This will make recursive calls to an
object's methods *much* more efficient. No public API affected.
*** POTENTIAL INCOMPATABILITY ***
If you used the internal API and poked inside the call context, you
will minimally need to recompile. Probably rewrite too; many fields
have moved inwards into the shared part. Note that this part of the
code is subject to change in the future, e.g. when class-level caches
are created...
2008-05-12 Donal K. Fellows <[email protected]>
* generic/tclOO.c (ObjectNamespaceDeleted): Unstitch class from
mixed in class correctly. [Bug 1905797]
* generic/tclOOCall.c (TclOOGetCallContext): Get the creation epoch of
the object referred to in a context and store that separately in the
context so that we can safely find out whether a cached context refers
to a deleted object without needing to read inside that object! This
clears a FreeMemoryRead identified in [Bug 1959637]; might clear that
bug in its entirety too, if it turns out to be a FMR fundamentally,
which would also explain its heisenbug-ness.
2008-05-11 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (TclOOGetCallContext): Increase the amount of
safety armouring on the cache contents reuse conditions. Hopefully (!)
this will fix [Bug 1959637]
* generic/tclOOInt.h (Class,Object): Tune down memory consumption by
removing the pre-computed class hierarchy (useless because it was
wrong) and changing the context caches to be allocated on the fly (as
many objects won't need both of them).
* generic/tclOOCall.c (AddSimpleClassChainToCallContext): Move mixin
processing to here so that processing mixins of mixins works. [Bug
1960703] Also enable mixin processing of constructors and destructors;
these are sensible given that class-level mixins are supported.
* generic/tclOODefineCmds.c (TclOODefineDeleteMethodObjCmd): Move the
delete-a-method functionality into a new command, making the behaviour
of the 'method' subcommand less horrible. [FRQ 1959483]
(TclOODefineRenameMethodObjCmd, RenameDeleteMethod): Add a new command
to allow methods to be renamed. Factor out the large amount of common
code with the code to delete methods.
*** POTENTIAL INCOMPATABILITY ***
If you were relying on using 'oo::define method' to remove methods.
* generic/tclOOMethod.c (InvokeProcedureMethod): Ensure that method
implementations do not vanish from underneath our feet. Prevents some
crashes found in the test suite when changing some things.
2008-05-08 Donal K. Fellows <[email protected]>
* configure.in: Bump version to pre-0.3 now that
* generic/tclOO.h (TCLOO_VERSION): there's been an API change.
* generic/tclOODefineCmds.c (TclOOObjDefObjCmd): Significant revision
* generic/tclOO.c (InitFoundation, Tcloo_Init): that splits the
* doc/define.n: oo::define machinery
into two pieces, creating oo::objdefine for configuring objects and
leaving oo::define for just classes. Gets rid of the nasty "self."
prefixes. Many thanks to Don Porter for the suggestion. [FRQ 1959486]
*** POTENTIAL INCOMPATABILITY ***
If you were configuring objects (instead of just classes) this change
will definitely affect you.
* generic/tclOO.c (ObjectLinkVar): Simplify this method back so that
it reflects what is documented. The extended version was never nice to
use, and was somewhat surprising in edge cases. [Bug 1959457]
2008-04-30 Donal K. Fellows <[email protected]>
* generic/tclOOMethod.c (PushMethodCallFrame): Only recompile a method
body when necessary, rather than over eagerly. This version is
possibly a bit the other way; can tune later. [Bug 1945769]
2008-04-14 Donal K. Fellows <[email protected]>
* doc/class.n: Fix typo, reported by Corrado Ficicchia.
2008-04-08 Donal K. Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 0.2 ===
* configure.in, generic/tclOO.h, win/TclOO.rc: Update version number
to release.
2008-04-04 Donal K. Fellows <[email protected]>
* generic/tclOO.decls, generic/*.c, doc/Method.3: Renamed the methods
so that confusion is reduced by eliminating the term "class method"
and changing "object method" to "instance method". [Bug 1863645]
***POTENTIAL INCOMPATABILITY*** for anyone using the C API.
2008-04-02 Donal K. Fellows <[email protected]>
* tests/oo.test: Fixed crashing test by doing a version that works and
marking the failing version as a known bug.
* configure.in, config.h.in, generic/*.c: Changed to use autoheader
rather than a slew of configure parameters.
2008-03-26 Donal K. Fellows <[email protected]>
* doc/*: Fixes for documentation bugs found when using Tcl's HTML
scraper on the docs. Includes defining keywords for all pages.
2008-02-01 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c: Adjust function declarations (to enable better
optimization) and ensure that the declarations and function defs match
correctly (VC is picky about this).
2008-02-01 Donal K. Fellows <[email protected]>
* aclocal.m4: Adjusted to get quoting right.
2008-01-30 Donal K. Fellows <[email protected]>
* aclocal.m4: Ugh, msys make does / munging! [Bug 1881216] again.
2008-01-29 Donal K. Fellows <[email protected]>
* aclocal.m4 (TEAX_VC_MANIFEST): Added some code to switch between the
gcc and vc ways of writing some flags.
* configure.in: Move TEAX_SUBST_RESOURCE after TEA_CONFIG_CFLAGS so
that the detection of the resource compiler is correct. [Bug 1881216]
2008-01-21 Donal K. Fellows <[email protected]>
* configure.in, aclocal.m4, Makefile.in: Clean up the configure code
so that it's possible to read the configure script again. Factor out
ensuing macro definitions into aclocal.m4 for clarity.
2008-01-18 Donal K. Fellows <[email protected]>
* configure.in, Makefile.in: Add code to make the resource compiler
adapt to being used with the VC toolchain. Also adds some support for
manifest generation (needed for Vista?) [Bug 1870456, part 3] (kbk)
2008-01-16 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c, tclOOInt.h: Add and fix types to make things
quieter with VC2k5SP1. [Bug 1870456, part 2] (kbk)
* generic/tclOODefineCmds.c (TclOOObjectSetFilters)
(TclOOClassSetFilters, TclOOObjectSetMixins, TclOOClassSetMixins):
Factor out the code to manage lists of filters and mixins so that they
can be manipulated from the C level more easily. Now part of the
"internal" API.
* generic/tclOODefineCmds.c (BumpGlobalEpoch): Factor out the code to
handle incrementing of the global epoch counter when a class is
reconfigured. Allows us to put conditions on doing this that are easy
to enforce and which should result in a performance boost in practice.
2008-01-12 Donal K. Fellows <[email protected]>
* tests/oo.test (oo-23.1): Added new test that shows how to do
Self-like object creation through prototypical objects. [Bug 1865054]
* generic/tclOODefineCmds.c (TclOODefineMixinObjCmd): Stop classes
from mixing in themselves as classes, which can lead to an infinite
loop.
2008-01-09 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (AddClassFiltersToCallContext): Add filters
defined by classes mixed into classes. [Bug 1865053]
* generic/tclOO.c (Tcl_ClassSetConstructor, Tcl_ClassSetDestructor):
Factored out the code to install a constructor or destructor.
2008-01-06 Donal K. Fellows <[email protected]>
* configure.in: Bump version to pre-0.2 now that
* generic/tclOO.h (TCLOO_VERSION): there's been an API change.
* .../tclOO.h (Tcl_CloneProc, Tcl_MethodType, Tcl_ObjectMetadataType):
* generic/tclOOMethod.c (CloneProcedureMethod, CloneForwardMethod):
* generic/tclOO.c (Tcl_CopyObjectInstance, CloneObjectMethod)
(CloneClassMethod): Redefined cloning system to allow user code to
reject a request to create a copy of an object. Allows some objects to
become genuinely unique, which is necessary when they contain really
precious OS resources. [FRQ 1863642]
***POTENTIAL INCOMPATIBILITY***
For any code that used the old cloning functions.
* generic/tclOO.h (TCLOO_VERSION): Rename of OO_VERSION.
* generic/tclOOStubLib.c, generic/tclOODecls.h: Corrected macro usage
so that only one #def is involved in stub usage. [Bug 1864851]
2008-01-06 Kevin B. Kenny <[email protected]>
* generic/tclOODecls.h: Removed superfluous '\r' characters that
caused syntax errors when compiling with mingw.
2008-01-05 Donal K. Fellows <[email protected]>
* generic/tclOO.c (TclOOInvokeObject): New functions to
* generic/tclOOMethod.c (TclOONewProcClassMethodEx) make itcl-ng
(TclOONewProcInstanceMethodEx): integration much
simpler. Adapted from [Patch 1791190], but with internal names as they
expose concepts which do not square completely with the way TclOO
officially "works".
2008-01-03 Donal K. Fellows <[email protected]>
* generic/tclOO.decls: Moved TclOONewForwardClassMethod and
TclOONewForwardMethod to private stub API from pure-internal. [FRQ
1842600]
* generic/tclOO.c (TclOOObjectCmdCore): Tweaked the signature of
the itcl-ng method remapping callback. [Patch 1791215]
(Tcl_ObjectSetMethodNameMapper): Added getter and setter functions
for the method remapping callback. [FRQ 1842588]
2007-12-30 Donal K. Fellows <[email protected]>
* generic/tclOOStubLib.c (TclOOInitializeStubs): Added more error
checking. [Bug 1847313]
* generic/tclOODecls.h: Added changes forgotten when adapting from the
Tile sources. [Bug 1847318]
* configure.in: Corrected which headers are installed by default and
* Makefile.in: factored out the private headers which are only
installed if specially requested (use 'make install-private-headers'
to get them). [Bug 1847311]
* win/TclOO.rc: Relocated from top-level directory as it is only
relevant to Windows builds. [Bug 1816147]
2007-12-02 Donal K. Fellows <[email protected]>
* generic/tclOOInfo.c (TclOOInitInfo): Updating the ensemble map now
requires a non-NULL interp argument. [Bug 1841743]
2007-11-09 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (TclOOGetSortedMethodList): Ensure that export
cannot cause the wrong list of methods to be printed in error
messages. [Bug 1824958]
2007-10-18 Donal K. Fellows <[email protected]>
* generic/tclOO.h (OO_VERSION): Forgot to update this when bumping the
version number.
2007-10-12 Donal K. Fellows <[email protected]>
* generic/tclOO.c (TclOOObjectCmdCore): Added method name remapping
support for Arnulf. [Patch 1791215]
2007-10-11 Daniel Steffen <[email protected]>
* Makefile.in: RANLIB static libraries during install; add install
* configure.in: target dependencies; rename a few makefile vars to make
overriding them the same as in TEA; distclean tclooConfig.sh; change
stub lib install location from libdir to TEA standard pkglibdir.
* configure: autoconf-2.59
2007-10-03 Donal K. Fellows <[email protected]>
* tclooConfig.sh.in, configure.in: Made more robust when configure is
called with a relative directory name.
2007-10-01 Donal K. Fellows <[email protected]>
=== RELEASE OF TCLOO VERSION 0.1 ===
* Makefile.in (TCL_VERSION_REQ): Updated to require the correct
public version instead of a private version that was never released.
(dist): Updated so that manual pages are run through 'soelim'.
2007-10-01 Donal K. Fellows <[email protected]>
* README.txt: Added a readme as part of preparation for release.
* configure.in (TCLOO_*_SPEC): Added more bits to make the config
descriptor file much more likely to be relevant.
2007-09-28 Donal K. Fellows <[email protected]>
* tclooConfig.sh.in: Added file that describes "useful" configuration
about TclOO so that people can build against it.
2007-09-03 Donal K. Fellows <[email protected]>
* generic/tclOO.c (InitFoundation): Divide the initialization code
into two more manageable pieces.
2007-08-21 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c (AddMethodToCallChain): Prevent memory overruns
that didn't really matter (except in certain very rare cases). Found
by Arnulf Wiedemann and valgrind.
2007-08-20 Donal K. Fellows <[email protected]>
* generic/tclOOMethod.c (PushMethodCallFrame): Fix handling of things
when the magical itcl mode takes over; random crashes really aren't
much fun. Found by Arnulf Wiedemann.
2007-08-15 Donal K. Fellows <[email protected]>
* generic/tclOOMethod.c (InvokeProcedureMethod): Plug a memory leak
found by Arnulf Wiedemann.
2007-08-13 Donal K. Fellows <[email protected]>
* generic/tclOOInfo.c (TclOOInitInfo): Stop a potential memory leak in
the case when someone modifies the info ensemble before us.
2007-08-08 Donal K. Fellows <[email protected]>
* generic/tclOO.c (TclOOIsReachable): The is-a relationship should
follow the class mixin hierarchy too, and this function is a
reasonable addition to the exported API (currently private).
2007-08-07 Donal K. Fellows <[email protected]>
* generic/tclOO.c (TclOOObjectCmdCore): Renamed from ObjectCmd and
exposed in stubs table. Added mechanism to allow callers to start the
chain part way through, though this is not used in the TclOO core.
2007-08-06 Donal K. Fellows <[email protected]>
* generic/tclOO.decls (TclOONewProcMethod, TclOONewProcClassMethod):
Added to internal stubs table.
* generic/tclOOMethod.c (InvokeProcedureMethod, PushMethodCallFrame):
Reorganize so that frame management is clearer and better supportive
of Arnulf's requirements. This involves added a clientData pointer,
moving a callback, and breaking out things so that less is held on the
C stack, which is already fairly full...
2007-08-04 Donal K. Fellows <[email protected]>
* generic/tclOO.c (Tcl_InvokeNextContext): Added function to allow
third party method implementations to traverse the call chain.
2007-08-03 Donal K. Fellows <[email protected]>
* generic/tclOOCall.c: Use 'inline' where possible.
* generic/tclOOInfo.c (InfoObjectVarsCmd): Rewrote following Miguel
Sofer's incompatible changes in the Tcl core's implementation of
variables.