commit a copy of snit
[scpubgit/TenDotTcl.git] / snit / ChangeLog
diff --git a/snit/ChangeLog b/snit/ChangeLog
new file mode 100644 (file)
index 0000000..66a3ec3
--- /dev/null
@@ -0,0 +1,1183 @@
+2011-12-13  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.14 ========================
+       * 
+
+2011-01-24  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.13 ========================
+       * 
+
+2010-06-07  Andreas Kupries  <andreask@activestate.com>
+
+       * validate.tcl (snit::double, validate): Applied patch by Will
+       * pkgIndex.tcl: fixing the error message for max-limited
+       * snit.man: double types. Bumped versions to 2.3.2 and 1.4.2.
+       * snit.tcl: Extended testsuite.
+       * snit2.tcl:
+       * snit.test:
+
+2010-04-30  Andreas Kupries  <andreask@activestate.com>
+
+       * snitfaq.man: Fixed typo in 'package require' commands, reported
+         by sigzero@gmail.com.
+
+2009-12-07  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.12 ========================
+       * 
+
+2009-11-16  Andreas Kupries  <andreask@activestate.com>
+
+       * main2.tcl (::snit::RT.typemethod.destroy) 
+       (::snit::RT.typemethod.info.instances): 
+       * main1.tcl (::snit::RT.typemethod.info.instances) 
+       (::snit::RT.typemethod.destroy): [Bug 2898640]. Fixed handling of
+       * snit.tcl: unrelated namespaces by restricting the set of
+       * snit2.tcl: children to look at. Bumped versions of v1 and v2 to
+       * pkgIndex.tcl: 1.4.1 and 2.3.1 respectively.
+       * snit.man:
+
+2009-11-02  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.tcl: Bumped versions of v1 and v2 to 1.4 and 2.3
+       * snit2.tcl: respectively, taking the backward compatible
+       * snit.man: API changes to validation types into account.
+       * pkgIndex.tcl:
+
+2009-10-31  Will Duquette  <will@wjduquette.com>
+
+        * validate.tcl: Updated all Snit validation types to return the
+       * snit.tcl: validated value, and to throw -errorcode INVALID
+                   on error.
+       * snit.man: Relevant changes.
+
+2009-09-29  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.test: Updated to handle changes in command error messages
+         done in Tcl 8.6+.
+
+2009-09-28  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.man: Committed a long-standing fix to a bug in the
+       * snit.tcl: last entry. Wrap the close commands into catch
+       * snit2.tcl: to handle the possibility of the std channels
+       * pkgIndex.tcl: not existing. Bumped versions to 1.3.4 and
+       * main1_83.tcl 2.2.4.
+       * main1.tcl:
+       * main2.tcl:
+
+2009-06-22  Andreas Kupries  <andreask@activestate.com>
+
+       * main1.tcl: Fix handling of hierarchical typemethods for missing
+       * main1_83.tcl: subcommands. If a toplevel hmethod is not found
+       * main2.tcl: we can assume it to be an instance name and do an
+       * pkgIndex.tcl: implicit 'create' of it. If the toplevel hmethod
+       * snit.tcl: has already been accepted however a missing submethod
+       * snit2.tcl: has to error out, an implicit create is not possible
+       * snit.test: any longer. Extended the testsuite to cover this
+         case. Bumped the package versions to 2.2.3, and 1.3.3.
+
+2009-04-21  Andreas Kupries  <andreask@activestate.com>
+
+       * main1.tcl (::snit::Comp.Init): Close unused standard channels
+       * main1_83.tcl (::snit::Comp.Init): to prevent the internal compile
+       * main2.tcl (::snit::Comp.Init): interp from blocking a close/open
+       * snit.tcl: dance to replace them in the main interp. Bumped the
+       * snit2.tcl: packages to versions 1.3.2 and 2.2.2 respectively.
+       * pkgIndex.tcl:
+
+2008-12-12  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.11.1 ========================
+       * 
+
+2008-10-16  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.11 ========================
+       * 
+
+2008-08-20  Will Duquette  <will@wjduquette.com>
+
+       * snitfaq.man: Finished up [SF Tcllib Bug 1658089].
+       
+2008-05-16  Andreas Kupries  <andreask@activestate.com>
+
+       * snitfaq.man: Fixed the sectref argument order issues.
+
+2008-05-15  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snitfaq.man: Updated to changes in doctools (sub)section
+         reference handling.
+
+2007-12-04  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.test: Updated some results to changes in the Tcl 8.5
+         head. This fixes [SF Tcllib Bug 1844106], reported by Larry
+         Virden <lvirden@users.sourceforg.net>. Thanks.
+
+2007-09-12  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.10 ========================
+       * 
+
+2007-08-20  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.test: Fixed bad indices in tests causing the generation of
+         bogus expected error messages.
+
+2007-07-03  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * main1_83.tcl (::snit::Comp.statement.oncget): Fixed double
+       * main1.tcl (::snit::Comp.statement.oncget): import of instance
+       * main2.tcl (::snit::Comp.statement.oncget): and type variables.
+       * snit.man: Bumped versions to 1.3.1 and 2.2.1 respectively.
+       * pkgIndex.tcl:
+       * snit.tcl:
+       * snit2.tcl:
+
+2007-07-02  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.test: Snit versions bumped to 1.3 and 2.2. Extended
+       * snit.man: 'info' method and typemethod with sub-methods
+       * snitfaq.man: 'args', 'body' and 'default' to query method
+       * main1.tcl: arguments, argument defaults, and bodies.
+       * main1_83.tcl:
+       * main2.tcl:
+       * pkgIndex.tcl:
+
+2007-06-22  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snitfaq.man: Replaced deprecated {expand} with {*}.
+
+2007-05-01  Andreas Kupries  <andreask@activestate.com>
+
+       * main2.tcl: [Bug 1710640]. Replaced deprecated {expand} with {*}.
+
+       * snit.test: Updated to changes in 8.5a6.
+
+2007-03-21  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.man: Fixed all warnings due to use of now deprecated
+       * snitfaq.man: commands. Added a section about how to give
+         feedback.
+
+2007-02-12  Andreas Kupries  <andreask@activestate.com>
+
+       * snitfaq.man: Fixed typos, etc. reported in [Bug 1658089].
+
+2006-10-19  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * snit.man, main1.tcl, main1_83.tcl, main2.tcl: Allow -class to be
+       passed to snit::widget. [Patch 1580120]
+       * pkgIndex.tcl, snit.tcl, snit2.tcl: Bumped versions to 1.2.1 / 2.1.1.
+
+2006-10-03  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.9 ========================
+       * 
+
+2006-09-20  Will Duquette <will@wjduquette.com>
+       * pkgIndex.tcl, snit2.tcl, snit.man, snitfaq.man, README.txt: 
+       Bumped the version number from 2.0 to 2.1, per Andreas' request.
+       Also, added details about the implications of 2.1's use of
+       [namespace path] to README.txt and the Snit FAQ.
+       
+2006-09-16  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit_tcl83_utils.tcl: Made the initialization of the
+         compatibility system a bit more robust against loading it
+         multiple times.
+
+2006-09-11  Will Duquette <will@wjduquette.com>
+       * main2.tcl: Comp.statement.typevariable now places the type name
+       directly in the "tvprocdec" rather than waiting to substitute it
+       in later.
+
+2006-08-19  Will Duquette <will@wjduquette.com>
+       * main2.tcl, snit.test: Fixed Bug 1483168: "Namespaced snit objs
+       are not commands in their ns".  In particular, Snit 2.x types and
+       widgets now use [namespace path] to give themselves access to
+       their parent namespace.
+       * snit.man,snitfaq.man: Updated accordingly; also, fixed a couple
+       of typos in snitfaq.man.
+
+       * main2.tcl: Snit 2.x now uses [namespace upvar] where appropriate
+       throughout the Snit run-time and also for implicit declaration of
+       instance variables; I still need to use it for implicit
+       declaration of type variables.  On my machine, dispatch of a
+       method with 10 instance variables is over twice as fast
+       when the variables are declared using [namespace upvar] rather
+       than [::variable ${selfns}::varname].
+
+       * main2.tcl: Snit 2.x now uses [namespace upvar] for implicit
+       declaration of type variables as well.  It develops that
+       [namespace upvar] is a lot faster than [::variable] even when 
+       using the default namespace (e.g., "::variable varname").
+       
+2006-08-15  Will Duquette <will@wjduquette.com>
+       * main2.tcl, snit.test: Fixed Bug 1532791: "snit2, 
+       snit::widget problem".
+
+2006-08-12  Will Duquette <will@wjduquette.com>
+       * main1.tcl, main1_83.tcl, main2.tcl: Replaced as many [string equal] calls
+       in main1_83.tcl with {"" ==/!= $a} expressions, so that the
+       differences between the two files are minimized.  Also removed the
+       "-glob" from calls to "array names" in main1.tcl.  There are now
+       only a few remaining differences between the two files.
+
+       Also, I added a "return" to the end of RT.DestroyObject in all
+       three "main" modules, to prevent a confusing return value from
+       "$object destroy" that Andreas noticed a while back.
+
+       * snit.test: Two tests, iinfo-6.4 and iinfo-6.5, failed on Tcl
+       8.3.  The -result in both cases was a list of Tk widget options
+       that included some new options defined in Tcl 8.4.  I added two
+       new constraints, tcl83 and tcl84, and duplicated the two tests,
+       one for each.
+       
+2006-08-10  Will Duquette <will@wjduquette.com>
+       * snit.man: Added documentation for how to define new
+       validation types.
+
+2006-08-09  Will Duquette <will@wjduquette.com>
+       * snit.man: Added documentation for the "-type" option-definition
+       option, and for the validation types.  I still need to fill in a
+       section on defining new validation types.
+       * validate.tcl: Cleaned up the header comment.
+
+2006-08-08  Will Duquette <will@wjduquette.com>
+       * main1.tcl: Removed all "eq" and "ne" expressions, to reduce
+       the differences between main1.tcl and main1_83.tcl.  Unlike
+       main1_83.tcl, though, I used the forms {"" == $a} and 
+       {"" != $a} in preferences to [string equal], as they are
+       both shorter and more efficient.  I used [string equal]
+       only when comparing two variables.  The next step is
+       to update main1_83.tcl to use the {"" ==/!= $a} form 
+       where possible, in preference to [string equal]; then,
+       most of the code can be shared between the two modules,
+       which will simplify maintenance.
+
+2006-08-07  Will Duquette <will@wjduquette.com>
+       * Implemented "-type" option-definition option in main2.tcl,
+       for Snit 2.x, and main1_83.tcl for Snit 1.2 on Tcl 8.3.
+
+2006-08-06  Will Duquette <will@wjduquette.com>
+       * Major reorganization of the code modules.  snit.tcl and
+       snit2.tcl are now just short loader scripts.  The Snit 1.x
+       compiler and run-time library are implemented in main1.tcl and
+       main1_83.tcl, respectively; the Snit 2.x compiler and run-time
+       are in main2.tcl.  Both loaders load validate.tcl, which contains
+       the new validation types.  This scheme is documented in
+       modules.txt.
+
+       * Bumped the Snit 1.x version number to Snit 1.2, since 
+       Snit 1.1 has been a robust, stable release.
+
+       * snit83.tcl: Removed; obsolete
+       * snit84.tcl: Removed; obsolete
+
+       * snit.tcl, main1_83.tcl: snit_tcl83_utils.tcl is now sourced in
+       snit.tcl rather than main1_83.tcl.  I don't believe this should
+       cause a problem....but it needs to be tested.
+
+       * snit.test: Added tests for Snit validation types.  These tests 
+       pass for Snit 2.x and for Snit 1.2 with Tcl 8.4.  They *should*
+       pass for Snit 1.2 with Tcl 8.3, but I've been unable to test that.
+
+       * README.txt: Updated
+
+       * main1.tcl, snit.test: Implemented the "-type" option-definition
+       option for Snit 1.2 and Tcl 8.4, and added related tests.
+
+       * Still to do: 
+          1. Implement the "-type" option-definition option in
+             main1_83.tcl and main2.tcl.
+          2. Write documentation for "-type" and for the Snit 
+             validation types.
+          3. Consider refactoring main1.tcl, main1_83.tcl for
+             maximum commonality, to simplify future changes of
+             this kind.
+
+2006-08-05  Will Duquette <will@wjduquette.com>
+       * validate.tcl: New module; defines a number of "validation
+       types".  These will be used with the forthcoming "-type"
+       option-definition option to add robust validation for snit::type
+       and snit::widget options.
+       
+2006-07-26  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snitfaq.man: Finally fixed the two ambigous section titles.
+
+2006-01-30  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.tcl: Fixed [SF Tcllib Bug 1414589], prevent the package
+         activation code from stomping on the global variable 'dir'.
+
+2006-01-29  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.test: Fixed use of duplicate test names. Whitespace police
+         as well.
+
+2006-01-26  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.test: More boilerplate simplified via use of test support.
+
+2006-01-19  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.test: Hooked into the new common test support
+         code. Reactivated the tests based on the commands wrongNumArgs
+         and tooManyArgs. Coming out of the new test support code.
+
+2006-01-14  Will Duquette  <will@wjduquette.com>
+
+       * snit2.tcl (::snit::RT.UnknownMethod):  When creating a new
+         submethod ensemble, creates it in the ${selfns} namespace
+         instead of in the ${type} namespace (fix courtesy of
+         Anton Kovalenko).  Previously, multiple objects of a type that
+         defines a submethod ensemble would share a single ensemble,
+         with confusing results.
+       * snit.test: Added test hmethod-1.6, to test for the above error.
+         As expected, there was no error in snit 1.1, but the test failed
+         in snit 2.0 until the above change was made.
+       * snit.test: "if 0"'d out some tests that make use of
+         tcltest::tooManyArgs and tcltest::wrongNumArgs, two commands 
+         that aren't available to me.
+
+       * snitfaq.man: Fixed a typo and added a suggestion from 
+         Andreas Kupries on how to name component commands.
+
+       * snit.man: Added Kenneth Green and Anton Kovalenko to the list 
+         of names in the "Credits".
+
+2005-12-05  Andreas Kupries <andreask@activestate.com>
+
+       * snit83.tcl: Replaced the direct use of / path separator with a
+         proper file join.
+
+2005-11-07  Andreas Kupries <andreask@activestate.com>
+
+       * pkgIndex.tcl: Moved the selection of the implementation out of
+         the package declaration into the runtime.
+
+       * snit.tcl: Renamed to snit84.tcl. Also a new file containing
+         the selection of the implementation, basic dependency, and
+         common provide command.
+
+       * snit84.tcl: New file. Was originally named 'snit.tcl'. Contains
+         the Tcl 8.4 specific implementation of the package.
+
+       * snit.test: Updated to new entrypoint for snit 1.1.
+
+2005-10-06  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.8 ========================
+       * 
+
+2005-09-26  Andreas Kupries <andreask@activestate.com>
+
+       * snit.test: Adapted the testsuite to handle the 8.3 backport.
+
+       * snit83.tcl:           Integrated Kenneth Green's backport of
+       * snit_tcl83_utils.tcl: Snit to Tcl 8.3 into the code base.
+       
+       * snit.tcl: Checking the list result of [info commands ] now using
+         [llength] instead of string comparisons.
+
+       * snit2.tcl: Checking the list result of [info commands ] now using
+         [llength] instead of string comparisons.
+
+2005-09-05  Will Duquette  <will@wjduquette.com>
+
+       * snitfaq.man: Updated for Snit 2.0/1.1.
+
+2005-08-27  Will Duquette  <will@wjduquette.com>
+
+       * snit.man: Updated for Snit 2.0/1.1
+       * snit.tcl: Added the new hulltypes to snit.tcl (somehow they 
+        didn't get in).
+       * snit.test: Added a test that verifies the list of valid 
+       hulltypes.
+
+2005-08-22  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * snit.tcl, snit2.tcl: allow labelframe and ttk::labelframe as
+       hulltypes, and tk::(label)frame (planning ahead ...)
+
+2005-08-20  Will Duquette <will@wjduquette.com>
+
+       * snit.tcl: It's now an error to call an object's "destroy" method
+       in the object's constructor.
+       * snit2.tcl: Snit 2.0, implemented with "namespace ensemble".
+       * snit.test: Now uses the "-body" style of Tcltests throughout.
+       Also, tests Snit 1.x (snit.tcl) when run with Tcl/Tk 8.4, and
+       tests Snit 2.x when run with Tcl/Tk 8.5.
+
+2005-08-10  Jeff Hobbs  <jeffh@ActiveState.com>
+
+       * snit.tcl (::snit::Comp.statement.hulltype): make hulltype one of
+       $::snit::hulltypes, allow ttk::frame
+
+2005-06-07  Will Duquette  <will@wjduquette.com>
+
+       * snit.test (bug-2.1, bug-2.2): Added the "tk" constraint, so that
+       they'll be excluded when snit.test is run with tclsh.
+
+2005-06-04  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl, snit.man, snitfaq.man: Updated the copyright
+       information to 2005.
+       * snit.html, faq.html: Removed these files, as they are obsolete.
+       snit.man and snitfaq.man contain the up-to-date documentation.
+
+2005-06-04  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl: Bumped the version number to 1.0
+       * pkgIndex.tcl: Bumped the version number to 1.0.
+       * dictionary.txt: Bumped the version number to 1.0.
+       * snit.man: Bumped the version number to 1.0.
+       * snitfaq.man: Bumped the version number to 1.0.
+       
+2005-06-04  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl (::snit::RT.DestroyObject)
+       * snit.test (test bug-2.1, bug-2.2): 
+         Fixed [SF Tcllib Bug 1106375].
+
+2005-06-04  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl (::snit::Comp.statement.destructor):
+       * snit.test (test bug-1.1)
+         Fixed [SF Tcllib Bug 1161779].
+
+2005-06-04  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl: Checked a number of small optimizations Jeff Hobbs
+       sent me. Bumped the version number to 0.98.
+       * pkgIndex.tcl: Bumped the version number to 0.98.
+       * dictionary.txt: Bumped the version number to 0.98.
+       * snit.man: Bumped the version number to 0.98.
+       * snitfaq.man: Bumped the version number to 0.98.
+
+2005-04-11  Marty Backe <marty@lucidway.org>
+
+        * snit.man: Fixed typo in the -configuremethod example.
+
+2005-02-14  Andreas Kupries <andreask@activestate.com>
+
+       * snitfaq.man: Fixed a number of typos reported by Bob Techentin,
+         see [SF Tcllib Bug 1050674].
+
+2004-10-05  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.7 ========================
+       * 
+
+2004-09-23  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.test: Fixed the tests which were dependent on the exact
+         order of results returned by [array names]. Which failed for Tcl
+         8.5. Added lsort and updated expected results, for canonical
+         comparison.
+
+2004-09-18  Will Duquette  <will@wjduquette.com>
+
+       * snit.man:     Documented hierarchical methods and typemethods.
+
+       * Everything:   Updated version to 0.97.
+
+2004-09-16  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      In "component foo -public name", the "-public
+                       name" part is now implemented as "delegate method
+                       {name *} to foo".
+       * snit.test     Added tests for "$type info typemethods", "$self
+                       info typemethods" and "$self info methods" for the
+                       case of hierarchical methods/typemethods, and
+                       fixed related bugs in snit.tcl.
+
+2004-09-14  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Modified the implementation of hierarchical methods;
+       * snit.test     this involved extending the syntax of method
+                       "using" patterns to better support the 
+                       hiearchical case.
+
+       * snit.tcl      Extended the "delegate method *" and
+       * snit.test     "delegate typemethod *" syntax to work better with
+                       hierarchical methods.  
+                       E.g., "delegate method {tail *} to tail" now maps
+                       "$self tail wag" to "$tail wag"
+
+2004-09-12  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Added support for hierarchical type methods,
+       * snit.test     analogously to the support for regular methods.
+       * README.txt
+
+       * snit.tcl      Refactored the compilation of hierarchical
+       * snit.test     methods and typemethods to remove duplicated code.
+
+2004-09-10  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Added support for hierarchical methods: methods
+       * snit.test     with submethods.  The documentation has not yet
+       * README.txt    been updated.
+
+       * snit.tcl      Bug fix: "delegate method {a b} to comp" now produces
+       * snit.test     the call "$comp a b" instead of "$comp a_b".
+
+2004-09-04  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Bug fix: read-only options were read-only only
+       * snit.test     if they weren't set at creation time; the 
+       * README.txt    configure cache wasn't being cleared properly
+                       after creation.
+
+2004-08-28  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl:     Minor tweaks to instance creation to improve
+       * dictionary    speed.  No major gain.  Also, -simpledispatch yes
+       * snit.man      now supports instance renaming again.
+       * snitfaq.man
+       
+
+2004-08-22  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Defined the -simpledispatch pragma.  Updated
+       * snit.test     the test suite and the relevant documentation.
+       * snit.man
+       * README.txt
+       * snitfaq.man
+       * dictionary
+
+2004-08-14  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Defined the -hastypemethods pragma, and added
+       * snit.test     relevant tests and documentation.
+       * snit.man      
+       * README.txt
+       * snitfaq.man
+
+2004-08-12  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Under appropriate conditions, calling a
+       * snit.test     snit::type command with no arguments will create
+       * snit.man      an instance with an automatically generated name.
+       * README.txt
+
+2004-08-11  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Added the -hasinfo pragma, along with the
+       * snit.test     appropriate tests.  Updated documentation.
+       * snit.man
+       * README.txt
+
+       * snit.tcl      The "configure", "configurelist" and "cget"
+       * snit.test     instance methods, along with the "options"
+       * snit.man      instance variable, are defined only if the
+       * README.txt    type defines at least one option (either
+                       locally or by delegation).
+
+2004-08-07  Will Duquette  <will@wjduquette.com>
+
+       * All files     Updated to Snit V0.96 for post-0.95 development.
+                       Fixed bug: methods called via [mymethod] can now
+                       return exotic return codes, e.g.,
+                       "return -code break"
+
+2004-08-04  Will Duquette  <will@wjduquette.com>
+
+       * snitfaq.man   Updated the Snit FAQ document.
+
+       * snit.man      Finalized Snit V0.95, and updated the version number
+       * snit.tcl      throughout.
+       * pkgIndex.tcl
+       * README.txt
+
+2004-07-27  Will Duquette  <will@wjduquette.com>
+
+       * snit.man      Updated the manpage to describe the new "pragma"
+                       statement.  Also, changed the SNIT acronym in the
+                       title to "Simple Now In Tcl", i.e., objects are
+                       now simple.
+
+       * snit.tcl      Added another pragma, -canreplace.  If false
+       * snit.test     (the default) snit::types can no longer create
+       * README.txt    instances which replace existing Tcl commands.
+       * snit.man      Setting "pragma -canreplace yes" restores the
+       * dictionary    previous behavior.
+
+       * snit.tcl      The type definition statements "variable" and
+       * snit.test     "typevariable" now take a "-array" option that
+       * README.txt    allows them to initialize array variables with
+       * snit.man      an "array set" list.
+
+       * snit.test     Fixed Snit bug 899207 (snit test failures)
+
+       * snit.tcl      Added new instance introspection methods 
+       * snit.test     "info typemethods" and "info methods", and a new
+       * README.txt    type introspection typemethod "info typemethods".
+       * snit.man      
+       * roadmap.txt
+
+       * snit.man      Reviewed the entire man page, and made copious
+                       changes and fixes.
+
+       * snit.tcl      Revised many of the error messages to be more 
+       * snit.test     Tcl/Tk-like.  Double-quotes are used instead of
+                       single quotes, and terminal periods are omitted.
+       
+       * snit.tcl      Added some code to method and typemethod dispatch
+       * snit.test     so that the return code (e.g., return -code break)
+                       returned by the method/typemethod code is passed
+                       along unchanged.  This is mostly so that methods
+                       and typemethods can conditionally break in event 
+                       bindings.
+       
+2004-07-26  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Implemented -configuremethod and configure command
+       * snit.test     caching; added tests to ensure that the cache is
+       * roadmap.txt   cleared when necessary.  Implemented -validatemethod
+       * dictionary    and added tests.  Implemented -readonly and added
+       * README.txt    tests.
+
+       * snit.man      Updated the man page with the new option
+                       definition syntax.
+
+       * snit.tcl      Added the "pragma" statement, and three pragma
+       * snit.test     options, -hastypeinfo, -hastypedestroy, and
+       * roadmap.txt   -hasinstances, plus related tests.  It still
+       * dictionary    needs to be documented.
+
+2004-07-25  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Renamed some procs for clarity, and repaired some
+       * roadmap.txt   omissions in roadmap.txt.  Added "cget" command
+       * snit.test     caching for additional speed-up.
+       * dictionary.txt
+
+2004-07-24  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      (::snit::RT.MethodCacheLookup): The cached command
+                       is now generated as a list, not a string; this
+                       improves the speed of method invocation by quite a 
+                       bit.
+
+2004-07-24  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Consolidated the option typevariables into a
+       * dictionary    single array, Snit_optionInfo.  Implemented
+       * roadmap.txt   parsing of the new option definition syntax;
+       * snit.test     the -validatemethod, -configuremethod, and
+                       -cgetmethod options as yet have no effect.
+                       Added tests to ensure that the 'option' and
+                       'delegate option' statements populate
+                       Snit_optionInfo properly.
+
+                       Added "starcomp" to the Snit_optionInfo array.
+                       When "delegate option *" is used, "*" no longer 
+                       has a "target-$opt" entry, nor does it appear
+                       in "delegated-$comp".  Instead, "starcomp" is the
+                       name of the component to which option "*" is
+                       delegated, or "".
+
+                       Reimplemented user-defined "cget" handlers using
+                       the "-cgetmethod" option definition option.  
+                       The "oncget" statement now defines a method, and
+                       sets the option.
+
+2004-07-21  Will Duquette  <will@wjduquette.com>
+
+       * README.txt    Updated to reflect recent changes.
+       * snit.man
+
+2004-07-20  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Finished the refactoring job.  All extraneous
+       * roadmap.txt   code has been moved from the type templates to the
+                       ::snit:: runtime.
+
+2004-07-19  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Refactored %TYPE%::Snit_optionget to 
+       * roadmap.txt   ::snit::RT.OptionDbGet. Refactored 
+                       %TYPE%::Snit_cleanup to ::snit::RT.DestroyObject,
+                       %TYPE%::Snit_tracer to ::snit::RT.InstanceTrace,
+                       and %TYPE%::Snit_removetrace to
+                       ::snit::RT.RemoveInstanceTrace.
+
+2004-07-17  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl        Added "delegate typemethod ..." in all its glory,
+       * snit.test       including "delegate typemethod *".  Made it 
+       * dictionary.txt  Possible to delegate an instance method to a
+       * roadmap.txt     typecomponent.  Added tests to ensure that
+                         variable/typevariable and component/typecomponent 
+                         names do not collide.  Updated a number of 
+                         compilation error messages for consistency.
+                         Moved the remaining typemethod definitions from the 
+                         template code and replaced them delegations to
+                         the Snit runtime library.  Added/modified
+                         relevant tests, and updated the roadmap and 
+                         dictionary files.  
+
+2004-07-15  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Replaced the old typemethod definition and
+                       cacheLookup code with new pattern-based code, just
+                       like the method definition and lookup.  The
+                       cache lookup routine doesn't yet understand 
+                       typemethod "*".  The next step is to implement
+                       typecomponents and "delegate typemethod".
+
+       * dictionary.txt  Documented the changes related to the above
+                       change. 
+
+2004-07-14  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Replaced %TYPE%::Snit_comptrace with
+                        snit::RT.ComponentTrace.
+
+                       Replaced %TYPE%::Snit_cacheLookup with
+                       snit::RT.MethodCacheLookup
+
+                       Replaced %TYPE%::Snit_typeCacheLookup with
+                       snit::RT.TypemethodCacheLookup
+
+       * snit.test     Added a test to verify that a widget's hull
+                       component cannot be altered once it is set.
+       
+       * roadmap.txt   Documents the internal structure of snit.tcl.
+       
+2004-07-11  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Renamed a number of internal commands, for
+                       clarity.  
+
+                       Refactored the standard method bodies
+                       out of the type definition and into the Snit
+                       runtime using delegation.
+
+                       Defined snit::compile which compiles a 
+                       type definition into the Tcl script which
+                       actually defines the type.
+
+       * snit.test     Added and modified appropriate tests.
+
+       * README.txt    Added a bullet about snit::compile.
+
+2004-07-05  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Replaced the old method cacheLookup code with new
+                       code based on command patterns.  All tests pass;
+                       no test changes were needed.  All is now ready to
+                       add the new "delegate method" "using" keyword.
+       * dictionary.txt
+                       This file documents Snit's private variables.
+                       It's up-to-date, and checked in for the first
+                       time.
+
+       * snit.tcl      Implemented the new "using <pattern>" clause to
+       * snit.test     "delegate method", and added relevant tests.
+
+       * snit.man      Documented the new "delegate method" syntax.
+       * README.txt
+
+2004-07-04  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Re-implemented the option and method delegation 
+       * snit.test     syntax so that the order of clauses is no longer
+                       important.  Along the way, I made the relevant
+                       error messages more specific.
+
+2004-06-26  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl      Added the "component" statement, with two options, 
+       * snit.test     -public and -inherit.  Added all relevant tests.
+       * snit.man      Updated the man page to describe it.
+
+2004-05-30  Will Duquette  <will@wjduquette.com>
+
+       * snit.man      Updated per 0.94 changes to date; also I made a
+                       sweep through the whole document and cleaned
+                       things up here and there for readability.
+
+2004-05-29  Will Duquette  <will@wjduqette.com>
+
+       * snit.tcl      Moved Snit_component to snit::Component.
+                       
+                       Removed the "type" argument from all of the
+                       "Type.*" procs.  Instead, the compilation type
+                       is available as $compile(type).  Consequently,
+                       the Type.* procs can now be aliased into the
+                       compiler just once, instead of with every type
+                       definition.  (Did that.)
+
+                       Defined snit::macro.
+
+       * snit.test     Added tests for snit::macro.
+
+2004-05-23  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.6.1 ========================
+       * 
+
+2004-05-15  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl:     Updated version to 0.94
+       * pkgIndex.tcl: 
+
+       * snit.tcl:     Modified the Snit_dispatcher function to
+                       use a method command cache.  Method commands
+                       are assembled in Snit_cacheLookup only if
+                       they aren't found in the cache.  The 
+                       new Snit_dispatcher was much shorter,
+                       so its code was moved into the object's
+                       instance command, and Snit_dispatcher
+                       was deleted altogether.  These changes 
+                       speed up method calls considerably.
+
+                       Snit_tracer was then modified to clear the
+                       method cache when the instance command is 
+                       renamed--the cached commands contained the
+                       old instance command name.
+
+       * snit.test:    Components can be changed dynamically; the
+                       method cache breaks this, because the 
+                       previous component's command is still
+                       cached.  Added a test that checks whether
+                       the method cache is cleared properly when
+                       a component is changed.
+
+       * snit.tcl:     Snit_comptrace now clears the method cache
+                       when a component is redefined.
+
+       * snit.tcl:     Added a type method cache.  Type methods 
+                       (with the exception of implicit "create") are
+                       now as fast as instance methods.  This is a
+                       naive implementation, though--for typemethods,
+                       the cache could be populated at definition
+                       time, since there's no delegation.  Of course,
+                       if I added typemethod delegation then what I'm
+                       doing is appropriate.
+
+       * snit.tcl:     Reorganized some things, in preparation to move
+                       shared code from the type definition to the 
+                       snit:: namespace.
+
+       * snit.tcl:     Made %TYPE%::mymethod an alias to snit::MyMethod.
+
+       * snit.tcl:     Added %TYPE%::myproc, as an alias to 
+       * snit.test:    snit::MyProc.  "codename" is now deprecated.
+                       Added tests for myproc.
+
+       * snit.tcl:     %TYPE%::codename is now an alias to
+                       snit::CodeName.
+
+       * snit.tcl:     Added %TYPE%::myvar and %TYPE%::mytypevar; these
+                       replace %TYPE%::varname and %TYPE%::typevarname,
+                       which are now deprecated.  All are now implemented
+                       as aliases to calls in snit::.
+
+       * snit.tcl:     %TYPE%::variable is now an alias to
+                       snit::variable.
+
+       * snit.tcl:     %TYPE%::from is now an alias to snit::From.
+
+2004-02-26  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.test:    Codified the requirement of Tcl 8.4 into
+       * pkgIndex.tcl: package index and test suite.
+
+2004-02-15  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       *
+       * Released and tagged Tcllib 1.6 ========================
+       * 
+
+2004-02-07  Will Duquette  <will@wjduquette.com>
+
+       * README.txt:  Added 0.93 information to README.txt.
+
+       * snit.tcl:    Fixed bug: "$obj info vars" used to leave out "options"
+       * snit.test:   if no options were defined.  It's clearer if the 
+                      behavior is always the same.
+
+                      Fixed tcllib bugs item #852945: variable.  The
+                      statement "variable ::my::qualified::name" in an
+                      instance method now makes "name" available, just
+                      as the standard "variable" command does.
+
+                      Fixed bug: in some cases the type command was
+                      created even if there was an error defining the
+                      type.  The type command is now cleaned up in these
+                      cases.  (Credit Andy Goth)
+
+       * snit.tcl:    Implemented RFE 844766: need ability to split class
+       * snit.test:   defs across files.  Added the snit::typemethod and
+       * snit.html:   snit::method commands; these allow typemethods and
+                      methods to be defined after the class already exists.
+
+2004-02-07  Will Duquette  <will@wjduquette.com>
+
+       * All:         Updated version to 0.93.
+       * snit.tcl:    The %AUTO% name counter wraps around to 0 when it
+                      reaches 2^31 - 1, to prevent integer overflow
+                      errors.
+       * snit.html:   Minor corrections and updates.
+       * faq.html
+
+2003-12-06  Will Duquette  <will@wjduquette.com>
+
+       * All:         Updated version to 0.92.
+
+       * snit.tcl     Snit now propagates errorCode properly when 
+       * snit.test    propagating errors.
+
+2003-12-01  Andreas Kupries  <andreas_kupries@users.sourceforge.net>
+
+       * snit.man:    Updated to changes in the .html files.
+       * snitfaq.man: 
+
+2003-11-21  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl:      Updated version to 0.91.
+       * pkgIndex.tcl: 
+
+       * snit.tcl:      Added the "expose" statement to type and widget
+                        definitions.
+       * snit.test:     Added appropriate tests.
+       * snit.html:     Added documentation for "expose".
+       * faq.html:      Updated the FAQ entries.
+
+       * snit.tcl:      Added "string match" patterns to the Snit info
+                        methods.
+       * snit.test:     Added appropriate tests.
+       * snit.html:     Updated documentation.
+
+
+2003-10-28  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.man:    Fixed typos in documentation.
+       * snitfaq.man: 
+
+2003-10-27  Will Duquette  <will@wjduquette.com>
+
+       * snit.html: Fixed typos in documentation.
+       * faq.html:
+
+2003-10-27  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.man:    Updated to changes in the .html files.
+       * snitfaq.man: 
+
+2003-10-25  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl:  Added the "except" clause for "delegate method *" and
+       * snit.test: "delegate option *".  This allows the user to
+                    explicitly exclude certain methods and options.
+                    Added appropriate tests.
+
+       * snit.html: Gave the Snit FAQ a bit of an overhaul, and added 
+       * faq.html:  information corresponding to the recent code
+                    changes, including a great deal of material on Snit
+                    and the Tk option database.  Updated the Snit man
+                    page to be consistent with the recent code changes.
+
+2003-10-23  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.man: Updated from Will's html doc's.
+
+2003-10-23  Will Duquette  <will@wjduquette.com>
+
+       * snit.html: Added documentation for the new "hulltype",
+                    "widgetclass", and "install" commands.  Updated the
+                    documentation for "installhull" to show the new
+                    "installhull using" syntax.  Updated the
+                    documentation for "option" and "delegate option" to
+                    show how to specify the resource and class names for
+                    options.  Added a section on the interaction between
+                    Snit and the Tk option database.
+
+2003-10-21  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl:  Add the "hulltype" command.  This allows the snit::widget 
+       * snit.test: author to choose whether the hull should be a frame
+                    or a toplevel.  Tests have been updated as usual.
+
+2003-10-20  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl:  The new "install" command can now be used to install
+       * snit.test: components for snit::types as well.  It doesn't add
+                    any value, since there's no option database, but at
+                    least the syntax will be the same.
+
+                    "install" now initializes the component properly
+                    from the option database when "option *" has been
+                    delegated to it.
+
+                    Tests have been updated as usual.
+
+2003-10-19  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl:  During normal widget creation, the default values
+       * snit.test: for a widget's local options are overridden by
+                    values from the option database.
+
+                    Array %TYPE%::Snit_compoptions now lists delegated 
+                    option names for each component.
+
+                    Added a new command, "install", for use in widget
+                    and widgetadaptor constructors.  Install creates a
+                    widget, assigning it to a component; it also queries
+                    the option database for any option values that are
+                    delegated to this component.
+
+                    Modified installhull, adding a new form that queries
+                    the option database as appropriate for options
+                    delegated to the hull widget.
+
+                    At this point, the only options whose default values
+                    do not come from the option database in the proper
+                    way are those implicitly delegated by "delegate
+                    option *" to a non-hull widget.  I need to think
+                    about those.
+
+                    Of course, new tests have been added for all of this.
+
+                    The version number in snit.tcl has been updated to 0.84.
+
+2003-10-18  Will Duquette  <will@wjduquette.com>
+
+       * snit.tcl:  Added the "widgetclass" statement; this allows
+       * snit.test: snit::widgets (and nothing else) to explicitly set
+                    the widget class name passed to the hull as "-class".
+                    In addition, the hull's -class is set automatically, 
+                    to the explicit widgetclass, if any, or to the 
+                    widget type name with an initial capital letter.
+
+                     Next, an object's options now have real resource
+                     and class names, which are reported correctly by 
+                     "$obj configure".  By default, the resource name
+                     is just the option name minus the hyphen, and
+                     the class name is just the resource name with an
+                     initial capital.
+
+                     In both the "option" and "delegate option"
+                     statements, the option name may be specified as
+                     a pair or a triple, e.g.,
+
+                       option {-name name Name}
+
+                     Thus, the resource name and class name can be
+                     specified explicitly.
+
+                     In previous versions, the resource name and
+                     class name returned by configure for delegated
+                     options was the resource name and class name
+                     returned by the component.  This is no longer
+                     true; configure now returns the resource and
+                     class name defined in the type definition.
+
+2003-10-17  Will Duquette  <will@wjduquette.com>
+
+       * snit.html: Added typeconstructor documentation.
+       * faq.html:  
+
+       * snit.tcl: Implemented typeconstructors.  A typeconstructor's
+                    body is executed as part of the compiled type
+                   definition; it has access to all of the typevariables
+                   and typemethods.  Its job is to initialize arrays,
+                   set option database values, and like that.
+       
+       * snit.test: Added tests for typeconstructors.
+
+2003-10-16  Will Duquette  <will@wjduquette.com>
+
+       * README.txt: Updated to reflect snit's presence in tcllib, and
+         to point to this ChangeLog file.
+
+2003-09-30  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.tcl: A number of changes to the code generation part.
+         - Usage of [subst]'s was superfluous, removed, simple string
+           interpolation now.
+
+         - Now 'namespace eval type' enclosing the generated code
+           anymore. Such an eval is now done only at the top of the
+           generated code to define the namespace, and to
+           define/initialize the typevariables. All procedure definitions
+           are now outside of 'namespace eval' and use fully qualified
+           command names instead.
+
+         - Moved the code in [snit::Define] which instantiated the class
+           using the generated code into it own helper command,
+           [snit::DefineDo]. Overiding this command allows users of the
+           snit package perform other actions on the newly defined
+           class. One example is that of a snit-compiler which goes
+           through a file containing tcl code and replaces all snit::*
+           definitions with the generated code.
+
+         Motivation for the change: When applying procomp to procedure
+         definitions inside of a 'namespace eval' they are not
+         byte-compiled, but kept as encoded literal. This is a direct
+         consequence of 'namespace eval' not having a compile
+         function. It also means that introspection, i.e. [info body]
+         does recover the actual procedure definition. By using procedure
+         definitions outside of namespace eval, but fully qualified names
+         this limitation of procomp is avoided. The aforementioned snit
+         compiler application is another part for this, ensuring that
+         instead of keeping the whole class definition as one literal for
+         the snit::* call we actually have tcl code to compile and hide.
+
+       * snit.tcl:     Updated the version number to 0.83
+       * pkgIndex.tcl:
+       * snit.man:
+       * snitfaq.man:
+
+2003-07-18  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.test: Fixed SF tcllib bug #772535. Instead of using a
+       * snit.tcl:  variable reference in the callback a regular command
+                    is called, with the unchanging 'selfns' as argument.
+                    From there things go through the regular dispatching
+                    mechanism after the actual instance name was obtained.
+                    Updated all affected tests.
+
+                    Updated dmethod-1.5 also, 'string' delivers a
+                    different error message.
+
+2003-07-16  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.man:    Added references to bug trackers, as part of
+       * snitfaq.man: caveats. Also added note about bwidget/snit
+                      interaction.
+
+       * snit.tcl: Integrated latest (small) change to original code base
+         (was not released yet). Removes bad trial to fix up error stack.
+         We are now at version 0.82. Added note to developers explaining
+         the catch in Snit_tracer.
+
+2003-07-15  Andreas Kupries  <andreask@activestate.com>
+
+       * snit.tcl:    Imported new module into tcllib.
+       * snit.test:   snit = Snit Is Not IncrTcl
+       * snit.html:   Author: William Duquette
+       * faq.html:    OO package + megawidget framework.
+       * README.txt:
+       * license.txt:
+       * pkgIndex.tcl:
+       * snit.man:
+       * snitfaq.man: