Warning, /pim/akregator/src/storage/metakit/CHANGES is written in an unsupported language. File is not indexed.

0001 2005-11-22    ############################################    MK 2.4.9.5
0002 
0003     Main reason for this release is the 11-18 disk-full handling fix.
0004 
0005 2005-11-21    Optimization for access via c4_BytesRef::Access
0006 
0007     Added a noCopy flag (default remains as before), by A. Stigsen:
0008     When I first looked at c4_BytesRef::Access() I noticed that
0009     FetchBytes had the forceCopy option set. So I tried removing that,
0010     and that gave some improvement. But it still often happened that the
0011     item was in several segments, forcing a copy. So I have added a
0012     noCopy option to Access() to ensure that I do not get any uneeded
0013     memcopies. It gave a huge performance boost in my application, so it
0014     might be useful for others as well.
0015 
0016 2005-11-18    Fixed incorrect case of handling disk-full on commit
0017 
0018     This is a potentially serious bug (though all data can still be
0019     recovered if dealt with right away).  When an I/O error occurs
0020     under specific circumstances in the commit, the resulting file
0021     may be left in an improper state.  Full details are desribed in
0022     http://www.equi4.com/pipermail/metakit/2005-November/002144.html
0023 
0024 2005-11-16    Ranlib called too early
0025 
0026     Fixed call to ranlib when installing Mk4tcl.a - this was copied
0027     incorrectly by my from the 11-11 patches.  Thx A. Kupries.
0028 
0029 2005-11-15    Version number fixed
0030 
0031     Fixed version number mismatch (2.4.9.3, should now be 2.4.9.4).
0032 
0033 2005-11-11    Build fixes for Tcl (by Matt Newman)
0034 
0035     Added logic to disable mmap calls on some HP-UX versions.
0036     Plus other tweaks for the Tcl build.  Mods by Matt Newman.
0037     
0038 2005-10-01    The HP-UX fix did not work on macosx.
0039 
0040     Made the 2005-09-06 change below conditional on __hpux, so that
0041     builds on Mac OS X don't break, i.e. revert it.  Thx D. Steffen.
0042 
0043 2005-09-26    Linking with g++ i.s.o. gcc
0044 
0045     Fixed SHARED_LD to use G++ instead of gcc.  This caused problems
0046     when using the shared library from a gcc-compiled main.
0047 
0048 2005-09-06    Tweak Tcl binding to avoid compiler problems
0049 
0050     Made some changes to let HP-UX's aCC compile mk4tcl.{h,cpp}
0051     properly (no static inits with function ptrs?).  Thx Bob T.
0052     Also got rid of some warnings caused by const-ness mismatches.
0053 
0054 2005-09-05    Fix potential Tcl close problem
0055 
0056     Bug if a Tcl channel is still open on exit in mk::channel.  Fix
0057     thanks to Matt Newman.  Also cleaned up some old unused code.
0058 
0059 2005-06-10    ############################################    MK 2.4.9.4
0060 
0061     Maintenance release, consolidates over a year of changes/tweaks.
0062 
0063 2005-06-10    Adjusted Python builds
0064 
0065     Changed configure.in to use Python 2.4.x by default (was 2.3).
0066 
0067 2005-04-15    Fix typo in Mk4py code
0068 
0069     The 2005-01-29 changes had a typo (InsertA i.s.o. InsertAt).
0070     So no one built the CVS version since then?  (thx, Ben R.)
0071 
0072 2005-03-01    Fix for BTS#112, insert one part of a view in other
0073 
0074     Only showed up in debug builds, due to malloc overwriting mem,
0075     this was a dangling pointer.  Reported and fixed by A. Stimms.
0076 
0077 2005-02-18    Backed out of faulty change on 2004-09-23
0078 
0079     The c4_BytesRef::Modify change was not correct.  Will need to
0080     be reviewed again, thanks to P. Thoyts for reporting this.
0081 
0082 2005-02-14    Minor mods or PocketPC
0083 
0084     Changed some #defines to build under eVC4 for PoscketPC.
0085     Updated Tcl build to TEA 3.2 for same reason.
0086 
0087 2005-01-31    Updated Tcl build to use TEA 3.1
0088 
0089     A number of changes were needed to make the configure & make
0090     setup in the tcl/ area work with Tcl's TEA 3.1 build system.
0091     Install target not quite there due to missing doc/tests dirs.
0092 
0093 2005-01-29    Allow inserting view in Mk4py
0094 
0095     Fix by B. Kelley to support inserting a view into another.
0096     Properties in the source view will be added to dest as needed.
0097 
0098 2005-01-07    Some Mk4py fixes
0099 
0100     See BTS#105 for report, PyView.cpp leak fixed.
0101     See BTS#106 for report, submitter unknown (change in PyHead.h).
0102 
0103 2004-11-30    Added license terms in separate file
0104 
0105     As suggested by Daniel Steffen, see "license.terms".
0106 
0107 2004-09-23    Fix c4_BytesRef::Modify bytes insertion
0108 
0109     There was a bug preventing bytes from being inserted past the
0110     original size.  Reported by A. Stimms, disgnosed by B. Kelley.
0111     The solution was to remove an incorrect minor optimization.
0112 
0113 2004-06-03    Fixed missing include
0114 
0115     Added stdio include to mk4too.cpp, fixes Tcl 8.5 compile.
0116 
0117 2004-05-20    Mac OS X tweak
0118 
0119     Fix gcc shared lib builds flags for Mac OS X (thx D. Steffen).
0120 
0121 2004-04-27    Optimization of blocked views
0122 
0123     New caching of most recent subview block saves a lot of time when
0124     frequently getting and storing values (also in sequential order).
0125     Effects depend on usage pattern of course, expect 10..40% gain.
0126 
0127     Many thanks to M Berk for submitting a good working patch, which
0128     was then further tweaked.  No change in API / usage / storage.
0129 
0130     With this improvement, blocked views are highly recommended for
0131     larger views, i.e. millions of rows (up to address space limit).
0132     This requires C++, Mk4py, or Oomk/Mk4too (not Mk4tcl).
0133 
0134 2004-04-26    Python Unicode strings and distutils test suite
0135 
0136     Did some work to integrate Nicholas Riley's PyRowRef.cpp changes
0137     into the core.  Now supports unicode and rejects strings which
0138     have null bytes in them (use 'B' i.s.o. 'S' type to accept 'em).
0139 
0140     Tweaked setup.py a bit to properly run "python setup.py tests".
0141     This required a hack I don't understand, lines 135 and on, marked
0142     "jcw".  Without these extra imports, the tests are not found.
0143 
0144     Merged tweak to PyView.cpp to barf on view.append with >1 args.
0145 
0146     Thanks to Nicholas Riley for lots of improvements.
0147 
0148 2004-04-24    Autoconf tweaks
0149 
0150     Dropped LINK_SPECIAL_FLAGS="-rpath ${libdir}" from configure.in,
0151     which was causing havoc on Linux: make & make test work again now.
0152 
0153     Fixed configure.in + Makefile.in to support static builds again.
0154     The Tcl static target is now Mk4tcl.a i.s.o. libmk4tcl.a (ouch).
0155     
0156     For Tcl and Python, the following now works on my Linux box:
0157         ../unix/conficure --with-tcl=/usr/include --with-tcl=/usr
0158     More elaborate params are also supported, see "configure --help".
0159 
0160 2004-03-30    Fix opening Win32 files with unicode/multibyte chars
0161 
0162     The _open call used on Win32 is not Unicode/multi-byte friendly (!).
0163 
0164     Added code to try a conversion and use the _wopen variant when the
0165     _open fails.  This should work for opening existing files and for
0166     creating new files as long as the file tail does not have special
0167     chars (i.e. only special chars in the directories leading up to it).
0168 
0169     Also removed UTF conversions from mk4tcl.cpp (Windows build), which
0170     interfere with this new logic.
0171 
0172     Detected and resolved by Jeff Hobbs for use in the Mk4tcl extension.
0173 
0174 2004-03-09    Added new build files for Mk4tcl
0175 
0176     Added the TEA configure system to tcl/, so that Mk4tcl can now also
0177     be built with that approach.  This supercedes the current Mk4tcl
0178     code in unix/Makefile.in, which will probably be dropped soon.
0179 
0180 2004-03-08    Added DESTDIR to makefile
0181 
0182     Added Stuart Cassoff's patches to support DESTDIR in the Makefile.
0183 
0184 2004-03-07    Removed libtool dependency
0185 
0186     Thrown out libtool, it is more hassle than it's worth.  Adjusted
0187     configure.in and Makefile.in accordingly - these changes are very
0188     preliminary, all help to fix remaining platform issues appreciated!
0189 
0190 2004-03-03    Added Microsoft Visual Studio 7.0 project files
0191 
0192     Added a new win/msvc70/ directory with all MSVC 7.0 project files.
0193     With thanks to David Van Maren for sharing his work on this.
0194     
0195     Also added David McNab's info on how to build Mk4py with older
0196     versions of Python.  See python/README-dmn for details.
0197 
0198 2004-02-29    Fix in Mk4tcl property caching
0199 
0200     In very specific cases, Mk4tcl does not properly track properties
0201     cached in a Tcl_Obj*.  This affects byte-compiled code when there
0202     are properties using the same name but with different types.  Fixed
0203     in the mk4tcl.h and mk4tcl.cpp sources.
0204 
0205     Also optimized selections a bit further (pass Tcl_Obj* instead of
0206     strings to force more typed matches, and avoid some c4_String's).
0207 
0208 2004-02-16    Minor tweaks
0209 
0210     Change in std.h (for STL) to build with Borland C++ 5.0, and a typo
0211     in checking code of c4_View::IsCompatibleWith, which means incorrect
0212     use of MK was not detected properly (can't happen in blocked views,
0213     the main call point of this routine).  Reported by M Dierolf, thx!
0214 
0215 2004-01-28    Free space query
0216 
0217     Added a new FreeSpace() member to c4_Storage to determine how much
0218     unused space is in a datafile.  The validity of the returned values
0219     has not been verified yet, it's an "undocumented feature" for now.
0220 
0221 2004-01-26    ############################################    MK 2.4.9.3
0222 
0223     Maintenance release, consolidates past 9 months of changes/tweaks.
0224 
0225     Fixed test for "__name__" in python/metakit.py to run a quick test.
0226 
0227 2004-01-22    Fixed refcount problem with temp rows in Mk4tcl
0228 
0229     This was a long-standing bug: "mk::row create" did not work right
0230     because the tracking of temporary rows was completely messed up.
0231     Added test case for Tcl (mk6.8), fixes FB14, BTS#78, and BTS#29.
0232 
0233 2004-01-21    Documentation updates
0234 
0235     Updated copyright notices to 2004, and udated to Doxygen 1.3.5 for
0236     a new set of C++ documentation.  In anticipation of next release.
0237 
0238 2004-01-20    Don't trip over duplicate property names
0239 
0240     Added code in c4_Field constructor to avoid crashing when there is a
0241     duplicate property name in the format description string.  Duplicate
0242     names are now ignored (there is no good way to report errors at this
0243     point).  Avoids an even bigger problem: conflicting property types.
0244 
0245     Added test s49 to detect this case (FB20, reported by Brian Kelley).
0246 
0247 2004-01-18    Fixed rare but very serious subview resizing bug
0248 
0249     Fixed rare but serious file damaging bug, when resizing a comitted
0250     subview to empty, committing, and then resizing back to containing
0251     data.  Added new s48 test to force this bug to the surface.
0252 
0253     Fortunately this usage pattern *never* happens in blocked views!
0254     Fixes are at the end of c4_FormatV::Insert and c4_FormatV::Remove.
0255 
0256 2004-01-16    Gracefully deal with bad property type specifiers
0257 
0258     When GetAs is a called with a bad description, such as for example
0259     "myview[name:A]", the release code would crash on a null pointer
0260     dereference at some point.  Changed so the code now treats any type
0261     it does not know about as "I" (works a bit better than using "S").
0262    
0263     The debug build still hits an assertion, as before.  Added s47 test.
0264 
0265 2004-01-03    Fixed typo in PyView.cpp
0266 
0267     Forgot to fix closing brace after the 2003-12-11 mods.
0268 
0269 2003-12-21    Fixed Mk4too sorting on subview of length 1
0270 
0271     There was a silly bug when sorting on subviews in the new Mk4too
0272     interface (not in Mk4tcl), which returns a view, instead of a list
0273     of integers.  In the case of 1 row, optimization was done wrongly,
0274     omitting the sort as well as the remapping.  Fixed.
0275     
0276     Oomk needs to be patched to work around this (don't sort if n=1).
0277 
0278 2003-12-13    Tweak to avoid two unisgned/signed compiler warnings
0279 
0280     In remap.cpp, compiled in debug mode on Win32 (DWORD vs. t4_i32).
0281 
0282 2003-12-11    Checked in numerous changes to Mk4py by Nicholas Riley
0283 
0284     All changes are local to the python/directory - for details, see
0285       http://www.equi4.com/pipermail/metakit/2003-September/001407.html
0286     With a big thank you to Nicholas for contributing these improvements.
0287 
0288 2003-11-23    Bumped to Python 2.3, doc tweaks, lots of name fixes
0289 
0290     Adjusted makefile to now look for Python 2.3 by default.
0291     Regenerated config files.  Fixed obsolete links in the doc files.
0292 
0293     Got rid of tons of Metakit "interCap" cases, should be Metakit.
0294     This affects a huge number of source files and one #define (which
0295     has been defined twice for compatibility: d4_MetakitLibraryVersion).
0296     Use "cvs diff -i" to see real changes, other than case swapping.
0297 
0298 2003-10-28    Get rid of --enable-python, check in c22.txt
0299 
0300     It's not valid, but some files mentioned it.  Use --with-python.
0301     Forgot to check in the new c22.txt file added earlier this month.
0302 
0303 2003-10-16    Added note to Tcl docs
0304 
0305     Added a note to doc/tcl.html on how to load a MK datafiles stored in
0306     another one, as needed when using VFS for example.
0307 
0308 2003-10-10    Added c22 test
0309 
0310     Added test to make sure groubpy/select bug is not present in the C++
0311     core (bts #75 reports the bug found for Mk4tcl/Mk4too).
0312 
0313 2003-10-01    Fixed bugs in Tcl test suite
0314 
0315     The tests in tcl/test/ were incorrectly closing non-test datafiles,
0316     such as the "exe" one open while tclkit runs, and needed when a
0317     slave is created which needs to re-run init.tcl etc from VFS.
0318     
0319 2003-09-30    Python 2.3.1 & cleanup
0320 
0321     Tweaked PWONumber.h and PyRowRef.cpp and MSVC6 project so it can
0322     compile Mk4py for Python 2.3.1 again.  Windows binary uploaded.
0323 
0324     Removed the win/msvc60/tests/ directory, it's no longer needed.
0325 
0326 2003-09-20    Autoconf and libtool rebuilds
0327 
0328     In an attempt to stay ahead of version trouble and other nonsense,
0329     the autoconf / configure and libtool files have been regenerated.
0330     Autoconf is at 2.57 and libtoolize is at 1.4.3 on this dev system.
0331 
0332 2003-08-26    Documentation fix
0333 
0334     Fixed install comments for Mk4py, as reported in bts #59.
0335 
0336 2003-07-17    Fixes to Mk4py (Gordon)
0337 
0338     Fix crash when db.description(nm) is called for missing view "nm".
0339     Fix wrap - for the special case of wrapping a list of primitives
0340     (eg, ints, floats, strings) in a single property "view".
0341 
0342 2003-07-11    Fix for Linux not finding .lai file
0343 
0344     Posted for RH 8.0 on MK mailing list by Jeff Web on July 3rd.
0345 
0346 2003-07-01    Fixed "Metakit" (preferred) vs "Metakit" (obsolete)
0347 
0348     Get rid of InterCappedWords.  Time to grow up, d00d...
0349 
0350 2003-06-06    Fix to Mk4py for case (in)sensitivity.
0351 
0352     When using a dict (or keyword args), makeRow now gets the
0353     names from the dict's keys and gets the properties by name.
0354     This allows case insensitive matching. Note that using an
0355     instance still requires that the instance attributes have
0356     names that match (case sensitive) with the view.
0357 
0358 2003-05-15    Add distutils setup.py script (Gordon).
0359 
0360     Tested on Linux & Windows (MSVC).
0361     You can now do a plain configure / make (without python)
0362     then cd python; python setup.py build | install
0363 
0364 2003-05-08    Fixed array bound bug when not using mmap-ed files
0365 
0366     There was an incorrect test, when dealing with a new file and
0367     memory mapping is not enabled (which is uncommon, these days).
0368     Thanks to V Demarco for catching and resolving this bug.
0369 
0370 2003-04-28    Sourceforge
0371 
0372     Synced to SF's CVS, see http://sourceforge.net/projects/metakit
0373 
0374 2003-04-25    Autoconf/libtool update
0375 
0376     Did "autoreconf -force" with autoconf 2.5.7 and libtool 1.4.3, as
0377     suggested by Gerfried Fuchs/Ryan Murray.  Some Makefile.in tweaks.
0378 
0379 2003-04-22    Fixes to Mk4py (Gordon).
0380 
0381     Make view.append(instance) work again.
0382     Fix recursively adding subview data.
0383     Make properties compare properly.
0384     Initial (incomplete) unittest based test script.
0385 
0386 2003-03-16    ############################################    MK 2.4.9.2
0387 
0388     Also allow passing pairs to "mk::row append" as a list (Mk4tcl).
0389 
0390 2003-03-10    Fixes for sparc64 configure and AIX strcasecmp
0391 
0392     Both changes contributed by Andreas Kupries.
0393 
0394 2003-03-07    Fix more bugs in blocked view, add 64-bit Sparc support
0395 
0396     The blocked viewer deletion was STILL incorrect.  Fixed bad offset
0397     calculations, added several more assertion checks, and added a new
0398     m07 test case which checks for numerous cases of deletion overlap,
0399     i.e. cases where multi-row deletions cross subview boundaries.
0400 
0401     Added __sparc9 #define to mk4.h (thanks again, Andreas K)
0402 
0403 2003-03-05    Fixed two potential races in C++ threaded build
0404 
0405     There was a serious bug in view.cpp, whereby Unix (p)thread locks
0406     were non-functional in release mode (#define NDEBUG).  Yikes!
0407 
0408     In addition the logic was flawed (both Unix and Windows), failing to
0409     protect from indexing while sPropNames / sPropCounts were being
0410     resized (i.e. a realloc).  Added explicit locking to all affected
0411     paths, and removed the now obsolete count locks (i.e. AddRef).
0412 
0413     Thanks to Murat Berk for chasing this and explaining the problem.
0414 
0415     This bug "only" affects C++ builds.  Tcl and Python each have an
0416     extra layer on top which means there can be no races inside MK.
0417 
0418 2003-03-03    ############################################    MK 2.4.9.1
0419 
0420     Moving to a new 4-level bugfix release number.
0421 
0422 2003-03-02    Fixes to Mk4py (gmcm)
0423 
0424     Modify some recent patches that were Python 2.2 only so they would
0425     still work with 2.1. Add a view.properties() method (returning a
0426     dict of propname -> Property) for cases where a property is masked
0427     by a method name.
0428 
0429 2003-03-01    Reverted changes in Mk4py/scxx, avoid Mk4tcl warning
0430 
0431    One was in SCXX, PWONumber.h - ouch and apologies (jcw).  Changed
0432    comparison logic in mk4too.cpp (64-bit ints, new code).
0433 
0434 2003-02-28    Fixed relaxed layout in Mk4tcl, several Mk4py fixes
0435 
0436    Use list operators to convert a Tcl layout to MK format.  This used
0437    to crash, Tcl test 6.7 added to verify the fix.  Changed test 3.1 to
0438    use a different notation for nested defs (^).
0439 
0440    Added to ViewerAsSeq, to allow v1+v2+v3 (thanks Michael Scharf).
0441    Also fixed several mem leaks - thx again!
0442 
0443 2003-02-27    Added support for HPUX aCC "long long"
0444 
0445    Added #ifdef's to mk4.h to match autoconf HAVE_LONG_LONG settings.
0446    Tweaks to configure.in by Andreas K to better support HP/UX (thx!).
0447 
0448 2003-02-26    Added 64-bit int support to Mk4tcl, fix mingw
0449 
0450    The "L" type was not exposed, though Tcl >= 8.4 has "wide" ints!
0451    Will now support 64-bit ints, if built against a Tcl 8.4+ header, but
0452    still defaults to without for use in Tcl's <= 8.3.
0453 
0454    Fix _strdup #ifdef in univ.cpp when compiled from mingw on win32.
0455 
0456 2003-02-24    Break was missing in switch Mk4py
0457 
0458    Fixed a serious problem, which must have come from editing too
0459    wildly (Mk4py needs a test suite!).
0460 
0461 2003-02-20    Remove a stray include, remove CR's
0462 
0463    Remove "#include <stdio.h>" from remap.cpp, leftover from debugging.
0464    Also removed CR's left behind from editing under Windows (doh!).
0465 
0466 2003-02-18    ##############################################    MK 2.4.9
0467 
0468    This is mostly a bug fix release (some features added to Mk4tcl).
0469 
0470 2003-02-18    Fixed a bug in blocked view deletion, and hash byteorder
0471 
0472    There was an off-by-one error in the deletion of multiple rows
0473    which span more than an entire subview block.  Test m06 is ok now.
0474    Also added consistency checks (when compiled in debug mode).
0475 
0476    Fixed a too-strict assertion in mk4tcl.cpp, Item destructor.
0477 
0478    Fixed a byte-order sensitivity in hash views for numeric properties.
0479 
0480 2003-02-17    Configure tweaks for hpux/ia64
0481 
0482    Re-instated hpux changes by A. Kupries, for ia64, also -lpthread.
0483 
0484 2003-02-14    Bug found in blocked viewer modification
0485 
0486    Added test m06 to catch a problem first detected in the Tcl test
0487    suite (test 5.7) - recoded to C++.  This is a show-stopper for the
0488    upcoming 2.4.9 release - fixing it is now a top priority.
0489 
0490 2003-02-14    Some changes to OO interface in Tcl
0491 
0492    The OO "select" cmd now returns a view, not a list of row #'s.
0493    Added "product" and "rename" operators, they were not exposed.
0494 
0495 2003-02-14    Enable stdio buffering
0496 
0497    On platforms where stdio is used, the setbuf(..., 0) calls have been
0498    removed (fileio.cpp).  This improves performance, and lets caller set
0499    up whatever buffering they like.
0500 
0501 2003-02-07    Tweaks to restore broken MK ports
0502 
0503    Fixes by A. Kupries to fix MK builds I broke (Itanium/HPUX).
0504 
0505 2003-02-07    Changed code to avoid compiler warning
0506 
0507    In remap.cpp, LookDict(), add return at end to avoid a mistaken
0508    compiler warning (on AIX 5.1).  No effect on runtime behavior.
0509 
0510 2003-02-02    Work around optimizer bug in gcc 3.2.1
0511 
0512    The sign-extension in c4_ColOfInts::Get_16r was not being done right
0513    with -O2 on Linux.  This only manifests itself with files having
0514    reversed bytes (e.g. PowerPC/Mac).  Changed code to use a local temp
0515    buffer instead.  This bug was the reason why some starkits failed to
0516    load when created on Mac and used on Linux.
0517 
0518 2003-01-24    Fixed cleanup order bug in Mk4tcl
0519 
0520    There was a long-standing bug in Mk4tcl, in which cleanup order of
0521    MkPath objects caused them to access their MkWorkspace parent even
0522    though it was already deleted.  This may have caused some of the
0523    crash-on-exit bugs in the past.
0524 
0525 2003-01-22    Add missing -lstdc++
0526 
0527    For unknown reasons, the current make failed to produce shared libs
0528    with libstdc++ linked in - manually added to LDFLAGS again.
0529 
0530 2003-01-19    Tweak to temp object use
0531 
0532    Two changes in handler.cpp to avoid bug in compilers which get the
0533    cleanup logic of temp objects wrong (thx, Dan Gregory).
0534 
0535 2003-01-17    Add synonym for mk4tcl "info" command
0536 
0537    To avoid a name clash, "$view info" can now also be written as 
0538    "$view properties" (or an abbreviation of that).
0539 
0540 2003-01-16    Allow access to root view in Mk4tcl
0541 
0542    Access to root view (i.e. the storage object itself) was not
0543    allowed - added a small change to allow this (MkPath::AttachView).
0544 
0545 2003-01-15    Use strdup
0546 
0547    On Unix, use strdup i.s.o own code for _strdup, see univ.cpp.
0548    Perhaps it's time to start reversing the names, and make unix std.
0549 
0550 2003-01-10    Build improvements, Mk4py long and Mac improvements
0551 
0552    Merged changes submitted by Nicholas Riley (thanks!) into CVS:
0553    - changes to build Mk4py on MacOS X (framework/dylib)
0554    - support 'L' fields, handle overflow, throw exceptions
0555    - the beginnings of a test suite for Mk4py (in python/test/)
0556 
0557    Separated PPC and 68K projects (Mac classic), because PPC is now
0558    built with 8.3 (Carbon support), while 68K requires 6.3.  The x86
0559    cross-compile-from-mac projects have been dropped.
0560 
0561 2003-01-09    String compare tweak, Mac Carbon runtime mmap code
0562 
0563    Use strcasecmp on unix, instead of own code (string.cpp).
0564 
0565    Added code based on Paul Snively's contributed patch to recognize
0566    running under OSX, so carbon apps can benefit from mmapped files.
0567    All changes are within fileio.cpp, requires CW8 to build this way.
0568    Added "PPC Carbon" target to cw.mcp, derived from "PPC DLL" one.
0569 
0570 2002-12-23    Tweak for Borland builder 5 & 6
0571 
0572    Changed #ifdef line 22 in univ.cpp (fix by S. Cusack).
0573    
0574 2002-12-09    Fixed bug in selection view change propagation
0575 
0576    Fixed a bug when a row is inserted in a view on which a selection
0577    depends, when the inserted position is not part of the derived one.
0578    This looks like an oversight in 2.3/2.4 changes, and must have been
0579    in there for quite some time.  Added new n14 test to verify this.
0580 
0581 2002-12-02    Fixed bug in MK old-file format conversion
0582 
0583    Fixed bug in on-the-fly conversion of old 1.x/2.0.x format files.
0584 
0585 2002-11-24    Fixed Mk4tcl threaded build
0586 
0587    Release and reclaim mutex lock while calling eval inside loops.
0588    Added "--enable-threads" option to configure script.
0589 
0590 2002-11-22    Configure tweak for HPUX/Itanium
0591 
0592    Removed ia64 check in configure.in, now that libtool has been fixed.
0593 
0594 2002-11-16    Tweaks to compile on Mac
0595 
0596    Small changes to the source code to avoid errors from the MWCW 8.x
0597    compilers.  Omit stricmp and strdup with CW version >= 8.
0598    
0599 2002-11-04    Fixed typo in Makefile
0600 
0601    This prevented Mk4py from getting installed (thanks F. Majid).
0602 
0603 2002-11-03    ##############################################    MK 2.4.8
0604 
0605    Reverted non-portable change in Makefile to copy to "Mk4tcl.*".
0606 
0607 2002-10-28    Workaround for bugs on ARM/WinCE and HP/UX, Mk4tcl/WinCE
0608 
0609    Turn off c4_ColofInts::Set_8i optimization when compiling for ARM on
0610    WinCE using EVC3.  All regression tests now pass (on ARM & x86emu).
0611 
0612    On HP/UX, enable copying in fileio.cpp, line 265, so a write is not
0613    done directly from a mmap'ed file (this can hang a process, hard).
0614 
0615    Added a "mktcl" subproject to msevc3, to build "Mk4tcl.dll".
0616    
0617 2002-10-27    Added multi-thread support for Unix
0618 
0619    Added changes to support same appartment-threading model on Unix as
0620    on Win32 (pthreads based).  This merely adds support to allow safe
0621    use of the current "each datafile in one thread" design on Unix.  All
0622    changes in view.cpp (thank you, M. Berk).  Define q4_MULTI to enable.
0623 
0624 2002-10-26    Merged WinCE changes
0625 
0626    Merged changes to build MK for WinCE using MS Embedded VC 3.0.
0627    These changes are based on Joseph Tate's modifications (thanks!).
0628 
0629 2002-10-21    Updated autoconf & libtool (on teevie)
0630 
0631    Files in unix/ regenerated with autoconf 2.53a and libtool 1.4.1.
0632 
0633 2002-10-16    Added "dup" subcommand to Mk4tcl OO
0634 
0635    There was no way to duplicate a view in the mk4tcl OO interface.
0636    Needed to properly deal with re-use / ref counts - added "dup".
0637 
0638 2002-10-11    Cast widened in Mk4tcl, support q4_TINY def for Mk4tcl
0639 
0640    Changed cast from int to long, to avoid compiler warning on some
0641    64-bit machines (mk4tcl.cpp, line 2013).
0642 
0643    Remove float/double code when q4_TINY is defined, also in Mk4tcl.
0644 
0645 2002-10-10    Makefile tweaks
0646 
0647    Removed duplicate flags from CXXFLAGS definition.
0648 
0649 2002-10-09    Fixed blocked/subview bug, tweak for the ARM platform
0650 
0651    Blocked viewers were not doing the right thing when rows had subviews
0652    in them - fixed the logic, and add a new m05 test to verify it all.
0653 
0654    Fixed a signed-char bug which prevented MK from passing all tests on
0655    the ARM, in this case the Compaq iPaq PDA with Linux and gcc 2.95.4.
0656 
0657 2002-10-07    Tweak to prevent gcc compiler bug
0658 
0659    Added intermediate temp var in derived.cpp to prevent gcc -O failure.
0660 
0661 2002-10-04    Config and makefile adjustments
0662 
0663    Adjusted configure.in to use ".sl" for HP-UX, and ".dll" for Cygwin.
0664 
0665    Changed "install -d" to "mkdir -p" (2x) in Makefile.in, since the
0666    former is not supported by all incarnations of install (A Kupries).
0667 
0668    Added @CXXFLAGS@ to the end of "CXXFLAGS =" lines in Makefile.in,
0669    as suggested by Donal K. Fellows.  Used for his IRIX(64) builds.
0670 
0671    Added logic to build properly on HP-UX, including a small assembly
0672    file (!) which allows loading C++ shared lib from C, as needed in
0673    Tcl - with thanks to Andreas Kupries for solving and patching this.
0674 
0675 2002-09-25    Build tweaks for Mac OS X
0676 
0677    Applied patches by Daniel Steffen to deal with ".dylib" (thanks!).
0678 
0679    Use -O i.s.o. -O2, which caused test b27 to fail on OS X (gcc 3.1).
0680 
0681 2002-09-09    More 64-bit platforms recognized
0682 
0683    Added #ifdefs for more 64-bit platforms, thanks to Reinhard Max.
0684 
0685 2002-09-08    Make tweaks for HP-UX
0686 
0687    Tweaks to build on HP-UX / 9000 (added __hpux #ifdef in header.h).
0688 
0689 2002-09-03    Fixed Mac OSX build problem
0690 
0691    Compile Mk4tcl lib with stubs only if building the shared lib.
0692    Ignore strip errors (fails with Mk4tcl.so on OSX / dyld libs).
0693 
0694 2002-07-01    Python and Tcl installation improved
0695 
0696    Now installs Python Mk4py.so and metakit.py in the most common dir
0697    location by default, i.e. "/usr/local/lib/python2.2/site-packages".
0698    Locations can be overridden through $pyincludedir and $pylibdir.
0699 
0700    For Tcl, "make install" now constructs a standard package dir, i.e.
0701    "/usr/local/lib/Mk4tcl/" with entries "Mk4tcl.so" and "pkgIndex.tcl".
0702    Locations can be overridden through $tclincludedir and $tcllibdir.
0703 
0704 2002-05-30    ##############################################    MK 2.4.7
0705 
0706    Fix CONST84 logic so source compiles under both Tcl 8.3 and 8.4.
0707    Fix creation of tests/CVS/ so diff in regression tests won't fail.
0708 
0709 2002-05-14    Fixed an adaptive int insert/delete bug
0710 
0711    Another bug in the 2.3/2.4 codebase, related to adaptive integers.
0712 
0713    Symptom: one int entry has incorrect bytes after insert/delete.
0714 
0715    Scenario: ints are 1..8 bits, and an odd number are added/removed,
0716    leaving an odd-sized internal "gap".  Then store a 16/32 bit value,
0717    forcing resizing.  Once this is done, there will be one value which
0718    cannot be properly read or set because its data is split *across* the
0719    gap (commit is ok and removes the problem).  Fix in column.{h,cpp},
0720    with a new regression test s46 added to make sure things are ok now.
0721 
0722    Let's hope that this is truly the *last* deeply embarrassing bug...
0723 
0724 2002-05-06    ##############################################    MK 2.4.6
0725 
0726    Recent bug fix was critical enough to warrant a new revision.
0727    It is safest to avoid using versions 2.4.2 .. 2.4.5 altogether.
0728 
0729 2002-05-05    Fixed major bug in string/bytes after multiple commits
0730 
0731    Finally found a way to reproduce spurious bugs reported in the latest
0732    revisions.  It turns out that one of the optimizations of the past 2
0733    months (no exact details) caused memo's to be tracked incorrectly in
0734    their free space use.  This causes trouble with strings over 10 Kb
0735    (or smaller if there are over 1000 rows).
0736 
0737    The bug is forced by new (frightfully short) test cases s44 + s45.
0738    Fixed by performing a slightly less agressive optimization in the
0739    c4_FormatB::Commit (which is also shared with strings, type 'S').
0740 
0741    Removed a "--exclude" from diff, which is not portable enough.
0742 
0743 2002-05-01    Added support for Windows CE
0744 
0745    Patches submitted by Joseph Tate (thank you!), with minor tweaks.
0746 
0747 2002-04-29    ##############################################    MK 2.4.5
0748 
0749    Various bug fixes, fixed a number of platform issues.
0750 
0751 2002-04-28    Fix small-int re-use view bug
0752 
0753    A nasty bug was reported by VPI which caused upper bytes to be
0754    truncated from int values.  The problem appears when storing ints of
0755    1..4 bits in a view, then clearing the view (so a gap is placed past
0756    the end of the column), then adding a row with an int of 2 or more
0757    bytes.  This uncovered a bug in forgetting to truncate columns with
0758    sub-byte int storage.  Now fixed, added regression test s43.
0759 
0760    This bug could also have affected string and byte storage, since
0761    these use int columns to store item sizes.  Under very specific
0762    conditions, it may have lead to truncated or even mixed-up values.
0763 
0764 2002-04-27    Fix nested mk4tcl loop bug
0765 
0766    Loops would exit prematurely when nested - due to objc/objv being
0767    overwritten in the inner loop.  Affects mk4tcl.cpp and mk4too.cpp.
0768 
0769 2002-04-10    Fix bug introduced in recent blocked viewer optimization
0770 
0771    Murphy was at it again.  The bug affected the way row inserts and
0772    deletes were done, and can cause incorrect data to be copied.  It is
0773    relatively hard to reproduce (the test dataset was 12 Mb), but the
0774    change explains things fully and is in fact very small.
0775    
0776 2002-04-02    Fix bug in debug code
0777 
0778    In remap.cpp line 531, a debug assertion was moved in the wrong way.
0779 
0780 2002-04-01    Backed out to libtool 1.4d, fix test diff and Tcl const
0781 
0782    Backed out to the more official 1.4d release of libtool (instead of
0783    the CVS version, which is adding "tags" we will not need anyway).
0784    The unix/Makefile.in has been simplified, back to how it used to be.
0785 
0786    Fixed the "diff" call at the end of "make test" so that it no longer
0787    generates extra output if things match and now fails if they do not.
0788 
0789    Added fix to allow compiling mk4tcl.cpp with "pre-constified" Tcl
0790    code, thanks to a tip by Don Porter (see "grep CONST84 mk4tcl.*").
0791 
0792 2002-03-31    ##############################################    MK 2.4.4
0793 
0794    Various bug fixes and (blocked view) performance enhacements.
0795 
0796 2002-03-28    More blocked optimizations, IRIX tweaks
0797 
0798    Switched Slot() to binary search.  This seems to slow down a few
0799    percentage point for smaller views, but with 5 millions rows this is
0800    reported to make a huge difference (from code by Zhang Dehua).
0801 
0802    Added header "bool" fix by Erik Hofman so MK compiles on IRIX (SGI).
0803 
0804 2002-03-27    Added definitions for AIX
0805 
0806    Added six operators defs before c4_Cursor class, to avoid compile
0807    errors on AIX.  With apologies to Murat Berk for taking so long...
0808 
0809 2002-03-26    Re-instated the c4_View::RelocateRows operation
0810 
0811    Re-enabled code which supports efficient moves of rows from one view
0812    to another - avoiding copying of subviews.  Strings/memos are still
0813    being copied for now.  Also moved a slow test out into a new call
0814    "c4_View::IsCompatibleWith", this must be checked to make sure that
0815    RelocateRows can work.  Passing incompatible views will still cause
0816    an assertion in debug mode, but must be avoided in release builds.
0817 
0818    This change ought to have a dramatic effect on inserts/deletes for
0819    blocked views with large subviews.  Added examples/blockdels.tcl to
0820    thoroughly exercise this new code and all boundary conditions.
0821 
0822 2002-03-22    Fixed a serious bug in serialization code
0823 
0824    When serializing string/bytes columns with large strings using the
0825    c4_Storage::SaveTo function, memo's would sometimes not be written,
0826    leading to a *damaged* datafile (and incorrect free-space tracking).
0827 
0828 2002-03-15    Better configure logic, "mk::view layout" fix
0829 
0830    Many tweaks to configures, makes, and libtool setup.  Get rid of the
0831    library version numbers and the special Mk4*.so targets.  Instead of
0832    Mk4tcl.so use libmk4tcl.so (likewise Mk4py.so is now libmk4py.so).
0833 
0834    Fixed "mk::view layout", it was broken by the 10-2-2002 change.
0835 
0836 2002-03-13    Extend partial access 'B' usage
0837 
0838    Added code to Access and Modify to simulate partial data access the
0839    hard way when the underlying view does not support it (c4_Bytes
0840    only), i.e. copy via full temp.  Added test s41, doing partial access
0841    on a blocked view.
0842 
0843 2002-03-12    Add test for serialized input
0844 
0845    The c4_Storage::LoadFrom() call (mk::file load) can be tricky.  After
0846    a commit, the header is adjusted so that reading from the start
0847    works.  This is not the case in commit-extend mode, where a load will
0848    read th state as it was before extending - it cannot know there is
0849    more.
0850   
0851    Added test s40 to verify this case.  Also reorged a few more files
0852    (tbasics and tstore4 split into 2 each).
0853 
0854    Added test in mk4tl.cpp so LoadFrom failure generates an error
0855    return, instead of being ignored.
0856 
0857 2002-03-10    Tweaked March 8 fix a tad further
0858 
0859    The workaround implemented below wasn't 100% complete.
0860 
0861 2002-03-08    Workaround for file extend on Win
0862 
0863    There seems to be a bug when extending a file on at least NT4 with
0864    NTFS (file server works fine).  When extending the file in such a way
0865    that a gap is created to save new data during commit, the file
0866    appears to get rounded up to the next 512-byte boundary.  At that
0867    point, the datafile no longer has a valid end marker and is sort of
0868    corrupt.
0869 
0870    Wrote workaround for Win32 builds, see persist.cpp notes names "March
0871    8, 2002".  One way to force this bug is to run "mkhash Dmhs 250000" -
0872    after row 150000, it asserts on bad filesize when built in debug mode
0873    and run on NTFS.
0874 
0875 2002-02-19    Fixed over-aggressive optimization
0876 
0877    Change made on Feb 7 was releasing too many objects in a commit,
0878    causing it to detach empty top-level views, even when in use.  Fixed,
0879    added s39 to test for this case.
0880 
0881 2002-02-10    Improve Mk4tcl's "mk::view layout"
0882 
0883    Avoid crash when asking for the layout of a non-existent view.  Now
0884    returns an error instead.
0885 
0886 2002-02-07    Fast commit with many empty subviews
0887 
0888    Avoid creating subviews when committing, if these are empty anyway.
0889    Added new s38 test for this case.
0890 
0891 2002-02-02    Small optimizations
0892 
0893    Changed a few c4_Property instances to const& references to avoid
0894    copying (2 in view.cpp, 2 in custom.cpp).
0895 
0896 2002-02-01    ##############################################    MK 2.4.3
0897 
0898    Bug-fix release, mostly.
0899 
0900    Python include path now upgraded to python2.2 (was 2.1).
0901 
0902 2002-01-31    Cross-platform serialization, Tcl
0903 
0904    There was a bug with serializing a datafile (SaveTo) when it was
0905    created on a platform with reverse endian-ness.  Fixed so serialized
0906    data also flags reversed byte order.
0907 
0908    Tweaks to fix const changes in the latest Tcl cvs branch.  Fixed a
0909    recently-introduced UTF8 path bug in mk4tcl.cpp.
0910 
0911 2001-12-21    Optimized GetAs
0912 
0913    Now that GetAs is used so much more, optimize the common case where a
0914    description does not require restructuring.  Can lead to order-of
0915    magnitude speed improvement in cases where a storage contains many
0916    views.
0917 
0918 2001-12-20    Fixed bug in Locate, comparison issue
0919 
0920    Testing for the Mk4py changes uncovered a serious bug in
0921    c4_View::Locate, causing it to sometimes return zero, even if there
0922    are matching rows (thanks, Gordon).
0923 
0924    But a very fundamental weakness also showed up, being that row
0925    comparisons (and that includes the C++ operators) have the confusing
0926    property of not being symmetric in all cases.  The problem occurs
0927    when left- and right-hand sides do not contain the same (number of)
0928    properties.  In that case, the *left-hand* row participating in the
0929    comparison determines which properties take part in a comparison.
0930 
0931    In the case of Locate, this caused improper comparisons.  And it is
0932    very easy to get bitten by this, such as here: c4_RowRef key = ...;
0933    int n = view.Search(key); bool match = n >= 0 && view[n] == key; The
0934    above code is *wrong*.  The last line needs to be: bool match = n >=
0935    0 && key == view[n];
0936 
0937    This is very clearly a design mistake.  Comparisons should have been
0938    *either* implemented *or* named differently.
0939 
0940    A new "m04" test has been added to the regression suite.
0941 
0942 2001-12-19    Changes to mk4py by Gordon McMillan
0943 
0944    Several changes and cleanups.  Mk4py now has logic to track different
0945    view categories, e.g. to make sure a R/O view is not being written
0946    to.  This should greatly reduce the number of silently ignored
0947    incorrect calls, as well as crashes, and will produce appropriate
0948    error messages instead.
0949 
0950 2001-12-18    Cleanup
0951 
0952    Cleaned up source comments and got rid of yet more warnings.
0953 
0954 2001-12-14    Fixed yet another case of crash-on-exit
0955 
0956    The new Unmapped() code of 2.4.2 forgot one case of cleaning up,
0957    which has now been fixed (in c4_FormatB::Commit).
0958 
0959 2001-12-12    ##############################################    MK 2.4.2
0960 
0961    Better portability, hashing improved
0962 
0963    This release marks the consolidation of a number of changes, mostly
0964    relating to better portability & hashing.  The speed of commits with
0965    many strings and subviews should be notably better.  The Tcl
0966    extension no longer needs a "stub" library to compile (it now has
0967    that code itself), just std headers.
0968 
0969 2001-12-08    Changes to commit cleanup, Mac stuff
0970 
0971    Changed the logic of how ReleaseAllSegments gets called at the end of
0972    commits.  There was at least one case of leaving a column pointing
0973    into mapped file space when it was about to be remapped.  This should
0974    fix a very long-tanding bug which shows itself as freeing unallocated
0975    memory during commit or cleanup of the storage object.
0976 
0977    Changes to test coding and PyRowRef.cpp to deal with builds on
0978    Macintosh (different issues for MacOS 9 and MacOS X).  The
0979    mac/cw.sea.hqx project has been upgraded to MW CW 6.3.  Verified Tcl
0980    8.3.2 and Python 2.1.1 builds with CW6 on Mac.
0981 
0982 2001-12-06    Tweaks to Tcl interface
0983 
0984    More robust, added "$vw loop var ... {body}" object command.  The
0985    "$vw size" command now takes an optional newsize arg.
0986 
0987 2001-12-04    Tweaks to makefile and configure
0988 
0989    Tweaks, in preparation of an upcoming 2.4.2 release.
0990 
0991 2001-12-03    Changes in M4py, avoid gcc problem, hash
0992 
0993    The "-fomit-frame-pointer" option for gcc has been turned off,
0994    because it causes problems with exception handling in Mk4py.  All
0995    failures in Mk4py now propagate properly to Python AFAIK.
0996 
0997    Simplified Mk4py - by removing a layer of exception handler classes
0998    in scxx.  Errors now set info and throw a plain int.
0999 
1000    The mkhash.cpp sample program exposed a problem with multi-key
1001    hashing: the order of properties in the search key must match exactly
1002    the order in the hash view itself.  For now, this has been left as is
1003    (it's easy to do, once you are aware of it).
1004 
1005 2001-11-30    Win MT fix, commit tweak, indent cleanup
1006 
1007    Drop static buffer in fileio.cpp (DataWrite), uses stack now, so the
1008    code can be used in MT context even on Win 95/98.  It does more
1009    copying than would be needed for NT (2K?), alas.
1010 
1011    More changes in c4_FormatB::Commit to properly detect memo use in
1012    blocked views.  The recent changes introduced a bug which shows up
1013    only with blocked views and large string/bytes items.  Reported by
1014    Steve Baxter with demo, new "m02" regression test.
1015 
1016    Changed fileio.cpp to turn off file buffering, this avoids a few
1017    reads when writing and seeking a lot.  It does not have as big an
1018    impact as one might expect, but every little bit helps.
1019 
1020    Cleaned up new 2-space indentation in several source files.
1021 
1022    Added new "mk::file space" in Mk4tcl, to inspect the current file
1023    space usage.  This is only intended for internal testing.
1024 
1025 2001-11-28    Fixed memory leak in string/memo cleanup
1026 
1027    There was a mem-leak in c4_FormatB::Commit which showed up due to
1028    yesterday's more extensive testing.  Only showed up after a commit,
1029    in string columns with widely varying item sizes.  This caused
1030    regression test s37 to fail in MFC-debug compile.
1031 
1032 2001-11-27    Major performance bug fix, and MT strings
1033 
1034    A serious problem has been resolved, which slowed down commits, and
1035    prevented blocked views from committing efficiently.  The reason was
1036    that for string props, the string size was always being saved anew,
1037    even if no changes in that view took place.  This did not affect
1038    proper operation, just speed, and was most noticeable with many
1039    (sub-)views containing many string props.
1040 
1041    The solution is in src/format.cpp, the examples/mkhash.cpp code was
1042    further adjusted to better expose and measure the effects.  Thanks to
1043    P. Baspeyras and S. Baxter for helping me resolve it.
1044 
1045    Another change was to alter the way empty strings are allocated in
1046    the src/string.cpp code, making it compatible with multi- threaded
1047    use and removing the remaining memory leak.
1048 
1049 2001-11-26    Fix in assertion check (blocked view)
1050 
1051    Corrected an off-by-one bug.  Only shows up with debugging on, since
1052    it's inside an assert().  Thanks to Steve Baxter.
1053 
1054 2001-11-25    More arg checking in Mk4py, locate
1055 
1056    Added more checks against incorrect usage, based on sample code by
1057    Mitch Chapman.  The "throw" code appears to be inconsistent when
1058    called at top of *some* calls, using a workaround for now.
1059 
1060    Added "view.locate(key)" wrapper, returns (pos,count) tuple.
1061 
1062    Various source code formatting adjustments (indents and such).
1063 
1064 2001-11-04    Added alternate calls to c4_CustomViewer
1065 
1066    Added extra defs to "mk4.h" of Lookup and InsertRows which take a
1067    "const c4_RowRef&" i.s.o. a c4_Cursor.  Inlined in "mk4.inl".  The
1068    "c4_Cursor" datatype might one day become obsolete.
1069 
1070 2001-11-03    Removed tcl/kit/ and copyright notices
1071 
1072    Removed the entire tcl/kit/ tree, Tclkit will be distributed as
1073    separate package from now on (the 2.4.1 release still builds ok).
1074 
1075    Also replaced all copyright notices by version Id's and an URL.
1076 
1077 2001-11-02    Fixed partial memo commit bug, makefile fix
1078 
1079    Modifying a small item as memo (i.e. through Modify) properly
1080    committed a change, but subsequently left an incorrect pointer after
1081    the commit.  Fixed, and added test s37 to catch this case.
1082 
1083    Don't strip symbols from installed static libs (whoops!).
1084    
1085 2001-10-31    Fixed Mk4py error flag clear on delete
1086 
1087    When deleting rows, a slice was constructed from a PWOSequence, which
1088    generates an otherwise harmless error when its length is checked.
1089    The flag was not cleared, causing errors in subsequent Python
1090    statements.  Changed to a PWOTuple in PyView.cpp (2x).
1091 
1092 2001-10-26    Fixed Mk4tcl re-open test
1093 
1094    The tcl/test/mk1basic.tcl test #6 was reporting open failure on
1095    non-Linux systems.  Fixed, the code works, the message was wrong.
1096 
1097 2001-10-19    Rearranged some demo files, Lua binding
1098 
1099    Rearranged some of the demos/samples from the python/ and tcl/ areas,
1100    and placed them in examples/ instead, for consistency.
1101 
1102    Added "selmap.tcl" to illustrate how to turn select into a view.
1103 
1104    Added a basic Lua binding (incomplete, but it's a start) in lua/.
1105 
1106 2001-10-18    Fixed recent hash bug, and add to ordered
1107 
1108    The recent "fix" to deal with hash misses introduced a huge bug,
1109    causing the mapping to be recalculated on each insertion.
1110 
1111    Adding to an ordered view did not always work, because the code was
1112    based on SetAtGrow, which is not suitable for an ordered view in
1113    which the row position is determined implicitly.  Fixed by changing
1114    c4_View::Add to use c4_View::InsertAt instead.
1115 
1116 2001-10-14    ##############################################    MK 2.4.1
1117 
1118    Custom-extended Tclkit, and threading
1119 
1120    Minor kitInit.c change allows wrapping apps as a "custom-extended"
1121    version of Tclkit.  Enable threaded Tcl build on Unix.
1122 
1123    This release consolidates the most recent fixes and code tweaks.
1124 
1125 2001-09-27    Fix temp storage open in Mk4tcl
1126 
1127    A recent change made it impossible to open temporary storages from
1128    Tcl ("mk::file open db") - <blush> - now fixed again.
1129 
1130 2001-09-19    Bug fixes
1131 
1132    Fixed a problem during commit, when memo's are modified, causing them
1133    to be stored inline again.  This caused a late reference to mapped
1134    memory - leading to intermittent crashes on commit.
1135 
1136    Changes/fixes in mk4tcl.cpp, to prevent a problem when a datafile is
1137    re-opened again under the same name later on.  Old references could
1138    in some cases end up stale - leading to crashes much later.
1139 
1140 2001-09-05    Bug fixes
1141 
1142    Hashing bug fixed: failed to terminate when looking for a missing key
1143    after a hash collision.  The fill count was not being tracked
1144    properly to enforce that there is always at least one unused slot.
1145 
1146    Fixed bug when setting a string from a higher row: the data gets
1147    trashed, because too little copying was done while creating a gap.
1148    This bug may have led to some other cases of "damaged" datafiles.
1149    Solved by copying input data in c4_FormatB::SetOne().
1150 
1151    Fixed long-standing bug with commit-after-load, by now doing a full
1152    view/subview copy.  This is inefficient, but it avoids all sorts of
1153    mapping/strategy problems.  This also fixes test s33 (at last!).
1154 
1155    Added regression tests b27, c21, m01, and s36 to check above fixes.
1156 
1157 2001-06-29    ##############################################    MK 2.4.0
1158 
1159    More changes to the Mk4py interface
1160 
1161     - allow setting a row to a value if the row has a single property
1162     - there is an unexplained crash when setting slices with wrong type
1163 
1164 2001-06-22    Changes to the Mk4py interface
1165 
1166     Modifications and fixes gratefully accepted from John Barnard:
1167     - c4_LongProp support ('L' datatype)
1168     - row.__attrs__ returns the list of all properties
1169     - row.__view__ returns the container view of the row
1170     - row.__index__ returns current position in view
1171     - view.setsize(n) added, extends/truncates number of rows
1172     - generalized makerow to allow any sequence, not just lists
1173     
1174     Changed PyRowRef to inc/dec the reference it has to the underlying
1175     view.  Should prevent dangling pointer problems, such as deleting a
1176     storage while rows are still in use.  This adds a little overhead.
1177 
1178     Fixed a PyErr_Clear issue when accessing non-existent properties.
1179 
1180 2001-06-12    Close DB filedesc on exec
1181 
1182     Added an fcntl call to fileio.cpp, so that on Unix database file
1183     decriptors are closed on exec (relevant when doing "exec ... &").
1184 
1185 2001-05-30    Fixed mem-leak in Mk4tcl
1186 
1187     A long-standing bug, in TclSelector::ExactKeyProps.
1188 
1189 2001-05-28    Security fix in Tclkit
1190 
1191     See end of the tcl/kit/README file for deatils.
1192 
1193 2001-03-30    Fixed long-standing commit bug
1194 
1195     There was an intermittent bug in c4_Persist::Commit, when properties
1196     were "restructured away" (dropped).  The bug was hard to track down,
1197     because it depended on what address ranges the O/S assigned to
1198     mem-maps.  Might also fix other spurious commit/exit crashes.
1199 
1200 2001-03-29    ##############################################    MK 2.3.4
1201 
1202     The "last" release candidate
1203 
1204     Now checked into its *new* CVS home at equi4.com.  Mailings list(s)
1205     have also been moved to this site.
1206 
1207 2001-03-28    Fix Win build, broken on Mar 27
1208 
1209     Dropped kBufMax from mk4.h, it caused compiler errors in MSVC6 -
1210     switched to "sizeof" in a couple of places.  This error was
1211     introduced by the double-fix of 3/27.
1212 
1213 2001-03-28    Allow builds of Tclkit with Sun CC
1214 
1215     Integrated a few changes provided by D.J. Hagberg.  Note: the
1216     M-solaris.sh and M-dyn.sh scripts need to be manually edited when
1217     choosing between CC and gcc.
1218 
1219 2001-03-27    Double-alignment bug on Solaris
1220 
1221     Two changes (c4_Bytes in mk4.h and src/column.h) to fix an alignment
1222     problem for 8-byte doubles on Solaris.  This caused tests b17, b23,
1223     b24, s22, and s28 to fail.
1224 
1225 2001-03-26    Fixed cross-platform commit bug
1226 
1227     There was a nasty bug in the 2.3.x code, which wrote incorrect field
1228     sizes when committing to a datafile with a different byte order
1229     (i.e. created on a machine using different endian-ness from the one
1230     doing commit).
1231 
1232 2001-02-14    Removed file events from Tclkit
1233 
1234     Changed kit/rechan.cpp to not generate file events.  This avoids a
1235     bug in Tclkit whereby an open file can generate a continuous stream
1236     of file events as long as the file is open - the console will seem
1237     to be frozen, though "close $file" does work and fixes it.
1238 
1239 2000-12-13    Added missing c4_LongRef export
1240 
1241     Added a line in mk4dll.h to resolve references to the new
1242     c4_LongProp/c4_LongRef datatype on Windows.
1243 
1244 2000-12-04    Fixed conversion bug
1245 
1246     There was a bug in c4_FormatV::OldDefine, causing MK to crash when
1247     trying to convert an old-format file with empty subviews in it.  Bug
1248     introduced on 14 Nov.
1249 
1250 2000-12-02    Fixes in Tclkit code
1251 
1252     Fixed a Tcl-level bug causing memory leaks for all compressed files
1253     stored with MK opened for reading.
1254 
1255     Disabled event sources (mk4tcl.cpp and rechan.cpp) to avoid a GUI
1256     freeze-up while a fake file is open.
1257 
1258 2000-11-16    Simplified c4_Storage
1259 
1260     Made some changes so that a c4_Storage no longer has a separate
1261     c4_Persist* copy.  As a result, a storage can now be reconstructed
1262     from any root-level view.  This generalizes views, and prepares for
1263     a merge.
1264 
1265 2000-11-14    Fixed mem leak in conversion code
1266 
1267     The conversion code from pre 2.3 files had a memory leak in
1268     c4_FormatV::OldDefine, causing f06 to leak, as well as several
1269     subsequent erroneous leak reports.  Changed a few "new" to "d4_new"
1270     calls along the way.
1271 
1272     Remove FlipBytes members, they are no longer needed.
1273 
1274 2000-11-08    Tclkit now in the distribution
1275 
1276     The "Tclkit" project has been merged into Metakit.  Details and
1277     updated build info at "tcl/kit/README".  The SourceForge CVS
1278     repository is up to date again.
1279 
1280     Mk4py: improved number conversion and error handling.
1281     
1282 2000-11-03    ##############################################    MK 2.3.3
1283 
1284     First final release candidate
1285 
1286     Yes, there will probably be a second one as well...
1287 
1288 2000-10-31    Improved error handling
1289 
1290     More logic added to catch errors in flush and streams.  This affects
1291     the C++ core as well as Mk4py and Mk4tcl.  API of c4_Stream::Write
1292     changed to return success flag.
1293 
1294 2000-10-30    Added autocommit call to Mk4tcl
1295 
1296     To better support VFS, Mk4tcl now has a new command "mk::file
1297     autocommit <db>" to force commit on close.
1298 
1299 2000-10-26    Changes to compile with Borland C++
1300 
1301     Minor tweaks to compile with Borland C++ Builder 4.0, which does not
1302     support "long long".  A new Kitviewer has been built (new code to
1303     replace c4_View::Describe).
1304 
1305 2000-10-03    Fixes for Alpha Unix
1306 
1307     Moved _item in column.h up to fix alignment sensitivity.  Config.h
1308     did not get SIZE_LONG right on Alpha Unix (0?).
1309 
1310 2000-09-27    Contributed fixes and Python 2.0b2
1311 
1312     Adjusted makefile to build with Python 2.0b2 release.
1313 
1314     Source code tweaks to avoid DEC CXX 5.7 compiler errors.  Add
1315     no-inherit flags for Win32 to not leak file handles.
1316     
1317 2000-08-27    Allow derived row deletes in Mk4py
1318 
1319     Added code to PyView.cpp to handle deletes (and slice deletes) in
1320     derived views, see "examples/derived.py".
1321 
1322 2000-07-30    Major auto-convert 1.8.6 file bug
1323 
1324     Bug in on-the-fly conversion of bytes properties ('B') in pre-2.0
1325     datafiles (i.e. 1.8.6 and earlier) resolved.
1326 
1327     Unfortunately, this bug cannot be 100% unambiguously fixed.  The
1328     new code *will* properly detect most cases, and convert both 1.8.6
1329     and 2.0 datafiles on the fly, but especially for views with only a
1330     few rows and at most a few bytes of data per row - the conversion
1331     *might* fail.
1332 
1333     In this case, MK will have to be compiled with a define to force it
1334     to either assume all old datafiles are 1.8.6 (-Dq4_OLD_IS_PRE_V2),
1335     or to assume that they are always 2.0 (-Dq4_OLD_IS_ALWAYS_V2).  If
1336     you are currently using MK 1.8.6, then you should *skip* the update
1337     to 2.01, and consider updating to 2.3.x.  This way you never have
1338     any 2.0 files around, and can force all your code to handle 1.8.6
1339     files properly (by using "-Dq4_OLD_IS_PRE_V2").
1340 
1341     See src/format.cpp, c4_FormatB::OldDefine for details.
1342 
1343     This bug *only* applies to bytes properties in pre-2.0 data files.
1344     Conversion of 2.0x files is unaffected.
1345     
1346 2000-07-25    Fixed new self-referential views
1347 
1348     The new recursive / self-referential view definition style has been
1349     fixed, e.g. "view[data:S,self[^]]" will now let you store a tree of
1350     arbitrary depth, with each 'self' subview having data and self
1351     properties.  See the demo in "examples/selfref.py" to see how this
1352     all works.
1353 
1354 2000-07-22    Fixed bug in double restructuring
1355 
1356     Solved a very long-standing bug in restructuring, which caused
1357     incorrect (non-zero, small) default values when a c4_DoubleProp was
1358     added to a view which already had rows.  
1359 
1360 2000-07-18    Added remapwith and pair to Mk4py
1361 
1362     Exposed C++'s c4_View::RemapWith as v1.remapwith(v2), and
1363     c4_View::Pair as v1.pair(v2) in the Mk4py Python binding.  Added
1364     pair.py, remap.py, and wrap.py in "examples/" dir.
1365 
1366 2000-07-12    Added metakit.py wrapper
1367 
1368     Added "metakit.py" script to wrap Mk4py, including a new
1369     metakit.dump() to pretty-print views.  More utility code will be
1370     added over time.  The preferred way to use Metakit from Python is
1371     now "import metakit".
1372 
1373 2000-07-06    Conversion fix, warning cleanup
1374 
1375     Fixed on-the fly conversion of old datafiles.  The free space was
1376     not managed properly - changed to never touch any data inside the
1377     file during conversion.
1378 
1379     Some source code change to get the compile through gcc flags
1380     "-fguiding-decls -Wall -pedantic -Wno-unused".  The only remaining
1381     complaint is about using "long long".
1382 
1383 2000-07-04    MkSQL subtree, "indexed" mapped viewer
1384 
1385     Added the sql and mksql subtrees to the distribution, with Gordon
1386     McMillan's MkSQL engine, written in Python.  The "isql.py" script is
1387     a simple interactive shell around it.
1388 
1389     Started work on a new viewer which maintains a persistent index (as
1390     a one-int-prop permutation), see src/remap.cpp.
1391 
1392 2000-07-03    Mk4tcl fixes
1393 
1394     Fixed view rename problem and "delete end" (Matt Newman).  Adjusted
1395     the tests in tcl/test/mk5object.tcl accordingly.
1396 
1397 2000-06-30    Tequila fixes
1398 
1399     Close fix and failure handler (Steve Landers).
1400 
1401 2000-06-29    ##############################################    MK 2.3.2
1402 
1403     First beta release
1404 
1405     The new release is 99% feature-complete.  What remains is to further
1406     document C++/Python/Tcl use and to fix bugs.
1407 
1408     Python sample code in "python/aside.py" and "python/find.py".  Tcl
1409     samples in "tcl/test/mk5object.tcl" and "tcl/mapped.tcl".
1410 
1411 2000-06-28    Hash/blocked/ordered: changes and fixes
1412 
1413     Changed hash insertion to insert at specified position.  This makes
1414     it possible to use hashes "under" ordered views.  For best
1415     performance, insert rows at end of hash views.
1416 
1417 2000-06-26    Documentation, example, Mk4tcl OO fixes
1418 
1419     Moved C++ member documentation out of "mk4.h" header.  Added
1420     examples/ directory, with a find.py timing example.  Fixed bugs in
1421     new Mk4tcl: "$vw find" and "$vw delete end".  Added tests for new
1422     Mk4tcl OO interface: ":mk5object.test".
1423 
1424 2000-06-16    Improved modifiable custom viewers
1425 
1426     The Pair and Slice viewers now support set/insert/remove, while
1427     RemapWith/Concat/Rename support setting values.  
1428 
1429 2000-06-15    Many changes to the Tcl code, hashing
1430 
1431     Contributed by Matt Newman, it adds support for most custom viewers,
1432     including the new hash etc.  Added a fast find.  Caveat: most old
1433     custom viewers are still not modifiable.
1434 
1435     Hash calculation improved, far less collisions than before.
1436 
1437     Blocked viewer seems to work.  Ordered on top is sub-optimal.
1438 
1439 2000-06-12    GetUpperLimit, Blocked, Ordered, mk4too
1440 
1441     Removed c4_View::GetUpperLimit (it's equivalent to GetSize-1 and was
1442     not being used anywhere).
1443 
1444     Start implementing c4_BlockedViewer, a simple balanced/blocked
1445     nested data structure.  Also started on a c4_OrderedViewer, which
1446     keeps the underlying view sorted during changes.  These two can be
1447     combined to implement an efficient 2-level btree.
1448 
1449     Adopted code by Matt Newman for oo-cmd's for Mk4tcl views.  First
1450     trials work, started to extend with new custom viewers.
1451 
1452 2000-06-09    Change case of a few Mk4py members
1453 
1454     Changed all top-level members in the Python interface to lower case:
1455     storage, property, view, wrap (will break existing code).
1456 
1457     Fix bounds check in Mk4tcl.cpp for commit/rollback (new code).
1458 
1459     Whoops, forgot to add new src/remap.{h,cpp} to the cvs tree.
1460 
1461 2000-06-08    Implemented hash lookup
1462 
1463     Added a new virtual c4_Sequence::RestrictSearch, which lets a view
1464     take over searching (used by c4_View::Find).  The result is that the
1465     new hash viewer gives a huge speedup for finds.  Find requests which
1466     require linear scanning are unaffected.
1467 
1468 2000-06-07    Documentation extraction based on Doxygen
1469 
1470     The automatically generated output from Doxygen is working out well
1471     and looking pretty, added "src/doxy.h" with more comments.
1472 
1473 2000-06-05    Started hash and btree custom viewers
1474 
1475     The hash implementation is nearly done, also usable from Python.
1476     Btrees are being implemented as fixed 2-level for now.
1477 
1478 2000-06-01    Fixes
1479 
1480     Fixed crash when opening missing file r/o new in 2.3.1 alpha.  Fixed
1481     incorrect on-the-fly-conversion of 2.0 format subviews.  Added
1482     "storage.aside(storage)" to the Python interface.
1483 
1484 2000-05-30    Fixed commit-aside
1485 
1486     The new commit-aside code was botched by recent changes.  Fixed
1487     SetAside to pick up new root seq, changed by implicit rollback.
1488     Note that a commit-aside is not finished until you *also* commit the
1489     secondary file containing all newly generated changes.
1490 
1491     Fixed bug in c4_BytesRef::Access, introduced in 2.3.1 alpha.
1492 
1493 2000-05-29    Added new 64-bit long datatype
1494 
1495     Added support for 64-bit longs (type 'L'), and c4_LongProp, etc.
1496     This type is not autosizing, it always uses 8 bytes per entry.  Uses
1497     "long long" or "__int64", else defines struct with 2 longs.  This is
1498     not yet correct for platforms which have no 64b ints.  No regression
1499     tests or Python/Tcl interfaces yet.
1500 
1501 2000-05-28    Better file mark scanning
1502 
1503     Added c4_Strategy::EndOfData, to determine the logical end of a
1504     Metakit.valuefile.  This call can be used to check whether a file
1505     contains any data, and whether a commit-extend has been performed.
1506     Old-style scripted documents (with preamble) can now be opened.
1507     Changed strategy class, DataSeek has been merged with read/write.
1508     Removed c4_LoadContext, LoadIt member moved to c4_Persist.
1509 
1510 2000-05-27    Tweaked configuration define's
1511 
1512     Make the release build the default (no assertions, use inlines).
1513     Enable booleans for gnuc by default (it's pretty standard by now).
1514     Added extra include path to better find Python's includes.
1515 
1516 2000-05-26    Fixed Tcl dependency
1517 
1518     Changed configure script to no longer look for Tcl if the
1519     "--with-tcl=..." parameter is not specified.
1520 
1521 2000-05-25    ##############################################    MK 2.3.1
1522 
1523     First alpha release
1524 
1525     Officially, this is "Metakit 2.3.1 alpha" (ignore "2.3.0" in mk4.h).
1526     All alpha's are 2.3.1 (beta's will be 2.3.2, finals start at 2.3.5).
1527     Builds on Linux/Mac/Win appear ok - as do Mk4py, Mk4tcl, and Tclkit.
1528 
1529 2000-05-06    Massive changes to the core
1530 
1531     To summarize the main issues: management info is now stored in such
1532     a way that it need not be read in right away - file open is now
1533     instant.  The S(tring) datatype is now stored as B, making it far
1534     more scalable (API/use is unchanged).  Storage objects now derived
1535     from views, both can be initialized from a stream (data will be kept
1536     in a buffer, beware of potentially large memory use).
1537 
1538     Several file format changes are "for future expansion".
1539 
1540 2000-05-05    Fixed builds without Tcl
1541 
1542     In 2.0.1, the make would fail if there was no Tcl to build with, or
1543     not an appropriate release.  Changed Makefile to report and skip Tcl
1544     builds in that case.
1545 
1546 2000-04-06    Fixed a nasty restructure/mmap bug
1547 
1548     When a property is deleted by a restructure, then committed, then
1549     later committed again, a problem can cause MK to crash.  It has only
1550     been detected in debug builds, but the problem turns out to be a
1551     fundamental one (only happens with memory-mapped files, if the file
1552     is resized).  Fix in next rel (c4_HandlerSeq::DetachFromStorage).
1553 
1554 2000-04-02    Memo properties are no longer needed
1555 
1556     The M datatype is gone from the public API (and now illegal).
1557     Everything binary should now be stored in B(ytes) properties, which
1558     then adaptively decide which internal format to use, based on a
1559     simple heuristic (which will be refined later).  Existing datafiles
1560     will automatically convert from M to B.  The partial Access and
1561     Modify calls now also work on B items.
1562 
1563 2000-03-30    Minor change in c4_Strategy
1564 
1565     Dropped the _keepAfterCommit flag in c4_Strategy, it probably has
1566     never been used and it interferes with new features.
1567 
1568 2000-03-27    Change in API for creating storages
1569 
1570     It is no longer possible to create a storage and define its
1571     structure with a single call.  Instead, open a storage in r/w mode
1572     (i.e. "1") and then call the (now public) SetStructure member to
1573     define the structure of all views.  This change is necessary to
1574     prepare for the upcoming "commit-aside" logic.
1575 
1576 2000-03-23    File format changes (in progress)
1577 
1578     The new file format has an incompatible header, so old code will not
1579     recognize new datafiles.  Major changes are: added a file tail
1580     marker, the serialized format is now a very good way to compress
1581     datafiles, since it can be efficiently opened in on-demand/mmap'ed
1582     mode.  The new format supports several planned features.  Code to
1583     convert existing files on-the-fly will be added before this change
1584     is released.
1585 
1586 2000-03-19    Added c4_Strategy::FileSize
1587 
1588     The Strategy::FileSize call is used for a file format change.
1589 
1590 2000-03-18    Added c4_View::Locate
1591 
1592     Locate returns the number of matching rows, and optionally the
1593     position of the first one, using binary search.  Like the
1594     c4_View::Search function, it requires the view to be sorted.
1595 
1596 2000-03-17    ##############################################    MK 2.01
1597 
1598     Maintenance release, it's solid
1599 
1600     Updated MK version number to 2.01, this maintenance release
1601     represents a very stable version.
1602 
1603     Small change to b07 test to avoid evaluation order problems.
1604 
1605     Added unix/metakit.spec file for RPM, thanks to Sean Summers.
1606 
1607 2000-03-16    Drop Store, fix deep copy, drop segments
1608 
1609     c4_Storage::Store never worked properly under all conditions.  It's
1610     been deprecated for some time and has now been removed.  Made a
1611     handful of changes to test- and demo code to drop it.
1612 
1613     Duplicating a view with deep copy never worked, because it used the
1614     buggy Store call as well.  Changed to use recursion.
1615 
1616     Dropped support for segmented tree-walk storage, which hasn't been
1617     used since 1.5 (use a commit with 2.0 to convert files).  This is
1618     necessary to prepare for some file format changes.
1619 
1620 2000-03-15    Modifiable custom viewers, other tweaks
1621 
1622     A start has been made with making custom viewers updatable.  The new
1623     methods are Set, InsertAt, RemoveAt, and Move, but the number of
1624     viewers which implement this is still limited.  Mk4py has been
1625     adjusted to allow "set" on wrapped views.
1626 
1627     Removed c4_Strategy::DataLoad, it was only used in one place.  Small
1628     optimization of the 2 calls to c4_Streamer::NextByte.  Get rid of /
1629     disallow read calls on memory mapped files.
1630 
1631 2000-03-14    Makefile tweaks, non-commits smarter
1632 
1633     Changed from --enable-tcl to --with-tcl=DIR, because the old
1634     approach only worked with Tcl installed in a standard place.
1635 
1636     Commits of a R/O file now fail.  Also, if no changes have been made,
1637     a commit will no longer write anything to file.
1638 
1639 2000-03-13    Several new commands added to Mk4py
1640 
1641     Several changes were submitted by Gordon McMillan, which add better
1642     support for his upcoming SQL engine.
1643 
1644 2000-03-12    Allow embedding MK datafile at end of EXE
1645 
1646     Mk4tcl was changed to look for an optional trailer for quick access
1647     to the start offset.  This makes it possible to append datafiles to
1648     executables, even if they are larger than 4 Kb.
1649 
1650 2000-02-29    Fixed rare bug with lots of memo fields
1651 
1652     There was a bug in free space management (persist.cpp), which can
1653     only occur when exactly 7500 free space gaps are present, and a
1654     commit crosses the threshold.  There was also a small mistake in
1655     that same code causing a bit of free space waste.
1656 
1657 2000-02-24    Added proxy support to Tequila
1658 
1659     Tequila can now be used as basic client/server setup for Tcl
1660     scripts.  See tcl/tequila/README for details and an example.
1661 
1662 2000-02-04    Fixed mk::views (Mk4tcl)
1663 
1664     The mk::views command failed to list the first view in the file
1665     (this bug was introduced by changes in MK 1.99).
1666 
1667 2000-01-02    Adjusted y2k
1668 
1669     Copyright and license dates adjusted.
1670 
1671 1999-12-26    More Mk4py changes
1672 
1673     Added sortrev, and fixed "select(low,high)".  Docs updated.
1674 
1675 1999-12-23    New view operators in Mk4py
1676 
1677     Added rename, project, groupby, and counts operators to Mk4py.
1678     These were already part of the C++ core.
1679 
1680 1999-12-22    Avoid GetId inline warning
1681 
1682     Reordered GetId in "mk4.inl" to avoid (harmless) inline warning.
1683 
1684 1999-12-21    Checked-in Catfish and Kitviewer sources
1685 
1686     Added win/catfish and win/kitviewer areas.  Catfish was built with
1687     MSVC 1.52, so the win/msvc152 area has also been added.
1688 
1689     Kitviewer requires Borland C++ Builder 4.0 to build (using VCL), it
1690     has been adjusted to now also recognize scripted documents.
1691 
1692 1999-12-20    Bug fix in set-after-get situations
1693 
1694     A bug has surfaced when setting string/byte/memo values which span a
1695     4 Kb block boundary.  The bug can only happen if data is first
1696     fetched and subsequently changed.  The affected code is in
1697     src/format.cpp (3x).  Added Tcl test 5.5 to catch this.
1698 
1699 1999-12-19    Mac tweaks
1700 
1701     Changes to make the Mac versions build from the CVS repository.  The
1702     Mac can also cross-compile Windows libraries using MWCW 5.
1703 
1704 1999-12-17    Add the Tequila example
1705 
1706     Added the Tequila global Tcl array data server, see tcl/tequila/.
1707 
1708 1999-12-15  MK 2.0      Official Open Source release
1709 
1710     Removed a bad assertion from FormatX::Compare.
1711 
1712     Several new services set up on the excellent SourceForge.com site.
1713 
1714 1999-12-14    Documentation added
1715 
1716     The C++ API documentation has been added to the distribution, as
1717     well as a document describing the file format details of Metakit.
1718 
1719 1999-12-13    Bug fix affecting c4_View::Description
1720 
1721     There was a problem with c4_ViewScanner::Describe, due to a change
1722     from c4_String to (const char*).  Now c4_View::Store works again.
1723 
1724 1999-12-12  MK 1.99     New release, as open source software
1725 
1726     The major change is that Metakit has been released as open source
1727     software, based on the liberal X/MIT-style license.  Commercial
1728     support remains unchanged for all recent commercial customers, and
1729     for those who purchase the Enterprise License.  The Universal Source
1730     license has been terminated, because full source code is now freely
1731     downloadable by anyone from the website.
1732 
1733     Sources and documentation files have been adjusted accordingly.
1734 
1735 1999-12-08  MK 1.9h     Bool support for gcc/egcs, minor fix
1736 
1737     Clear _field after delete in c4_HandlerSeq::DefineRoot.  This
1738     triggered an assertion on Linux, when compiled in debug mode.
1739 
1740     Added pre-processor logic to detect whether gcc supports bools.
1741 
1742     Removed all indentation from #define's, #ifdef's, etc.  This was
1743     done after a report that some compilers can get confused by this.
1744 
1745 1999-12-06    Derived view row copy fix
1746 
1747     There was a problem when using SetAt with derived views as source,
1748     due to a remapping problem.  Fixed viewx.cpp, added new test b25.
1749 
1750 1999-11-25  MK 1.9g     Makefile changes, thread-safe Mk4tcl
1751 
1752     Renamed options to --enable-python and --enable-tcl, both now off by
1753     default, since most people probably don't want to enable both.
1754 
1755     The new "-shared" changes to make Mk4tcl thread-safe have been
1756     folded into the main source code.
1757 
1758 1999-11-22    Channel improvements Mk4tcl
1759 
1760     There was a close conflict in mk::channel, also several changes to
1761     improve mk::channel fileevent handling.
1762 
1763 1999-11-19    Bug fix in Mk4tcl
1764 
1765     There was an array overrun when mk::get was called without fields.
1766     Added code to avoid this.
1767 
1768 1999-11-11    Mk4tcl exit handling
1769 
1770     Simplified Mk4tcl exit handling, fixes "interp delete" crash.  Added
1771     new mk5fixed.4 test to catch this case.
1772 
1773 1999-11-10    Mk4tcl shared and multi-threaded access
1774 
1775     Made a first experimental version of Mk4tcl (1.2.1, not announced)
1776     which allows sharing a database between interpreters and threads.
1777 
1778 1999-11-09    STL, MkWrap, compare caching
1779 
1780     Tweaked the makefile to support STL builds (also adjusted README).
1781 
1782     Fixed bug in MkWrap, calling storage.description() without args.
1783 
1784     Yet more fixes in comparisons, this is all one problem, caused by
1785     changes in caching for ints, floats, and doubles.  Added B24 test.
1786     These (last?) problems occured in custom / compound views.
1787 
1788 1999-11-08  MK 1.9f     Fixed sort comparisons
1789 
1790     There was a cache problem with comparisons of int / float / double
1791     sorts.  Fixed, also added new B23 regression test to check for it.
1792 
1793 1999-11-07    Little nasty details
1794 
1795     Tweaked some make/project files.  All regress tests and Tcl tests
1796     now reported to really work on Solaris, Linux, Windows, and Mac.
1797     Regression tests required more memory on Mac to get past L03 case.
1798 
1799 1999-11-06  MK 1.9e     Big oops: Mk4tcl and MkWrap were broken!
1800 
1801     Fixed a c4_Strategy / c4_FileStrategy mixup in Mk4tcl and MkWrap.
1802 
1803 1999-11-05    Simplify c4_Storage
1804 
1805     Moved state out of c4_Storage and into c4_Persist, to prepare for
1806     multi-thread wrappers.  Made a new, simpler design to achieve that.
1807 
1808 1999-11-04  MK 1.9d     Factor out stdio dependencies
1809 
1810     Moved all stdio dependencies out of core into new "fileio.cpp" src.
1811     The mk4.h header no longer includes <stdio.h>, added new "mk4io.h"
1812     header with a c4_FileStrategy class, derived from c4_Strategy.
1813 
1814     Also factored c4_Stream/c4_FileStream out of the c4_Strategy class.
1815     This alters the API slightly, but makes it 100% portable/embeddable.
1816 
1817     Added "tcl/iohan.tcl", a simple wrapper for generic storage access:
1818     locally, on a FTP server, in a local MK datafile, or using a remote
1819     Tequila server (see http://www.equi4.com/tclkit/tequila.html).
1820 
1821 1999-11-03    Improved detach/restructure handling
1822 
1823     Changed detach to drop all persistent formathandlers, but leave the
1824     number of rows intact.  It will be much faster to destroy columns
1825     than to delete (and propagate) rows.  The result is that a pointer
1826     to a view of which the underlying storage object goes away will end
1827     up with the same number of rows as before, but no properties at all.
1828 
1829     Fixed a problem which would have occured when properties are being
1830     "restructured away" and then committed.  The solution is to check
1831     for this and delete all such properties at commit time.
1832 
1833     Moved Buffer() out of c4_HandlerSeq and c4_CustomSeq, and made the
1834     new version in c4_Sequence allocate the c4_Bytes object lazily.
1835     Faster, and decreases sequence object size (for lots of subviews).
1836 
1837     Mk4tcl, mk::layout now returns the proper layout even if the views
1838     are empty.  Solved by adding extra arg to c4_Storage::Description,
1839     to return structure of a single top-level view.  Fixes "mk8basic.1",
1840     and the returned string now has one bogus list layer stripped off.
1841 
1842     MkWrap also adjusted with optional arg for storage.description().
1843 
1844 1999-11-02    New Wrap code in MkWrap
1845 
1846     MkWrap, added new Wrap(seq,props,byPos) member, a c4_CustomViewer
1847     which wraps any Python sequence as MK view (for use in joins, etc).
1848 
1849 1999-11-01  MK 1.9c     Mk4tcl changes
1850 
1851     Mk4tcl, several changes: added "-size" option to mk::get to return
1852     the size of prop value without fetching it (see new basic.9 test).
1853     Added "-globnc" for case-insensitive globbing (for regexp, this is
1854     available through the new (?i) metasytnax of Tcl 8.2 (see basic.10).
1855 
1856 1999-10-31  MK 1.9b     Solved shared lib unload with Tcl 8.2
1857 
1858     Changed property symbol table setup to avoid static initializers, to
1859     work around a problem with shared library cleanup from Tcl 8.2.
1860     Added new c4_Property::CleanupInternalData call to clean up 100%
1861     (this code need not usually be called, only if memory is tracked).
1862     This fixes the crash-on-exit bug in Mk4tcl (Linux and Solaris).
1863 
1864 1999-10-29    Make support for MkWrap and Mk4tcl
1865 
1866     Both MSVC and MWCW now also build Mk4tcl and MkWrap extensions.  The
1867     MWCW project compiles for Win and Mac *on* either Win or Mac.
1868     Makefile extended to build Mk4tcl and MkWrap, added dist target.
1869     Updated to latest Perceps 3.5 beta, started generating docs again.
1870 
1871 1999-10-27  MK 1.9a     New build / directory structure
1872 
1873     Completely reworked the directory structure to simplify all builds.
1874     Created new "builds/" area for all intermediate and output files.
1875     New MSVC 6.0 project structure created in "win/msvc60/".
1876 
1877     Moved Mk4tcl to the "tcl/" top-level directory, and MkWrap to the
1878     "python/" dir.  The MkWrap code has been removed from the project.
1879 
1880     Removed c4_View::Match and the regular expression package, since it
1881     can just as efficiently be done with a wrapper around MK, now that
1882     string results no longer allocate a temporary copy.
1883 
1884     Started writing a Tcl-based test suite for use with Mk4tcl.
1885 
1886 MAJOR CHANGE SINCE 1.8.6
1887 
1888     Merge handler.cpp and format.cpp classes to get rid of special-cased
1889     in-memory version of handlers.  This has major effects on how data
1890     is kept for unattached views (they still exist, but no longer
1891     special).  The code is leaner and meaner, it passes all regression
1892     tests.
1893 
1894 ALSO LISTED IN THE RELEASE HISTORY
1895 
1896     Added c4_MemoRef::Access and c4_Memoref::Modify for partial access
1897     to memo fields.  Avoids copying and allows inserts/deletes anywhere.
1898     MkWrap and Mk4tcl have both been extended to allow using Memo fields
1899     for simulated file IO (mk::channel for Tcl, MkMemoIO.py for Python).
1900 
1901     Added c4_Reference::GetSize to determine the size of a value without
1902     accessing it.  For ints, returns negated bit width if 1/2/4 bits.
1903 
1904     Added experimental c4_View::RelocateRows to move rows from one view
1905     to another (both must be in same storage, with the same structure).
1906     Moves do not involve any data copying w.r.t. subviews and memo's.
1907 
1908 The old release history is at http://www.equi4.com/metakit/history.html
1909 
1910 # vim: tw=72