commit a copy of snit
[scpubgit/TenDotTcl.git] / snit / ChangeLog
1 2011-12-13  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
2
3         *
4         * Released and tagged Tcllib 1.14 ========================
5         * 
6
7 2011-01-24  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
8
9         *
10         * Released and tagged Tcllib 1.13 ========================
11         * 
12
13 2010-06-07  Andreas Kupries  <andreask@activestate.com>
14
15         * validate.tcl (snit::double, validate): Applied patch by Will
16         * pkgIndex.tcl: fixing the error message for max-limited
17         * snit.man: double types. Bumped versions to 2.3.2 and 1.4.2.
18         * snit.tcl: Extended testsuite.
19         * snit2.tcl:
20         * snit.test:
21
22 2010-04-30  Andreas Kupries  <andreask@activestate.com>
23
24         * snitfaq.man: Fixed typo in 'package require' commands, reported
25           by sigzero@gmail.com.
26
27 2009-12-07  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
28
29         *
30         * Released and tagged Tcllib 1.12 ========================
31         * 
32
33 2009-11-16  Andreas Kupries  <andreask@activestate.com>
34
35         * main2.tcl (::snit::RT.typemethod.destroy) 
36         (::snit::RT.typemethod.info.instances): 
37         * main1.tcl (::snit::RT.typemethod.info.instances) 
38         (::snit::RT.typemethod.destroy): [Bug 2898640]. Fixed handling of
39         * snit.tcl: unrelated namespaces by restricting the set of
40         * snit2.tcl: children to look at. Bumped versions of v1 and v2 to
41         * pkgIndex.tcl: 1.4.1 and 2.3.1 respectively.
42         * snit.man:
43
44 2009-11-02  Andreas Kupries  <andreask@activestate.com>
45
46         * snit.tcl: Bumped versions of v1 and v2 to 1.4 and 2.3
47         * snit2.tcl: respectively, taking the backward compatible
48         * snit.man: API changes to validation types into account.
49         * pkgIndex.tcl:
50
51 2009-10-31  Will Duquette  <will@wjduquette.com>
52
53         * validate.tcl: Updated all Snit validation types to return the
54         * snit.tcl: validated value, and to throw -errorcode INVALID
55                     on error.
56         * snit.man: Relevant changes.
57
58 2009-09-29  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
59
60         * snit.test: Updated to handle changes in command error messages
61           done in Tcl 8.6+.
62
63 2009-09-28  Andreas Kupries  <andreask@activestate.com>
64
65         * snit.man: Committed a long-standing fix to a bug in the
66         * snit.tcl: last entry. Wrap the close commands into catch
67         * snit2.tcl: to handle the possibility of the std channels
68         * pkgIndex.tcl: not existing. Bumped versions to 1.3.4 and
69         * main1_83.tcl 2.2.4.
70         * main1.tcl:
71         * main2.tcl:
72
73 2009-06-22  Andreas Kupries  <andreask@activestate.com>
74
75         * main1.tcl: Fix handling of hierarchical typemethods for missing
76         * main1_83.tcl: subcommands. If a toplevel hmethod is not found
77         * main2.tcl: we can assume it to be an instance name and do an
78         * pkgIndex.tcl: implicit 'create' of it. If the toplevel hmethod
79         * snit.tcl: has already been accepted however a missing submethod
80         * snit2.tcl: has to error out, an implicit create is not possible
81         * snit.test: any longer. Extended the testsuite to cover this
82           case. Bumped the package versions to 2.2.3, and 1.3.3.
83
84 2009-04-21  Andreas Kupries  <andreask@activestate.com>
85
86         * main1.tcl (::snit::Comp.Init): Close unused standard channels
87         * main1_83.tcl (::snit::Comp.Init): to prevent the internal compile
88         * main2.tcl (::snit::Comp.Init): interp from blocking a close/open
89         * snit.tcl: dance to replace them in the main interp. Bumped the
90         * snit2.tcl: packages to versions 1.3.2 and 2.2.2 respectively.
91         * pkgIndex.tcl:
92
93 2008-12-12  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
94
95         *
96         * Released and tagged Tcllib 1.11.1 ========================
97         * 
98
99 2008-10-16  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
100
101         *
102         * Released and tagged Tcllib 1.11 ========================
103         * 
104
105 2008-08-20  Will Duquette  <will@wjduquette.com>
106
107         * snitfaq.man: Finished up [SF Tcllib Bug 1658089].
108         
109 2008-05-16  Andreas Kupries  <andreask@activestate.com>
110
111         * snitfaq.man: Fixed the sectref argument order issues.
112
113 2008-05-15  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
114
115         * snitfaq.man: Updated to changes in doctools (sub)section
116           reference handling.
117
118 2007-12-04  Andreas Kupries  <andreask@activestate.com>
119
120         * snit.test: Updated some results to changes in the Tcl 8.5
121           head. This fixes [SF Tcllib Bug 1844106], reported by Larry
122           Virden <lvirden@users.sourceforg.net>. Thanks.
123
124 2007-09-12  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
125
126         *
127         * Released and tagged Tcllib 1.10 ========================
128         * 
129
130 2007-08-20  Andreas Kupries  <andreask@activestate.com>
131
132         * snit.test: Fixed bad indices in tests causing the generation of
133           bogus expected error messages.
134
135 2007-07-03  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
136
137         * main1_83.tcl (::snit::Comp.statement.oncget): Fixed double
138         * main1.tcl (::snit::Comp.statement.oncget): import of instance
139         * main2.tcl (::snit::Comp.statement.oncget): and type variables.
140         * snit.man: Bumped versions to 1.3.1 and 2.2.1 respectively.
141         * pkgIndex.tcl:
142         * snit.tcl:
143         * snit2.tcl:
144
145 2007-07-02  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
146
147         * snit.test: Snit versions bumped to 1.3 and 2.2. Extended
148         * snit.man: 'info' method and typemethod with sub-methods
149         * snitfaq.man: 'args', 'body' and 'default' to query method
150         * main1.tcl: arguments, argument defaults, and bodies.
151         * main1_83.tcl:
152         * main2.tcl:
153         * pkgIndex.tcl:
154
155 2007-06-22  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
156
157         * snitfaq.man: Replaced deprecated {expand} with {*}.
158
159 2007-05-01  Andreas Kupries  <andreask@activestate.com>
160
161         * main2.tcl: [Bug 1710640]. Replaced deprecated {expand} with {*}.
162
163         * snit.test: Updated to changes in 8.5a6.
164
165 2007-03-21  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
166
167         * snit.man: Fixed all warnings due to use of now deprecated
168         * snitfaq.man: commands. Added a section about how to give
169           feedback.
170
171 2007-02-12  Andreas Kupries  <andreask@activestate.com>
172
173         * snitfaq.man: Fixed typos, etc. reported in [Bug 1658089].
174
175 2006-10-19  Jeff Hobbs  <jeffh@ActiveState.com>
176
177         * snit.man, main1.tcl, main1_83.tcl, main2.tcl: Allow -class to be
178         passed to snit::widget. [Patch 1580120]
179         * pkgIndex.tcl, snit.tcl, snit2.tcl: Bumped versions to 1.2.1 / 2.1.1.
180
181 2006-10-03  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
182
183         *
184         * Released and tagged Tcllib 1.9 ========================
185         * 
186
187 2006-09-20  Will Duquette <will@wjduquette.com>
188         * pkgIndex.tcl, snit2.tcl, snit.man, snitfaq.man, README.txt: 
189         Bumped the version number from 2.0 to 2.1, per Andreas' request.
190         Also, added details about the implications of 2.1's use of
191         [namespace path] to README.txt and the Snit FAQ.
192         
193 2006-09-16  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
194
195         * snit_tcl83_utils.tcl: Made the initialization of the
196           compatibility system a bit more robust against loading it
197           multiple times.
198
199 2006-09-11  Will Duquette <will@wjduquette.com>
200         * main2.tcl: Comp.statement.typevariable now places the type name
201         directly in the "tvprocdec" rather than waiting to substitute it
202         in later.
203
204 2006-08-19  Will Duquette <will@wjduquette.com>
205         * main2.tcl, snit.test: Fixed Bug 1483168: "Namespaced snit objs
206         are not commands in their ns".  In particular, Snit 2.x types and
207         widgets now use [namespace path] to give themselves access to
208         their parent namespace.
209         * snit.man,snitfaq.man: Updated accordingly; also, fixed a couple
210         of typos in snitfaq.man.
211
212         * main2.tcl: Snit 2.x now uses [namespace upvar] where appropriate
213         throughout the Snit run-time and also for implicit declaration of
214         instance variables; I still need to use it for implicit
215         declaration of type variables.  On my machine, dispatch of a
216         method with 10 instance variables is over twice as fast
217         when the variables are declared using [namespace upvar] rather
218         than [::variable ${selfns}::varname].
219
220         * main2.tcl: Snit 2.x now uses [namespace upvar] for implicit
221         declaration of type variables as well.  It develops that
222         [namespace upvar] is a lot faster than [::variable] even when 
223         using the default namespace (e.g., "::variable varname").
224         
225 2006-08-15  Will Duquette <will@wjduquette.com>
226         * main2.tcl, snit.test: Fixed Bug 1532791: "snit2, 
227         snit::widget problem".
228
229 2006-08-12  Will Duquette <will@wjduquette.com>
230         * main1.tcl, main1_83.tcl, main2.tcl: Replaced as many [string equal] calls
231         in main1_83.tcl with {"" ==/!= $a} expressions, so that the
232         differences between the two files are minimized.  Also removed the
233         "-glob" from calls to "array names" in main1.tcl.  There are now
234         only a few remaining differences between the two files.
235
236         Also, I added a "return" to the end of RT.DestroyObject in all
237         three "main" modules, to prevent a confusing return value from
238         "$object destroy" that Andreas noticed a while back.
239
240         * snit.test: Two tests, iinfo-6.4 and iinfo-6.5, failed on Tcl
241         8.3.  The -result in both cases was a list of Tk widget options
242         that included some new options defined in Tcl 8.4.  I added two
243         new constraints, tcl83 and tcl84, and duplicated the two tests,
244         one for each.
245         
246 2006-08-10  Will Duquette <will@wjduquette.com>
247         * snit.man: Added documentation for how to define new
248         validation types.
249
250 2006-08-09  Will Duquette <will@wjduquette.com>
251         * snit.man: Added documentation for the "-type" option-definition
252         option, and for the validation types.  I still need to fill in a
253         section on defining new validation types.
254         * validate.tcl: Cleaned up the header comment.
255
256 2006-08-08  Will Duquette <will@wjduquette.com>
257         * main1.tcl: Removed all "eq" and "ne" expressions, to reduce
258         the differences between main1.tcl and main1_83.tcl.  Unlike
259         main1_83.tcl, though, I used the forms {"" == $a} and 
260         {"" != $a} in preferences to [string equal], as they are
261         both shorter and more efficient.  I used [string equal]
262         only when comparing two variables.  The next step is
263         to update main1_83.tcl to use the {"" ==/!= $a} form 
264         where possible, in preference to [string equal]; then,
265         most of the code can be shared between the two modules,
266         which will simplify maintenance.
267
268 2006-08-07  Will Duquette <will@wjduquette.com>
269         * Implemented "-type" option-definition option in main2.tcl,
270         for Snit 2.x, and main1_83.tcl for Snit 1.2 on Tcl 8.3.
271
272 2006-08-06  Will Duquette <will@wjduquette.com>
273         * Major reorganization of the code modules.  snit.tcl and
274         snit2.tcl are now just short loader scripts.  The Snit 1.x
275         compiler and run-time library are implemented in main1.tcl and
276         main1_83.tcl, respectively; the Snit 2.x compiler and run-time
277         are in main2.tcl.  Both loaders load validate.tcl, which contains
278         the new validation types.  This scheme is documented in
279         modules.txt.
280
281         * Bumped the Snit 1.x version number to Snit 1.2, since 
282         Snit 1.1 has been a robust, stable release.
283
284         * snit83.tcl: Removed; obsolete
285         * snit84.tcl: Removed; obsolete
286
287         * snit.tcl, main1_83.tcl: snit_tcl83_utils.tcl is now sourced in
288         snit.tcl rather than main1_83.tcl.  I don't believe this should
289         cause a problem....but it needs to be tested.
290
291         * snit.test: Added tests for Snit validation types.  These tests 
292         pass for Snit 2.x and for Snit 1.2 with Tcl 8.4.  They *should*
293         pass for Snit 1.2 with Tcl 8.3, but I've been unable to test that.
294
295         * README.txt: Updated
296
297         * main1.tcl, snit.test: Implemented the "-type" option-definition
298         option for Snit 1.2 and Tcl 8.4, and added related tests.
299
300         * Still to do: 
301            1. Implement the "-type" option-definition option in
302               main1_83.tcl and main2.tcl.
303            2. Write documentation for "-type" and for the Snit 
304               validation types.
305            3. Consider refactoring main1.tcl, main1_83.tcl for
306               maximum commonality, to simplify future changes of
307               this kind.
308
309 2006-08-05  Will Duquette <will@wjduquette.com>
310         * validate.tcl: New module; defines a number of "validation
311         types".  These will be used with the forthcoming "-type"
312         option-definition option to add robust validation for snit::type
313         and snit::widget options.
314         
315 2006-07-26  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
316
317         * snitfaq.man: Finally fixed the two ambigous section titles.
318
319 2006-01-30  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
320
321         * snit.tcl: Fixed [SF Tcllib Bug 1414589], prevent the package
322           activation code from stomping on the global variable 'dir'.
323
324 2006-01-29  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
325
326         * snit.test: Fixed use of duplicate test names. Whitespace police
327           as well.
328
329 2006-01-26  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
330
331         * snit.test: More boilerplate simplified via use of test support.
332
333 2006-01-19  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
334
335         * snit.test: Hooked into the new common test support
336           code. Reactivated the tests based on the commands wrongNumArgs
337           and tooManyArgs. Coming out of the new test support code.
338
339 2006-01-14  Will Duquette  <will@wjduquette.com>
340
341         * snit2.tcl (::snit::RT.UnknownMethod):  When creating a new
342           submethod ensemble, creates it in the ${selfns} namespace
343           instead of in the ${type} namespace (fix courtesy of
344           Anton Kovalenko).  Previously, multiple objects of a type that
345           defines a submethod ensemble would share a single ensemble,
346           with confusing results.
347         * snit.test: Added test hmethod-1.6, to test for the above error.
348           As expected, there was no error in snit 1.1, but the test failed
349           in snit 2.0 until the above change was made.
350         * snit.test: "if 0"'d out some tests that make use of
351           tcltest::tooManyArgs and tcltest::wrongNumArgs, two commands 
352           that aren't available to me.
353
354         * snitfaq.man: Fixed a typo and added a suggestion from 
355           Andreas Kupries on how to name component commands.
356
357         * snit.man: Added Kenneth Green and Anton Kovalenko to the list 
358           of names in the "Credits".
359
360 2005-12-05  Andreas Kupries <andreask@activestate.com>
361
362         * snit83.tcl: Replaced the direct use of / path separator with a
363           proper file join.
364
365 2005-11-07  Andreas Kupries <andreask@activestate.com>
366
367         * pkgIndex.tcl: Moved the selection of the implementation out of
368           the package declaration into the runtime.
369
370         * snit.tcl: Renamed to snit84.tcl. Also a new file containing
371           the selection of the implementation, basic dependency, and
372           common provide command.
373
374         * snit84.tcl: New file. Was originally named 'snit.tcl'. Contains
375           the Tcl 8.4 specific implementation of the package.
376
377         * snit.test: Updated to new entrypoint for snit 1.1.
378
379 2005-10-06  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
380
381         *
382         * Released and tagged Tcllib 1.8 ========================
383         * 
384
385 2005-09-26  Andreas Kupries <andreask@activestate.com>
386
387         * snit.test: Adapted the testsuite to handle the 8.3 backport.
388
389         * snit83.tcl:           Integrated Kenneth Green's backport of
390         * snit_tcl83_utils.tcl: Snit to Tcl 8.3 into the code base.
391         
392         * snit.tcl: Checking the list result of [info commands ] now using
393           [llength] instead of string comparisons.
394
395         * snit2.tcl: Checking the list result of [info commands ] now using
396           [llength] instead of string comparisons.
397
398 2005-09-05  Will Duquette  <will@wjduquette.com>
399
400         * snitfaq.man: Updated for Snit 2.0/1.1.
401
402 2005-08-27  Will Duquette  <will@wjduquette.com>
403
404         * snit.man: Updated for Snit 2.0/1.1
405         * snit.tcl: Added the new hulltypes to snit.tcl (somehow they 
406         didn't get in).
407         * snit.test: Added a test that verifies the list of valid 
408         hulltypes.
409
410 2005-08-22  Jeff Hobbs  <jeffh@ActiveState.com>
411
412         * snit.tcl, snit2.tcl: allow labelframe and ttk::labelframe as
413         hulltypes, and tk::(label)frame (planning ahead ...)
414
415 2005-08-20  Will Duquette <will@wjduquette.com>
416
417         * snit.tcl: It's now an error to call an object's "destroy" method
418         in the object's constructor.
419         * snit2.tcl: Snit 2.0, implemented with "namespace ensemble".
420         * snit.test: Now uses the "-body" style of Tcltests throughout.
421         Also, tests Snit 1.x (snit.tcl) when run with Tcl/Tk 8.4, and
422         tests Snit 2.x when run with Tcl/Tk 8.5.
423
424 2005-08-10  Jeff Hobbs  <jeffh@ActiveState.com>
425
426         * snit.tcl (::snit::Comp.statement.hulltype): make hulltype one of
427         $::snit::hulltypes, allow ttk::frame
428
429 2005-06-07  Will Duquette  <will@wjduquette.com>
430
431         * snit.test (bug-2.1, bug-2.2): Added the "tk" constraint, so that
432         they'll be excluded when snit.test is run with tclsh.
433
434 2005-06-04  Will Duquette  <will@wjduquette.com>
435
436         * snit.tcl, snit.man, snitfaq.man: Updated the copyright
437         information to 2005.
438         * snit.html, faq.html: Removed these files, as they are obsolete.
439         snit.man and snitfaq.man contain the up-to-date documentation.
440
441 2005-06-04  Will Duquette  <will@wjduquette.com>
442
443         * snit.tcl: Bumped the version number to 1.0
444         * pkgIndex.tcl: Bumped the version number to 1.0.
445         * dictionary.txt: Bumped the version number to 1.0.
446         * snit.man: Bumped the version number to 1.0.
447         * snitfaq.man: Bumped the version number to 1.0.
448         
449 2005-06-04  Will Duquette  <will@wjduquette.com>
450
451         * snit.tcl (::snit::RT.DestroyObject)
452         * snit.test (test bug-2.1, bug-2.2): 
453           Fixed [SF Tcllib Bug 1106375].
454
455 2005-06-04  Will Duquette  <will@wjduquette.com>
456
457         * snit.tcl (::snit::Comp.statement.destructor):
458         * snit.test (test bug-1.1)
459           Fixed [SF Tcllib Bug 1161779].
460
461 2005-06-04  Will Duquette  <will@wjduquette.com>
462
463         * snit.tcl: Checked a number of small optimizations Jeff Hobbs
464         sent me. Bumped the version number to 0.98.
465         * pkgIndex.tcl: Bumped the version number to 0.98.
466         * dictionary.txt: Bumped the version number to 0.98.
467         * snit.man: Bumped the version number to 0.98.
468         * snitfaq.man: Bumped the version number to 0.98.
469
470 2005-04-11  Marty Backe <marty@lucidway.org>
471
472         * snit.man: Fixed typo in the -configuremethod example.
473
474 2005-02-14  Andreas Kupries <andreask@activestate.com>
475
476         * snitfaq.man: Fixed a number of typos reported by Bob Techentin,
477           see [SF Tcllib Bug 1050674].
478
479 2004-10-05  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
480
481         *
482         * Released and tagged Tcllib 1.7 ========================
483         * 
484
485 2004-09-23  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
486
487         * snit.test: Fixed the tests which were dependent on the exact
488           order of results returned by [array names]. Which failed for Tcl
489           8.5. Added lsort and updated expected results, for canonical
490           comparison.
491
492 2004-09-18  Will Duquette  <will@wjduquette.com>
493
494         * snit.man:     Documented hierarchical methods and typemethods.
495
496         * Everything:   Updated version to 0.97.
497
498 2004-09-16  Will Duquette  <will@wjduquette.com>
499
500         * snit.tcl      In "component foo -public name", the "-public
501                         name" part is now implemented as "delegate method
502                         {name *} to foo".
503         * snit.test     Added tests for "$type info typemethods", "$self
504                         info typemethods" and "$self info methods" for the
505                         case of hierarchical methods/typemethods, and
506                         fixed related bugs in snit.tcl.
507
508 2004-09-14  Will Duquette  <will@wjduquette.com>
509
510         * snit.tcl      Modified the implementation of hierarchical methods;
511         * snit.test     this involved extending the syntax of method
512                         "using" patterns to better support the 
513                         hiearchical case.
514
515         * snit.tcl      Extended the "delegate method *" and
516         * snit.test     "delegate typemethod *" syntax to work better with
517                         hierarchical methods.  
518                         E.g., "delegate method {tail *} to tail" now maps
519                         "$self tail wag" to "$tail wag"
520
521 2004-09-12  Will Duquette  <will@wjduquette.com>
522
523         * snit.tcl      Added support for hierarchical type methods,
524         * snit.test     analogously to the support for regular methods.
525         * README.txt
526
527         * snit.tcl      Refactored the compilation of hierarchical
528         * snit.test     methods and typemethods to remove duplicated code.
529
530 2004-09-10  Will Duquette  <will@wjduquette.com>
531
532         * snit.tcl      Added support for hierarchical methods: methods
533         * snit.test     with submethods.  The documentation has not yet
534         * README.txt    been updated.
535
536         * snit.tcl      Bug fix: "delegate method {a b} to comp" now produces
537         * snit.test     the call "$comp a b" instead of "$comp a_b".
538
539 2004-09-04  Will Duquette  <will@wjduquette.com>
540
541         * snit.tcl      Bug fix: read-only options were read-only only
542         * snit.test     if they weren't set at creation time; the 
543         * README.txt    configure cache wasn't being cleared properly
544                         after creation.
545
546 2004-08-28  Will Duquette  <will@wjduquette.com>
547
548         * snit.tcl:     Minor tweaks to instance creation to improve
549         * dictionary    speed.  No major gain.  Also, -simpledispatch yes
550         * snit.man      now supports instance renaming again.
551         * snitfaq.man
552         
553
554 2004-08-22  Will Duquette  <will@wjduquette.com>
555
556         * snit.tcl      Defined the -simpledispatch pragma.  Updated
557         * snit.test     the test suite and the relevant documentation.
558         * snit.man
559         * README.txt
560         * snitfaq.man
561         * dictionary
562
563 2004-08-14  Will Duquette  <will@wjduquette.com>
564
565         * snit.tcl      Defined the -hastypemethods pragma, and added
566         * snit.test     relevant tests and documentation.
567         * snit.man      
568         * README.txt
569         * snitfaq.man
570
571 2004-08-12  Will Duquette  <will@wjduquette.com>
572
573         * snit.tcl      Under appropriate conditions, calling a
574         * snit.test     snit::type command with no arguments will create
575         * snit.man      an instance with an automatically generated name.
576         * README.txt
577
578 2004-08-11  Will Duquette  <will@wjduquette.com>
579
580         * snit.tcl      Added the -hasinfo pragma, along with the
581         * snit.test     appropriate tests.  Updated documentation.
582         * snit.man
583         * README.txt
584
585         * snit.tcl      The "configure", "configurelist" and "cget"
586         * snit.test     instance methods, along with the "options"
587         * snit.man      instance variable, are defined only if the
588         * README.txt    type defines at least one option (either
589                         locally or by delegation).
590
591 2004-08-07  Will Duquette  <will@wjduquette.com>
592
593         * All files     Updated to Snit V0.96 for post-0.95 development.
594                         Fixed bug: methods called via [mymethod] can now
595                         return exotic return codes, e.g.,
596                         "return -code break"
597
598 2004-08-04  Will Duquette  <will@wjduquette.com>
599
600         * snitfaq.man   Updated the Snit FAQ document.
601
602         * snit.man      Finalized Snit V0.95, and updated the version number
603         * snit.tcl      throughout.
604         * pkgIndex.tcl
605         * README.txt
606
607 2004-07-27  Will Duquette  <will@wjduquette.com>
608
609         * snit.man      Updated the manpage to describe the new "pragma"
610                         statement.  Also, changed the SNIT acronym in the
611                         title to "Simple Now In Tcl", i.e., objects are
612                         now simple.
613
614         * snit.tcl      Added another pragma, -canreplace.  If false
615         * snit.test     (the default) snit::types can no longer create
616         * README.txt    instances which replace existing Tcl commands.
617         * snit.man      Setting "pragma -canreplace yes" restores the
618         * dictionary    previous behavior.
619
620         * snit.tcl      The type definition statements "variable" and
621         * snit.test     "typevariable" now take a "-array" option that
622         * README.txt    allows them to initialize array variables with
623         * snit.man      an "array set" list.
624
625         * snit.test     Fixed Snit bug 899207 (snit test failures)
626
627         * snit.tcl      Added new instance introspection methods 
628         * snit.test     "info typemethods" and "info methods", and a new
629         * README.txt    type introspection typemethod "info typemethods".
630         * snit.man      
631         * roadmap.txt
632
633         * snit.man      Reviewed the entire man page, and made copious
634                         changes and fixes.
635
636         * snit.tcl      Revised many of the error messages to be more 
637         * snit.test     Tcl/Tk-like.  Double-quotes are used instead of
638                         single quotes, and terminal periods are omitted.
639         
640         * snit.tcl      Added some code to method and typemethod dispatch
641         * snit.test     so that the return code (e.g., return -code break)
642                         returned by the method/typemethod code is passed
643                         along unchanged.  This is mostly so that methods
644                         and typemethods can conditionally break in event 
645                         bindings.
646         
647 2004-07-26  Will Duquette  <will@wjduquette.com>
648
649         * snit.tcl      Implemented -configuremethod and configure command
650         * snit.test     caching; added tests to ensure that the cache is
651         * roadmap.txt   cleared when necessary.  Implemented -validatemethod
652         * dictionary    and added tests.  Implemented -readonly and added
653         * README.txt    tests.
654
655         * snit.man      Updated the man page with the new option
656                         definition syntax.
657
658         * snit.tcl      Added the "pragma" statement, and three pragma
659         * snit.test     options, -hastypeinfo, -hastypedestroy, and
660         * roadmap.txt   -hasinstances, plus related tests.  It still
661         * dictionary    needs to be documented.
662
663 2004-07-25  Will Duquette  <will@wjduquette.com>
664
665         * snit.tcl      Renamed some procs for clarity, and repaired some
666         * roadmap.txt   omissions in roadmap.txt.  Added "cget" command
667         * snit.test     caching for additional speed-up.
668         * dictionary.txt
669
670 2004-07-24  Will Duquette  <will@wjduquette.com>
671
672         * snit.tcl      (::snit::RT.MethodCacheLookup): The cached command
673                         is now generated as a list, not a string; this
674                         improves the speed of method invocation by quite a 
675                         bit.
676
677 2004-07-24  Will Duquette  <will@wjduquette.com>
678
679         * snit.tcl      Consolidated the option typevariables into a
680         * dictionary    single array, Snit_optionInfo.  Implemented
681         * roadmap.txt   parsing of the new option definition syntax;
682         * snit.test     the -validatemethod, -configuremethod, and
683                         -cgetmethod options as yet have no effect.
684                         Added tests to ensure that the 'option' and
685                         'delegate option' statements populate
686                         Snit_optionInfo properly.
687
688                         Added "starcomp" to the Snit_optionInfo array.
689                         When "delegate option *" is used, "*" no longer 
690                         has a "target-$opt" entry, nor does it appear
691                         in "delegated-$comp".  Instead, "starcomp" is the
692                         name of the component to which option "*" is
693                         delegated, or "".
694
695                         Reimplemented user-defined "cget" handlers using
696                         the "-cgetmethod" option definition option.  
697                         The "oncget" statement now defines a method, and
698                         sets the option.
699
700 2004-07-21  Will Duquette  <will@wjduquette.com>
701
702         * README.txt    Updated to reflect recent changes.
703         * snit.man
704
705 2004-07-20  Will Duquette  <will@wjduquette.com>
706
707         * snit.tcl      Finished the refactoring job.  All extraneous
708         * roadmap.txt   code has been moved from the type templates to the
709                         ::snit:: runtime.
710
711 2004-07-19  Will Duquette  <will@wjduquette.com>
712
713         * snit.tcl      Refactored %TYPE%::Snit_optionget to 
714         * roadmap.txt   ::snit::RT.OptionDbGet. Refactored 
715                         %TYPE%::Snit_cleanup to ::snit::RT.DestroyObject,
716                         %TYPE%::Snit_tracer to ::snit::RT.InstanceTrace,
717                         and %TYPE%::Snit_removetrace to
718                         ::snit::RT.RemoveInstanceTrace.
719
720 2004-07-17  Will Duquette  <will@wjduquette.com>
721
722         * snit.tcl        Added "delegate typemethod ..." in all its glory,
723         * snit.test       including "delegate typemethod *".  Made it 
724         * dictionary.txt  Possible to delegate an instance method to a
725         * roadmap.txt     typecomponent.  Added tests to ensure that
726                           variable/typevariable and component/typecomponent 
727                           names do not collide.  Updated a number of 
728                           compilation error messages for consistency.
729                           Moved the remaining typemethod definitions from the 
730                           template code and replaced them delegations to
731                           the Snit runtime library.  Added/modified
732                           relevant tests, and updated the roadmap and 
733                           dictionary files.  
734
735 2004-07-15  Will Duquette  <will@wjduquette.com>
736
737         * snit.tcl      Replaced the old typemethod definition and
738                         cacheLookup code with new pattern-based code, just
739                         like the method definition and lookup.  The
740                         cache lookup routine doesn't yet understand 
741                         typemethod "*".  The next step is to implement
742                         typecomponents and "delegate typemethod".
743
744         * dictionary.txt  Documented the changes related to the above
745                         change. 
746
747 2004-07-14  Will Duquette  <will@wjduquette.com>
748
749         * snit.tcl      Replaced %TYPE%::Snit_comptrace with
750                         snit::RT.ComponentTrace.
751
752                         Replaced %TYPE%::Snit_cacheLookup with
753                         snit::RT.MethodCacheLookup
754
755                         Replaced %TYPE%::Snit_typeCacheLookup with
756                         snit::RT.TypemethodCacheLookup
757
758         * snit.test     Added a test to verify that a widget's hull
759                         component cannot be altered once it is set.
760         
761         * roadmap.txt   Documents the internal structure of snit.tcl.
762         
763 2004-07-11  Will Duquette  <will@wjduquette.com>
764
765         * snit.tcl      Renamed a number of internal commands, for
766                         clarity.  
767
768                         Refactored the standard method bodies
769                         out of the type definition and into the Snit
770                         runtime using delegation.
771
772                         Defined snit::compile which compiles a 
773                         type definition into the Tcl script which
774                         actually defines the type.
775
776         * snit.test     Added and modified appropriate tests.
777
778         * README.txt    Added a bullet about snit::compile.
779
780 2004-07-05  Will Duquette  <will@wjduquette.com>
781
782         * snit.tcl      Replaced the old method cacheLookup code with new
783                         code based on command patterns.  All tests pass;
784                         no test changes were needed.  All is now ready to
785                         add the new "delegate method" "using" keyword.
786         * dictionary.txt
787                         This file documents Snit's private variables.
788                         It's up-to-date, and checked in for the first
789                         time.
790
791         * snit.tcl      Implemented the new "using <pattern>" clause to
792         * snit.test     "delegate method", and added relevant tests.
793
794         * snit.man      Documented the new "delegate method" syntax.
795         * README.txt
796
797 2004-07-04  Will Duquette  <will@wjduquette.com>
798
799         * snit.tcl      Re-implemented the option and method delegation 
800         * snit.test     syntax so that the order of clauses is no longer
801                         important.  Along the way, I made the relevant
802                         error messages more specific.
803
804 2004-06-26  Will Duquette  <will@wjduquette.com>
805
806         * snit.tcl      Added the "component" statement, with two options, 
807         * snit.test     -public and -inherit.  Added all relevant tests.
808         * snit.man      Updated the man page to describe it.
809
810 2004-05-30  Will Duquette  <will@wjduquette.com>
811
812         * snit.man      Updated per 0.94 changes to date; also I made a
813                         sweep through the whole document and cleaned
814                         things up here and there for readability.
815
816 2004-05-29  Will Duquette  <will@wjduqette.com>
817
818         * snit.tcl      Moved Snit_component to snit::Component.
819                         
820                         Removed the "type" argument from all of the
821                         "Type.*" procs.  Instead, the compilation type
822                         is available as $compile(type).  Consequently,
823                         the Type.* procs can now be aliased into the
824                         compiler just once, instead of with every type
825                         definition.  (Did that.)
826
827                         Defined snit::macro.
828
829         * snit.test     Added tests for snit::macro.
830
831 2004-05-23  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
832
833         *
834         * Released and tagged Tcllib 1.6.1 ========================
835         * 
836
837 2004-05-15  Will Duquette  <will@wjduquette.com>
838
839         * snit.tcl:     Updated version to 0.94
840         * pkgIndex.tcl: 
841
842         * snit.tcl:     Modified the Snit_dispatcher function to
843                         use a method command cache.  Method commands
844                         are assembled in Snit_cacheLookup only if
845                         they aren't found in the cache.  The 
846                         new Snit_dispatcher was much shorter,
847                         so its code was moved into the object's
848                         instance command, and Snit_dispatcher
849                         was deleted altogether.  These changes 
850                         speed up method calls considerably.
851
852                         Snit_tracer was then modified to clear the
853                         method cache when the instance command is 
854                         renamed--the cached commands contained the
855                         old instance command name.
856
857         * snit.test:    Components can be changed dynamically; the
858                         method cache breaks this, because the 
859                         previous component's command is still
860                         cached.  Added a test that checks whether
861                         the method cache is cleared properly when
862                         a component is changed.
863
864         * snit.tcl:     Snit_comptrace now clears the method cache
865                         when a component is redefined.
866
867         * snit.tcl:     Added a type method cache.  Type methods 
868                         (with the exception of implicit "create") are
869                         now as fast as instance methods.  This is a
870                         naive implementation, though--for typemethods,
871                         the cache could be populated at definition
872                         time, since there's no delegation.  Of course,
873                         if I added typemethod delegation then what I'm
874                         doing is appropriate.
875
876         * snit.tcl:     Reorganized some things, in preparation to move
877                         shared code from the type definition to the 
878                         snit:: namespace.
879
880         * snit.tcl:     Made %TYPE%::mymethod an alias to snit::MyMethod.
881
882         * snit.tcl:     Added %TYPE%::myproc, as an alias to 
883         * snit.test:    snit::MyProc.  "codename" is now deprecated.
884                         Added tests for myproc.
885
886         * snit.tcl:     %TYPE%::codename is now an alias to
887                         snit::CodeName.
888
889         * snit.tcl:     Added %TYPE%::myvar and %TYPE%::mytypevar; these
890                         replace %TYPE%::varname and %TYPE%::typevarname,
891                         which are now deprecated.  All are now implemented
892                         as aliases to calls in snit::.
893
894         * snit.tcl:     %TYPE%::variable is now an alias to
895                         snit::variable.
896
897         * snit.tcl:     %TYPE%::from is now an alias to snit::From.
898
899 2004-02-26  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
900
901         * snit.test:    Codified the requirement of Tcl 8.4 into
902         * pkgIndex.tcl: package index and test suite.
903
904 2004-02-15  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
905
906         *
907         * Released and tagged Tcllib 1.6 ========================
908         * 
909
910 2004-02-07  Will Duquette  <will@wjduquette.com>
911
912         * README.txt:  Added 0.93 information to README.txt.
913
914         * snit.tcl:    Fixed bug: "$obj info vars" used to leave out "options"
915         * snit.test:   if no options were defined.  It's clearer if the 
916                        behavior is always the same.
917
918                        Fixed tcllib bugs item #852945: variable.  The
919                        statement "variable ::my::qualified::name" in an
920                        instance method now makes "name" available, just
921                        as the standard "variable" command does.
922
923                        Fixed bug: in some cases the type command was
924                        created even if there was an error defining the
925                        type.  The type command is now cleaned up in these
926                        cases.  (Credit Andy Goth)
927
928         * snit.tcl:    Implemented RFE 844766: need ability to split class
929         * snit.test:   defs across files.  Added the snit::typemethod and
930         * snit.html:   snit::method commands; these allow typemethods and
931                        methods to be defined after the class already exists.
932
933 2004-02-07  Will Duquette  <will@wjduquette.com>
934
935         * All:         Updated version to 0.93.
936         * snit.tcl:    The %AUTO% name counter wraps around to 0 when it
937                        reaches 2^31 - 1, to prevent integer overflow
938                        errors.
939         * snit.html:   Minor corrections and updates.
940         * faq.html
941
942 2003-12-06  Will Duquette  <will@wjduquette.com>
943
944         * All:         Updated version to 0.92.
945
946         * snit.tcl     Snit now propagates errorCode properly when 
947         * snit.test    propagating errors.
948
949 2003-12-01  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
950
951         * snit.man:    Updated to changes in the .html files.
952         * snitfaq.man: 
953
954 2003-11-21  Will Duquette  <will@wjduquette.com>
955
956         * snit.tcl:      Updated version to 0.91.
957         * pkgIndex.tcl: 
958
959         * snit.tcl:      Added the "expose" statement to type and widget
960                          definitions.
961         * snit.test:     Added appropriate tests.
962         * snit.html:     Added documentation for "expose".
963         * faq.html:      Updated the FAQ entries.
964
965         * snit.tcl:      Added "string match" patterns to the Snit info
966                          methods.
967         * snit.test:     Added appropriate tests.
968         * snit.html:     Updated documentation.
969
970
971 2003-10-28  Andreas Kupries  <andreask@activestate.com>
972
973         * snit.man:    Fixed typos in documentation.
974         * snitfaq.man: 
975
976 2003-10-27  Will Duquette  <will@wjduquette.com>
977
978         * snit.html: Fixed typos in documentation.
979         * faq.html:
980
981 2003-10-27  Andreas Kupries  <andreask@activestate.com>
982
983         * snit.man:    Updated to changes in the .html files.
984         * snitfaq.man: 
985
986 2003-10-25  Will Duquette  <will@wjduquette.com>
987
988         * snit.tcl:  Added the "except" clause for "delegate method *" and
989         * snit.test: "delegate option *".  This allows the user to
990                      explicitly exclude certain methods and options.
991                      Added appropriate tests.
992
993         * snit.html: Gave the Snit FAQ a bit of an overhaul, and added 
994         * faq.html:  information corresponding to the recent code
995                      changes, including a great deal of material on Snit
996                      and the Tk option database.  Updated the Snit man
997                      page to be consistent with the recent code changes.
998
999 2003-10-23  Andreas Kupries  <andreask@activestate.com>
1000
1001         * snit.man: Updated from Will's html doc's.
1002
1003 2003-10-23  Will Duquette  <will@wjduquette.com>
1004
1005         * snit.html: Added documentation for the new "hulltype",
1006                      "widgetclass", and "install" commands.  Updated the
1007                      documentation for "installhull" to show the new
1008                      "installhull using" syntax.  Updated the
1009                      documentation for "option" and "delegate option" to
1010                      show how to specify the resource and class names for
1011                      options.  Added a section on the interaction between
1012                      Snit and the Tk option database.
1013
1014 2003-10-21  Will Duquette  <will@wjduquette.com>
1015
1016         * snit.tcl:  Add the "hulltype" command.  This allows the snit::widget 
1017         * snit.test: author to choose whether the hull should be a frame
1018                      or a toplevel.  Tests have been updated as usual.
1019
1020 2003-10-20  Will Duquette  <will@wjduquette.com>
1021
1022         * snit.tcl:  The new "install" command can now be used to install
1023         * snit.test: components for snit::types as well.  It doesn't add
1024                      any value, since there's no option database, but at
1025                      least the syntax will be the same.
1026
1027                      "install" now initializes the component properly
1028                      from the option database when "option *" has been
1029                      delegated to it.
1030
1031                      Tests have been updated as usual.
1032
1033 2003-10-19  Will Duquette  <will@wjduquette.com>
1034
1035         * snit.tcl:  During normal widget creation, the default values
1036         * snit.test: for a widget's local options are overridden by
1037                      values from the option database.
1038
1039                      Array %TYPE%::Snit_compoptions now lists delegated 
1040                      option names for each component.
1041
1042                      Added a new command, "install", for use in widget
1043                      and widgetadaptor constructors.  Install creates a
1044                      widget, assigning it to a component; it also queries
1045                      the option database for any option values that are
1046                      delegated to this component.
1047
1048                      Modified installhull, adding a new form that queries
1049                      the option database as appropriate for options
1050                      delegated to the hull widget.
1051
1052                      At this point, the only options whose default values
1053                      do not come from the option database in the proper
1054                      way are those implicitly delegated by "delegate
1055                      option *" to a non-hull widget.  I need to think
1056                      about those.
1057
1058                      Of course, new tests have been added for all of this.
1059
1060                      The version number in snit.tcl has been updated to 0.84.
1061
1062 2003-10-18  Will Duquette  <will@wjduquette.com>
1063
1064         * snit.tcl:  Added the "widgetclass" statement; this allows
1065         * snit.test: snit::widgets (and nothing else) to explicitly set
1066                      the widget class name passed to the hull as "-class".
1067                      In addition, the hull's -class is set automatically, 
1068                      to the explicit widgetclass, if any, or to the 
1069                      widget type name with an initial capital letter.
1070
1071                      Next, an object's options now have real resource
1072                      and class names, which are reported correctly by 
1073                      "$obj configure".  By default, the resource name
1074                      is just the option name minus the hyphen, and
1075                      the class name is just the resource name with an
1076                      initial capital.
1077
1078                      In both the "option" and "delegate option"
1079                      statements, the option name may be specified as
1080                      a pair or a triple, e.g.,
1081
1082                        option {-name name Name}
1083
1084                      Thus, the resource name and class name can be
1085                      specified explicitly.
1086
1087                      In previous versions, the resource name and
1088                      class name returned by configure for delegated
1089                      options was the resource name and class name
1090                      returned by the component.  This is no longer
1091                      true; configure now returns the resource and
1092                      class name defined in the type definition.
1093
1094 2003-10-17  Will Duquette  <will@wjduquette.com>
1095
1096         * snit.html: Added typeconstructor documentation.
1097         * faq.html:  
1098
1099         * snit.tcl: Implemented typeconstructors.  A typeconstructor's
1100                     body is executed as part of the compiled type
1101                     definition; it has access to all of the typevariables
1102                     and typemethods.  Its job is to initialize arrays,
1103                     set option database values, and like that.
1104         
1105         * snit.test: Added tests for typeconstructors.
1106
1107 2003-10-16  Will Duquette  <will@wjduquette.com>
1108
1109         * README.txt: Updated to reflect snit's presence in tcllib, and
1110           to point to this ChangeLog file.
1111
1112 2003-09-30  Andreas Kupries  <andreask@activestate.com>
1113
1114         * snit.tcl: A number of changes to the code generation part.
1115           - Usage of [subst]'s was superfluous, removed, simple string
1116             interpolation now.
1117
1118           - Now 'namespace eval type' enclosing the generated code
1119             anymore. Such an eval is now done only at the top of the
1120             generated code to define the namespace, and to
1121             define/initialize the typevariables. All procedure definitions
1122             are now outside of 'namespace eval' and use fully qualified
1123             command names instead.
1124
1125           - Moved the code in [snit::Define] which instantiated the class
1126             using the generated code into it own helper command,
1127             [snit::DefineDo]. Overiding this command allows users of the
1128             snit package perform other actions on the newly defined
1129             class. One example is that of a snit-compiler which goes
1130             through a file containing tcl code and replaces all snit::*
1131             definitions with the generated code.
1132
1133           Motivation for the change: When applying procomp to procedure
1134           definitions inside of a 'namespace eval' they are not
1135           byte-compiled, but kept as encoded literal. This is a direct
1136           consequence of 'namespace eval' not having a compile
1137           function. It also means that introspection, i.e. [info body]
1138           does recover the actual procedure definition. By using procedure
1139           definitions outside of namespace eval, but fully qualified names
1140           this limitation of procomp is avoided. The aforementioned snit
1141           compiler application is another part for this, ensuring that
1142           instead of keeping the whole class definition as one literal for
1143           the snit::* call we actually have tcl code to compile and hide.
1144
1145         * snit.tcl:     Updated the version number to 0.83
1146         * pkgIndex.tcl:
1147         * snit.man:
1148         * snitfaq.man:
1149
1150 2003-07-18  Andreas Kupries  <andreask@activestate.com>
1151
1152         * snit.test: Fixed SF tcllib bug #772535. Instead of using a
1153         * snit.tcl:  variable reference in the callback a regular command
1154                      is called, with the unchanging 'selfns' as argument.
1155                      From there things go through the regular dispatching
1156                      mechanism after the actual instance name was obtained.
1157                      Updated all affected tests.
1158
1159                      Updated dmethod-1.5 also, 'string' delivers a
1160                      different error message.
1161
1162 2003-07-16  Andreas Kupries  <andreask@activestate.com>
1163
1164         * snit.man:    Added references to bug trackers, as part of
1165         * snitfaq.man: caveats. Also added note about bwidget/snit
1166                        interaction.
1167
1168         * snit.tcl: Integrated latest (small) change to original code base
1169           (was not released yet). Removes bad trial to fix up error stack.
1170           We are now at version 0.82. Added note to developers explaining
1171           the catch in Snit_tracer.
1172
1173 2003-07-15  Andreas Kupries  <andreask@activestate.com>
1174
1175         * snit.tcl:    Imported new module into tcllib.
1176         * snit.test:   snit = Snit Is Not IncrTcl
1177         * snit.html:   Author: William Duquette
1178         * faq.html:    OO package + megawidget framework.
1179         * README.txt:
1180         * license.txt:
1181         * pkgIndex.tcl:
1182         * snit.man:
1183         * snitfaq.man: