Metakit 2.4.2 stable release

2001-12-12 MK 2.4.2 Better portability, hashing improved

   This release marks the consolidation of a number of changes,
   mostly relating to better portability & hashing.  The speed
   of commits with many strings and subviews should be notably
   better.  The Tcl extension no longer needs a "stub" library
   to compile (it now has that code itself), just std headers.

2001-12-08 Changes to commit cleanup, Mac stuff

   Changed the logic of how ReleaseAllSegments gets called at
   the end of commits.  There was at least one case of leaving
   a column pointing into mapped file space when it was about to
   be remapped.  This should fix a very long-tanding bug which
   shows itself as freeing unallocated memory during commit or
   cleanup of the storage object.
   Changes to test coding and PyRowRef.cpp to deal with builds
   on Macintosh (different issues for MacOS 9 and MacOS X).
   The mac/cw.sea.hqx project has been upgraded to MW CW 6.3.
   Verified Tcl 8.3.2 and Python 2.1.1 builds with CW6 on Mac.

2001-12-06 Tweaks to Tcl interface

   More robust, added "$vw loop var ... {body}" object command.
   The "$vw size" command now takes an optional newsize arg.

2001-12-04 Tweaks to makefile and configure

   Tweaks, in preparation of an upcoming 2.4.2 release.

2001-12-03 Changes in M4py, avoid gcc problem, hash

   The "-fomit-frame-pointer" option for gcc has been turned off,
   because it causes problems with exception handling in Mk4py.
   All failures in Mk4py now propagate properly to Python AFAIK.
   Simplified Mk4py - by removing a layer of exception handler
   classes in scxx.  Errors now set info and throw a plain int.
   The mkhash.cpp sample program exposed a problem with multi-key
   hashing: the order of properties in the search key must match
   exactly the order in the hash view itself.  For now, this has
   been left as is (it's easy to do, once you are aware of it).

2001-11-30 Win MT fix, commit tweak, indent cleanup

   Drop static buffer in fileio.cpp (DataWrite), uses stack now,
   so the code can be used in MT context even on Win 95/98.
   It does more copying than would be needed for NT (2K?), alas.
   More changes in c4_FormatB::Commit to properly detect memo use
   in blocked views.  The recent changes introduced a bug which
   shows up only with blocked views and large string/bytes items.
   Reported by Steve Baxter with demo, new "m02" regression test.
   Changed fileio.cpp to turn off file buffering, this avoids a
   few reads when writing and seeking a lot.  It does not have as
   big an impact as one might expect, but every little bit helps.
   Cleaned up new 2-space indentation in several source files.
   Added new "mk::file space" in Mk4tcl, to inspect the current
   file space usage.  This is only intended for internal testing.

2001-11-28 Fixed memory leak in string/memo cleanup

   There was a mem-leak in c4_FormatB::Commit which showed up due
   to yesterday's more extensive testing.  Only showed up after a
   commit, in string columns with widely varying item sizes.
   This caused regression test s37 to fail in MFC-debug compile.

2001-11-27 Major performance bug fix, and MT strings

   A serious problem has been resolved, which slowed down commits,
   and prevented blocked views from committing efficiently.  The
   reason was that for string props, the string size was always
   being saved anew, even if no changes in that view took place.
   This did not affect proper operation, just speed, and was most
   noticeable with many (sub-)views containing many string props.
   The solution is in src/format.cpp, the examples/mkhash.cpp code
   was further adjusted to better expose and measure the effects.
   Thanks to P. Baspeyras and S. Baxter for helping me resolve it.
   Another change was to alter the way empty strings are allocated
   in the src/string.cpp code, making it compatible with multi-
   threaded use and removing the remaining memory leak.

2001-11-26 Fix in assertion check (blocked view)

   Corrected an off-by-one bug.  Only shows up with debugging on,
   since it's inside an assert().  Thanks to Steve Baxter.

2001-11-25 More arg checking in Mk4py, locate

   Added more checks against incorrect usage, based on sample code
   by Mitch Chapman.  The "throw" code appears to be inconsistent
   when called at top of *some* calls, using a workaround for now.
   Added "view.locate(key)" wrapper, returns (pos,count) tuple.
   Various source code formatting adjustments (indents and such).

2001-11-04 Added alternate calls to c4_CustomViewer

   Added extra defs to "mk4.h" of Lookup and InsertRows which take
   a "const c4_RowRef&" i.s.o. a c4_Cursor.  Inlined in "mk4.inl".
   The "c4_Cursor" datatype might one day become obsolete.

2001-11-03 Removed tcl/kit/ and copyright notices

   Removed the entire tcl/kit/ tree, Tclkit will be distributed as
   separate package from now on (the 2.4.1 release still builds ok).
   Also replaced all copyright notices by version Id's and an URL.

2001-11-02 Fixed partial memo commit bug, makefile fix

   Modifying a small item as memo (i.e. through Modify) properly
   committed a change, but subsequently left an incorrect pointer
   after the commit.  Fixed, and added test s37 to catch this case.
   Don't strip symbols from installed static libs (whoops!).

2001-10-31 Fixed Mk4py error flag clear on delete

   When deleting rows, a slice was constructed from a PWOSequence,
   which generates an otherwise harmless error when its length is
   checked.  The flag was not cleared, causing errors in subsequent
   Python statements.  Changed to a PWOTuple in PyView.cpp (2x).

2001-10-26 Fixed Mk4tcl re-open test

   The tcl/test/mk1basic.tcl test #6 was reporting open failure on
   non-Linux systems.  Fixed, the code works, the message was wrong.

2001-10-19 Rearranged some demo files, Lua binding

   Rearranged some of the demos/samples from the python/ and tcl/
   areas, and placed them in examples/ instead, for consistency.
   Added "selmap.tcl" to illustrate how to turn select into a view.
   Added a basic Lua binding (incomplete, but it's a start) in lua/.

2001-10-18 Fixed recent hash bug, and add to ordered

   The recent "fix" to deal with hash misses introduced a huge bug,
   causing the mapping to be recalculated on each insertion.
   Adding to an ordered view did not always work, because the code
   was based on SetAtGrow, which is not suitable for an ordered
   view in which the row position is determined implicitly.  Fixed
   by changing c4_View::Add to use c4_View::InsertAt instead.

2001-10-14 MK 2.4.1 Custom-extended Tclkit, and threading