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