1 2011-12-13 Andreas Kupries <andreas_kupries@users.sourceforge.net>
4 * Released and tagged Tcllib 1.14 ========================
7 2011-01-24 Andreas Kupries <andreas_kupries@users.sourceforge.net>
10 * Released and tagged Tcllib 1.13 ========================
13 2010-06-07 Andreas Kupries <andreask@activestate.com>
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.
22 2010-04-30 Andreas Kupries <andreask@activestate.com>
24 * snitfaq.man: Fixed typo in 'package require' commands, reported
27 2009-12-07 Andreas Kupries <andreas_kupries@users.sourceforge.net>
30 * Released and tagged Tcllib 1.12 ========================
33 2009-11-16 Andreas Kupries <andreask@activestate.com>
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.
44 2009-11-02 Andreas Kupries <andreask@activestate.com>
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.
51 2009-10-31 Will Duquette <will@wjduquette.com>
53 * validate.tcl: Updated all Snit validation types to return the
54 * snit.tcl: validated value, and to throw -errorcode INVALID
56 * snit.man: Relevant changes.
58 2009-09-29 Andreas Kupries <andreas_kupries@users.sourceforge.net>
60 * snit.test: Updated to handle changes in command error messages
63 2009-09-28 Andreas Kupries <andreask@activestate.com>
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
73 2009-06-22 Andreas Kupries <andreask@activestate.com>
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.
84 2009-04-21 Andreas Kupries <andreask@activestate.com>
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.
93 2008-12-12 Andreas Kupries <andreas_kupries@users.sourceforge.net>
96 * Released and tagged Tcllib 1.11.1 ========================
99 2008-10-16 Andreas Kupries <andreas_kupries@users.sourceforge.net>
102 * Released and tagged Tcllib 1.11 ========================
105 2008-08-20 Will Duquette <will@wjduquette.com>
107 * snitfaq.man: Finished up [SF Tcllib Bug 1658089].
109 2008-05-16 Andreas Kupries <andreask@activestate.com>
111 * snitfaq.man: Fixed the sectref argument order issues.
113 2008-05-15 Andreas Kupries <andreas_kupries@users.sourceforge.net>
115 * snitfaq.man: Updated to changes in doctools (sub)section
118 2007-12-04 Andreas Kupries <andreask@activestate.com>
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.
124 2007-09-12 Andreas Kupries <andreas_kupries@users.sourceforge.net>
127 * Released and tagged Tcllib 1.10 ========================
130 2007-08-20 Andreas Kupries <andreask@activestate.com>
132 * snit.test: Fixed bad indices in tests causing the generation of
133 bogus expected error messages.
135 2007-07-03 Andreas Kupries <andreas_kupries@users.sourceforge.net>
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.
145 2007-07-02 Andreas Kupries <andreas_kupries@users.sourceforge.net>
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.
155 2007-06-22 Andreas Kupries <andreas_kupries@users.sourceforge.net>
157 * snitfaq.man: Replaced deprecated {expand} with {*}.
159 2007-05-01 Andreas Kupries <andreask@activestate.com>
161 * main2.tcl: [Bug 1710640]. Replaced deprecated {expand} with {*}.
163 * snit.test: Updated to changes in 8.5a6.
165 2007-03-21 Andreas Kupries <andreas_kupries@users.sourceforge.net>
167 * snit.man: Fixed all warnings due to use of now deprecated
168 * snitfaq.man: commands. Added a section about how to give
171 2007-02-12 Andreas Kupries <andreask@activestate.com>
173 * snitfaq.man: Fixed typos, etc. reported in [Bug 1658089].
175 2006-10-19 Jeff Hobbs <jeffh@ActiveState.com>
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.
181 2006-10-03 Andreas Kupries <andreas_kupries@users.sourceforge.net>
184 * Released and tagged Tcllib 1.9 ========================
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.
193 2006-09-16 Andreas Kupries <andreas_kupries@users.sourceforge.net>
195 * snit_tcl83_utils.tcl: Made the initialization of the
196 compatibility system a bit more robust against loading it
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
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.
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].
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").
225 2006-08-15 Will Duquette <will@wjduquette.com>
226 * main2.tcl, snit.test: Fixed Bug 1532791: "snit2,
227 snit::widget problem".
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.
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.
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,
246 2006-08-10 Will Duquette <will@wjduquette.com>
247 * snit.man: Added documentation for how to define new
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.
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.
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.
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
281 * Bumped the Snit 1.x version number to Snit 1.2, since
282 Snit 1.1 has been a robust, stable release.
284 * snit83.tcl: Removed; obsolete
285 * snit84.tcl: Removed; obsolete
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.
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.
295 * README.txt: Updated
297 * main1.tcl, snit.test: Implemented the "-type" option-definition
298 option for Snit 1.2 and Tcl 8.4, and added related tests.
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
305 3. Consider refactoring main1.tcl, main1_83.tcl for
306 maximum commonality, to simplify future changes of
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.
315 2006-07-26 Andreas Kupries <andreas_kupries@users.sourceforge.net>
317 * snitfaq.man: Finally fixed the two ambigous section titles.
319 2006-01-30 Andreas Kupries <andreas_kupries@users.sourceforge.net>
321 * snit.tcl: Fixed [SF Tcllib Bug 1414589], prevent the package
322 activation code from stomping on the global variable 'dir'.
324 2006-01-29 Andreas Kupries <andreas_kupries@users.sourceforge.net>
326 * snit.test: Fixed use of duplicate test names. Whitespace police
329 2006-01-26 Andreas Kupries <andreas_kupries@users.sourceforge.net>
331 * snit.test: More boilerplate simplified via use of test support.
333 2006-01-19 Andreas Kupries <andreas_kupries@users.sourceforge.net>
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.
339 2006-01-14 Will Duquette <will@wjduquette.com>
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.
354 * snitfaq.man: Fixed a typo and added a suggestion from
355 Andreas Kupries on how to name component commands.
357 * snit.man: Added Kenneth Green and Anton Kovalenko to the list
358 of names in the "Credits".
360 2005-12-05 Andreas Kupries <andreask@activestate.com>
362 * snit83.tcl: Replaced the direct use of / path separator with a
365 2005-11-07 Andreas Kupries <andreask@activestate.com>
367 * pkgIndex.tcl: Moved the selection of the implementation out of
368 the package declaration into the runtime.
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.
374 * snit84.tcl: New file. Was originally named 'snit.tcl'. Contains
375 the Tcl 8.4 specific implementation of the package.
377 * snit.test: Updated to new entrypoint for snit 1.1.
379 2005-10-06 Andreas Kupries <andreas_kupries@users.sourceforge.net>
382 * Released and tagged Tcllib 1.8 ========================
385 2005-09-26 Andreas Kupries <andreask@activestate.com>
387 * snit.test: Adapted the testsuite to handle the 8.3 backport.
389 * snit83.tcl: Integrated Kenneth Green's backport of
390 * snit_tcl83_utils.tcl: Snit to Tcl 8.3 into the code base.
392 * snit.tcl: Checking the list result of [info commands ] now using
393 [llength] instead of string comparisons.
395 * snit2.tcl: Checking the list result of [info commands ] now using
396 [llength] instead of string comparisons.
398 2005-09-05 Will Duquette <will@wjduquette.com>
400 * snitfaq.man: Updated for Snit 2.0/1.1.
402 2005-08-27 Will Duquette <will@wjduquette.com>
404 * snit.man: Updated for Snit 2.0/1.1
405 * snit.tcl: Added the new hulltypes to snit.tcl (somehow they
407 * snit.test: Added a test that verifies the list of valid
410 2005-08-22 Jeff Hobbs <jeffh@ActiveState.com>
412 * snit.tcl, snit2.tcl: allow labelframe and ttk::labelframe as
413 hulltypes, and tk::(label)frame (planning ahead ...)
415 2005-08-20 Will Duquette <will@wjduquette.com>
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.
424 2005-08-10 Jeff Hobbs <jeffh@ActiveState.com>
426 * snit.tcl (::snit::Comp.statement.hulltype): make hulltype one of
427 $::snit::hulltypes, allow ttk::frame
429 2005-06-07 Will Duquette <will@wjduquette.com>
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.
434 2005-06-04 Will Duquette <will@wjduquette.com>
436 * snit.tcl, snit.man, snitfaq.man: Updated the copyright
438 * snit.html, faq.html: Removed these files, as they are obsolete.
439 snit.man and snitfaq.man contain the up-to-date documentation.
441 2005-06-04 Will Duquette <will@wjduquette.com>
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.
449 2005-06-04 Will Duquette <will@wjduquette.com>
451 * snit.tcl (::snit::RT.DestroyObject)
452 * snit.test (test bug-2.1, bug-2.2):
453 Fixed [SF Tcllib Bug 1106375].
455 2005-06-04 Will Duquette <will@wjduquette.com>
457 * snit.tcl (::snit::Comp.statement.destructor):
458 * snit.test (test bug-1.1)
459 Fixed [SF Tcllib Bug 1161779].
461 2005-06-04 Will Duquette <will@wjduquette.com>
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.
470 2005-04-11 Marty Backe <marty@lucidway.org>
472 * snit.man: Fixed typo in the -configuremethod example.
474 2005-02-14 Andreas Kupries <andreask@activestate.com>
476 * snitfaq.man: Fixed a number of typos reported by Bob Techentin,
477 see [SF Tcllib Bug 1050674].
479 2004-10-05 Andreas Kupries <andreas_kupries@users.sourceforge.net>
482 * Released and tagged Tcllib 1.7 ========================
485 2004-09-23 Andreas Kupries <andreas_kupries@users.sourceforge.net>
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
492 2004-09-18 Will Duquette <will@wjduquette.com>
494 * snit.man: Documented hierarchical methods and typemethods.
496 * Everything: Updated version to 0.97.
498 2004-09-16 Will Duquette <will@wjduquette.com>
500 * snit.tcl In "component foo -public name", the "-public
501 name" part is now implemented as "delegate method
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.
508 2004-09-14 Will Duquette <will@wjduquette.com>
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
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"
521 2004-09-12 Will Duquette <will@wjduquette.com>
523 * snit.tcl Added support for hierarchical type methods,
524 * snit.test analogously to the support for regular methods.
527 * snit.tcl Refactored the compilation of hierarchical
528 * snit.test methods and typemethods to remove duplicated code.
530 2004-09-10 Will Duquette <will@wjduquette.com>
532 * snit.tcl Added support for hierarchical methods: methods
533 * snit.test with submethods. The documentation has not yet
534 * README.txt been updated.
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".
539 2004-09-04 Will Duquette <will@wjduquette.com>
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
546 2004-08-28 Will Duquette <will@wjduquette.com>
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.
554 2004-08-22 Will Duquette <will@wjduquette.com>
556 * snit.tcl Defined the -simpledispatch pragma. Updated
557 * snit.test the test suite and the relevant documentation.
563 2004-08-14 Will Duquette <will@wjduquette.com>
565 * snit.tcl Defined the -hastypemethods pragma, and added
566 * snit.test relevant tests and documentation.
571 2004-08-12 Will Duquette <will@wjduquette.com>
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.
578 2004-08-11 Will Duquette <will@wjduquette.com>
580 * snit.tcl Added the -hasinfo pragma, along with the
581 * snit.test appropriate tests. Updated documentation.
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).
591 2004-08-07 Will Duquette <will@wjduquette.com>
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.,
598 2004-08-04 Will Duquette <will@wjduquette.com>
600 * snitfaq.man Updated the Snit FAQ document.
602 * snit.man Finalized Snit V0.95, and updated the version number
603 * snit.tcl throughout.
607 2004-07-27 Will Duquette <will@wjduquette.com>
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
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.
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.
625 * snit.test Fixed Snit bug 899207 (snit test failures)
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".
633 * snit.man Reviewed the entire man page, and made copious
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.
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
647 2004-07-26 Will Duquette <will@wjduquette.com>
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
655 * snit.man Updated the man page with the new option
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.
663 2004-07-25 Will Duquette <will@wjduquette.com>
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.
670 2004-07-24 Will Duquette <will@wjduquette.com>
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
677 2004-07-24 Will Duquette <will@wjduquette.com>
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.
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
695 Reimplemented user-defined "cget" handlers using
696 the "-cgetmethod" option definition option.
697 The "oncget" statement now defines a method, and
700 2004-07-21 Will Duquette <will@wjduquette.com>
702 * README.txt Updated to reflect recent changes.
705 2004-07-20 Will Duquette <will@wjduquette.com>
707 * snit.tcl Finished the refactoring job. All extraneous
708 * roadmap.txt code has been moved from the type templates to the
711 2004-07-19 Will Duquette <will@wjduquette.com>
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.
720 2004-07-17 Will Duquette <will@wjduquette.com>
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
735 2004-07-15 Will Duquette <will@wjduquette.com>
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".
744 * dictionary.txt Documented the changes related to the above
747 2004-07-14 Will Duquette <will@wjduquette.com>
749 * snit.tcl Replaced %TYPE%::Snit_comptrace with
750 snit::RT.ComponentTrace.
752 Replaced %TYPE%::Snit_cacheLookup with
753 snit::RT.MethodCacheLookup
755 Replaced %TYPE%::Snit_typeCacheLookup with
756 snit::RT.TypemethodCacheLookup
758 * snit.test Added a test to verify that a widget's hull
759 component cannot be altered once it is set.
761 * roadmap.txt Documents the internal structure of snit.tcl.
763 2004-07-11 Will Duquette <will@wjduquette.com>
765 * snit.tcl Renamed a number of internal commands, for
768 Refactored the standard method bodies
769 out of the type definition and into the Snit
770 runtime using delegation.
772 Defined snit::compile which compiles a
773 type definition into the Tcl script which
774 actually defines the type.
776 * snit.test Added and modified appropriate tests.
778 * README.txt Added a bullet about snit::compile.
780 2004-07-05 Will Duquette <will@wjduquette.com>
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.
787 This file documents Snit's private variables.
788 It's up-to-date, and checked in for the first
791 * snit.tcl Implemented the new "using <pattern>" clause to
792 * snit.test "delegate method", and added relevant tests.
794 * snit.man Documented the new "delegate method" syntax.
797 2004-07-04 Will Duquette <will@wjduquette.com>
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.
804 2004-06-26 Will Duquette <will@wjduquette.com>
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.
810 2004-05-30 Will Duquette <will@wjduquette.com>
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.
816 2004-05-29 Will Duquette <will@wjduqette.com>
818 * snit.tcl Moved Snit_component to snit::Component.
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.)
829 * snit.test Added tests for snit::macro.
831 2004-05-23 Andreas Kupries <andreas_kupries@users.sourceforge.net>
834 * Released and tagged Tcllib 1.6.1 ========================
837 2004-05-15 Will Duquette <will@wjduquette.com>
839 * snit.tcl: Updated version to 0.94
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.
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.
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.
864 * snit.tcl: Snit_comptrace now clears the method cache
865 when a component is redefined.
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.
876 * snit.tcl: Reorganized some things, in preparation to move
877 shared code from the type definition to the
880 * snit.tcl: Made %TYPE%::mymethod an alias to snit::MyMethod.
882 * snit.tcl: Added %TYPE%::myproc, as an alias to
883 * snit.test: snit::MyProc. "codename" is now deprecated.
884 Added tests for myproc.
886 * snit.tcl: %TYPE%::codename is now an alias to
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::.
894 * snit.tcl: %TYPE%::variable is now an alias to
897 * snit.tcl: %TYPE%::from is now an alias to snit::From.
899 2004-02-26 Andreas Kupries <andreas_kupries@users.sourceforge.net>
901 * snit.test: Codified the requirement of Tcl 8.4 into
902 * pkgIndex.tcl: package index and test suite.
904 2004-02-15 Andreas Kupries <andreas_kupries@users.sourceforge.net>
907 * Released and tagged Tcllib 1.6 ========================
910 2004-02-07 Will Duquette <will@wjduquette.com>
912 * README.txt: Added 0.93 information to README.txt.
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.
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.
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)
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.
933 2004-02-07 Will Duquette <will@wjduquette.com>
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
939 * snit.html: Minor corrections and updates.
942 2003-12-06 Will Duquette <will@wjduquette.com>
944 * All: Updated version to 0.92.
946 * snit.tcl Snit now propagates errorCode properly when
947 * snit.test propagating errors.
949 2003-12-01 Andreas Kupries <andreas_kupries@users.sourceforge.net>
951 * snit.man: Updated to changes in the .html files.
954 2003-11-21 Will Duquette <will@wjduquette.com>
956 * snit.tcl: Updated version to 0.91.
959 * snit.tcl: Added the "expose" statement to type and widget
961 * snit.test: Added appropriate tests.
962 * snit.html: Added documentation for "expose".
963 * faq.html: Updated the FAQ entries.
965 * snit.tcl: Added "string match" patterns to the Snit info
967 * snit.test: Added appropriate tests.
968 * snit.html: Updated documentation.
971 2003-10-28 Andreas Kupries <andreask@activestate.com>
973 * snit.man: Fixed typos in documentation.
976 2003-10-27 Will Duquette <will@wjduquette.com>
978 * snit.html: Fixed typos in documentation.
981 2003-10-27 Andreas Kupries <andreask@activestate.com>
983 * snit.man: Updated to changes in the .html files.
986 2003-10-25 Will Duquette <will@wjduquette.com>
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.
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.
999 2003-10-23 Andreas Kupries <andreask@activestate.com>
1001 * snit.man: Updated from Will's html doc's.
1003 2003-10-23 Will Duquette <will@wjduquette.com>
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.
1014 2003-10-21 Will Duquette <will@wjduquette.com>
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.
1020 2003-10-20 Will Duquette <will@wjduquette.com>
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.
1027 "install" now initializes the component properly
1028 from the option database when "option *" has been
1031 Tests have been updated as usual.
1033 2003-10-19 Will Duquette <will@wjduquette.com>
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.
1039 Array %TYPE%::Snit_compoptions now lists delegated
1040 option names for each component.
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.
1048 Modified installhull, adding a new form that queries
1049 the option database as appropriate for options
1050 delegated to the hull widget.
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
1058 Of course, new tests have been added for all of this.
1060 The version number in snit.tcl has been updated to 0.84.
1062 2003-10-18 Will Duquette <will@wjduquette.com>
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.
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
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.,
1082 option {-name name Name}
1084 Thus, the resource name and class name can be
1085 specified explicitly.
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.
1094 2003-10-17 Will Duquette <will@wjduquette.com>
1096 * snit.html: Added typeconstructor documentation.
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.
1105 * snit.test: Added tests for typeconstructors.
1107 2003-10-16 Will Duquette <will@wjduquette.com>
1109 * README.txt: Updated to reflect snit's presence in tcllib, and
1110 to point to this ChangeLog file.
1112 2003-09-30 Andreas Kupries <andreask@activestate.com>
1114 * snit.tcl: A number of changes to the code generation part.
1115 - Usage of [subst]'s was superfluous, removed, simple string
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.
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.
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.
1145 * snit.tcl: Updated the version number to 0.83
1150 2003-07-18 Andreas Kupries <andreask@activestate.com>
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.
1159 Updated dmethod-1.5 also, 'string' delivers a
1160 different error message.
1162 2003-07-16 Andreas Kupries <andreask@activestate.com>
1164 * snit.man: Added references to bug trackers, as part of
1165 * snitfaq.man: caveats. Also added note about bwidget/snit
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.
1173 2003-07-15 Andreas Kupries <andreask@activestate.com>
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.