diff options
Diffstat (limited to 'akregator/src/mk4storage/metakit/CHANGES')
-rw-r--r-- | akregator/src/mk4storage/metakit/CHANGES | 1690 |
1 files changed, 1690 insertions, 0 deletions
diff --git a/akregator/src/mk4storage/metakit/CHANGES b/akregator/src/mk4storage/metakit/CHANGES new file mode 100644 index 000000000..160c4bad9 --- /dev/null +++ b/akregator/src/mk4storage/metakit/CHANGES @@ -0,0 +1,1690 @@ +2004-01-26 ############################################ MK 2.4.9.3 + + Maintenance release, consolidates past 9 months of changes/tweaks. + + Fixed test for "__name__" in python/metakit.py to run a quick test. + +2004-01-22 Fixed refcount problem with temp rows in Mk4tcl + + This was a long-standing bug: "mk::row create" did not work right + because the tracking of temporary rows was completely messed up. + Added test case for Tcl (mk6.8), fixes FB14, BTS#78, and BTS#29. + +2004-01-21 Documentation updates + + Updated copyright notices to 2004, and udated to Doxygen 1.3.5 for + a new set of C++ documentation. In anticipation of next release. + +2004-01-20 Don't trip over duplicate property names + + Added code in c4_Field constructor to avoid crashing when there is a + duplicate property name in the format description string. Duplicate + names are now ignored (there is no good way to report errors at this + point). Avoids an even bigger problem: conflicting property types. + + Added test s49 to detect this case (FB20, reported by Brian Kelley). + +2004-01-18 Fixed rare but very serious subview resizing bug + + Fixed rare but serious file damaging bug, when resizing a comitted + subview to empty, committing, and then resizing back to containing + data. Added new s48 test to force this bug to the surface. + + Fortunately this usage pattern *never* happens in blocked views! + Fixes are at the end of c4_FormatV::Insert and c4_FormatV::Remove. + +2004-01-16 Gracefully deal with bad property type specifiers + + When GetAs is a called with a bad description, such as for example + "myview[name:A]", the release code would crash on a null pointer + dereference at some point. Changed so the code now treats any type + it does not know about as "I" (works a bit better than using "S"). + + The debug build still hits an assertion, as before. Added s47 test. + +2004-01-03 Fixed typo in PyView.cpp + + Forgot to fix closing brace after the 2003-12-11 mods. + +2003-12-21 Fixed Mk4too sorting on subview of length 1 + + There was a silly bug when sorting on subviews in the new Mk4too + interface (not in Mk4tcl), which returns a view, instead of a list + of integers. In the case of 1 row, optimization was done wrongly, + omitting the sort as well as the remapping. Fixed. + + Oomk needs to be patched to work around this (don't sort if n=1). + +2003-12-13 Tweak to avoid two unisgned/signed compiler warnings + + In remap.cpp, compiled in debug mode on Win32 (DWORD vs. t4_i32). + +2003-12-11 Checked in numerous changes to Mk4py by Nicholas Riley + + All changes are local to the python/directory - for details, see + http://www.equi4.com/pipermail/metakit/2003-September/001407.html + With a big thank you to Nicholas for contributing these improvements. + +2003-11-23 Bumped to Python 2.3, doc tweaks, lots of name fixes + + Adjusted makefile to now look for Python 2.3 by default. + Regenerated config files. Fixed obsolete links in the doc files. + + Got rid of tons of Metakit "interCap" cases, should be Metakit. + This affects a huge number of source files and one #define (which + has been defined twice for compatibility: d4_MetakitLibraryVersion). + Use "cvs diff -i" to see real changes, other than case swapping. + +2003-10-28 Get rid of --enable-python, check in c22.txt + + It's not valid, but some files mentioned it. Use --with-python. + Forgot to check in the new c22.txt file added earlier this month. + +2003-10-16 Added note to Tcl docs + + Added a note to doc/tcl.html on how to load a MK datafiles stored in + another one, as needed when using VFS for example. + +2003-10-10 Added c22 test + + Added test to make sure groubpy/select bug is not present in the C++ + core (bts #75 reports the bug found for Mk4tcl/Mk4too). + +2003-10-01 Fixed bugs in Tcl test suite + + The tests in tcl/test/ were incorrectly closing non-test datafiles, + such as the "exe" one open while tclkit runs, and needed when a + slave is created which needs to re-run init.tcl etc from VFS. + +2003-09-30 Python 2.3.1 & cleanup + + Tweaked PWONumber.h and PyRowRef.cpp and MSVC6 project so it can + compile Mk4py for Python 2.3.1 again. Windows binary uploaded. + + Removed the win/msvc60/tests/ directory, it's no longer needed. + +2003-09-20 Autoconf and libtool rebuilds + + In an attempt to stay ahead of version trouble and other nonsense, + the autoconf / configure and libtool files have been regenerated. + Autoconf is at 2.57 and libtoolize is at 1.4.3 on this dev system. + +2003-08-26 Documentation fix + + Fixed install comments for Mk4py, as reported in bts #59. + +2003-07-17 Fixes to Mk4py (Gordon) + + Fix crash when db.description(nm) is called for missing view "nm". + Fix wrap - for the special case of wrapping a list of primitives + (eg, ints, floats, strings) in a single property "view". + +2003-07-11 Fix for Linux not finding .lai file + + Posted for RH 8.0 on MK mailing list by Jeff Web on July 3rd. + +2003-07-01 Fixed "Metakit" (preferred) vs "Metakit" (obsolete) + + Get rid of InterCappedWords. Time to grow up, d00d... + +2003-06-06 Fix to Mk4py for case (in)sensitivity. + + When using a dict (or keyword args), makeRow now gets the + names from the dict's keys and gets the properties by name. + This allows case insensitive matching. Note that using an + instance still requires that the instance attributes have + names that match (case sensitive) with the view. + +2003-05-15 Add distutils setup.py script (Gordon). + + Tested on Linux & Windows (MSVC). + You can now do a plain configure / make (without python) + then cd python; python setup.py build | install + +2003-05-08 Fixed array bound bug when not using mmap-ed files + + There was an incorrect test, when dealing with a new file and + memory mapping is not enabled (which is uncommon, these days). + Thanks to V Demarco for catching and resolving this bug. + +2003-04-28 Sourceforge + + Synced to SF's CVS, see http://sourceforge.net/projects/metakit + +2003-04-25 Autoconf/libtool update + + Did "autoreconf -force" with autoconf 2.5.7 and libtool 1.4.3, as + suggested by Gerfried Fuchs/Ryan Murray. Some Makefile.in tweaks. + +2003-04-22 Fixes to Mk4py (Gordon). + + Make view.append(instance) work again. + Fix recursively adding subview data. + Make properties compare properly. + Initial (incomplete) unittest based test script. + +2003-03-16 ############################################ MK 2.4.9.2 + + Also allow passing pairs to "mk::row append" as a list (Mk4tcl). + +2003-03-10 Fixes for sparc64 configure and AIX strcasecmp + + Both changes contributed by Andreas Kupries. + +2003-03-07 Fix more bugs in blocked view, add 64-bit Sparc support + + The blocked viewer deletion was STILL incorrect. Fixed bad offset + calculations, added several more assertion checks, and added a new + m07 test case which checks for numerous cases of deletion overlap, + i.e. cases where multi-row deletions cross subview boundaries. + + Added __sparc9 #define to mk4.h (thanks again, Andreas K) + +2003-03-05 Fixed two potential races in C++ threaded build + + There was a serious bug in view.cpp, whereby Unix (p)thread locks + were non-functional in release mode (#define NDEBUG). Yikes! + + In addition the logic was flawed (both Unix and Windows), failing to + protect from indexing while sPropNames / sPropCounts were being + resized (i.e. a realloc). Added explicit locking to all affected + paths, and removed the now obsolete count locks (i.e. AddRef). + + Thanks to Murat Berk for chasing this and explaining the problem. + + This bug "only" affects C++ builds. Tcl and Python each have an + extra layer on top which means there can be no races inside MK. + +2003-03-03 ############################################ MK 2.4.9.1 + + Moving to a new 4-level bugfix release number. + +2003-03-02 Fixes to Mk4py (gmcm) + + Modify some recent patches that were Python 2.2 only so they would + still work with 2.1. Add a view.properties() method (returning a + dict of propname -> Property) for cases where a property is masked + by a method name. + +2003-03-01 Reverted changes in Mk4py/scxx, avoid Mk4tcl warning + + One was in SCXX, PWONumber.h - ouch and apologies (jcw). Changed + comparison logic in mk4too.cpp (64-bit ints, new code). + +2003-02-28 Fixed relaxed layout in Mk4tcl, several Mk4py fixes + + Use list operators to convert a Tcl layout to MK format. This used + to crash, Tcl test 6.7 added to verify the fix. Changed test 3.1 to + use a different notation for nested defs (^). + + Added to ViewerAsSeq, to allow v1+v2+v3 (thanks Michael Scharf). + Also fixed several mem leaks - thx again! + +2003-02-27 Added support for HPUX aCC "long long" + + Added #ifdef's to mk4.h to match autoconf HAVE_LONG_LONG settings. + Tweaks to configure.in by Andreas K to better support HP/UX (thx!). + +2003-02-26 Added 64-bit int support to Mk4tcl, fix mingw + + The "L" type was not exposed, though Tcl >= 8.4 has "wide" ints! + Will now support 64-bit ints, if built against a Tcl 8.4+ header, but + still defaults to without for use in Tcl's <= 8.3. + + Fix _strdup #ifdef in univ.cpp when compiled from mingw on win32. + +2003-02-24 Break was missing in switch Mk4py + + Fixed a serious problem, which must have come from editing too + wildly (Mk4py needs a test suite!). + +2003-02-20 Remove a stray include, remove CR's + + Remove "#include <stdio.h>" from remap.cpp, leftover from debugging. + Also removed CR's left behind from editing under Windows (doh!). + +2003-02-18 ############################################## MK 2.4.9 + + This is mostly a bug fix release (some features added to Mk4tcl). + +2003-02-18 Fixed a bug in blocked view deletion, and hash byteorder + + There was an off-by-one error in the deletion of multiple rows + which span more than an entire subview block. Test m06 is ok now. + Also added consistency checks (when compiled in debug mode). + + Fixed a too-strict assertion in mk4tcl.cpp, Item destructor. + + Fixed a byte-order sensitivity in hash views for numeric properties. + +2003-02-17 Configure tweaks for hpux/ia64 + + Re-instated hpux changes by A. Kupries, for ia64, also -lpthread. + +2003-02-14 Bug found in blocked viewer modification + + Added test m06 to catch a problem first detected in the Tcl test + suite (test 5.7) - recoded to C++. This is a show-stopper for the + upcoming 2.4.9 release - fixing it is now a top priority. + +2003-02-14 Some changes to OO interface in Tcl + + The OO "select" cmd now returns a view, not a list of row #'s. + Added "product" and "rename" operators, they were not exposed. + +2003-02-14 Enable stdio buffering + + On platforms where stdio is used, the setbuf(..., 0) calls have been + removed (fileio.cpp). This improves performance, and lets caller set + up whatever buffering they like. + +2003-02-07 Tweaks to restore broken MK ports + + Fixes by A. Kupries to fix MK builds I broke (Itanium/HPUX). + +2003-02-07 Changed code to avoid compiler warning + + In remap.cpp, LookDict(), add return at end to avoid a mistaken + compiler warning (on AIX 5.1). No effect on runtime behavior. + +2003-02-02 Work around optimizer bug in gcc 3.2.1 + + The sign-extension in c4_ColOfInts::Get_16r was not being done right + with -O2 on Linux. This only manifests itself with files having + reversed bytes (e.g. PowerPC/Mac). Changed code to use a local temp + buffer instead. This bug was the reason why some starkits failed to + load when created on Mac and used on Linux. + +2003-01-24 Fixed cleanup order bug in Mk4tcl + + There was a long-standing bug in Mk4tcl, in which cleanup order of + MkPath objects caused them to access their MkWorkspace parent even + though it was already deleted. This may have caused some of the + crash-on-exit bugs in the past. + +2003-01-22 Add missing -lstdc++ + + For unknown reasons, the current make failed to produce shared libs + with libstdc++ linked in - manually added to LDFLAGS again. + +2003-01-19 Tweak to temp object use + + Two changes in handler.cpp to avoid bug in compilers which get the + cleanup logic of temp objects wrong (thx, Dan Gregory). + +2003-01-17 Add synonym for mk4tcl "info" command + + To avoid a name clash, "$view info" can now also be written as + "$view properties" (or an abbreviation of that). + +2003-01-16 Allow access to root view in Mk4tcl + + Access to root view (i.e. the storage object itself) was not + allowed - added a small change to allow this (MkPath::AttachView). + +2003-01-15 Use strdup + + On Unix, use strdup i.s.o own code for _strdup, see univ.cpp. + Perhaps it's time to start reversing the names, and make unix std. + +2003-01-10 Build improvements, Mk4py long and Mac improvements + + Merged changes submitted by Nicholas Riley (thanks!) into CVS: + - changes to build Mk4py on MacOS X (framework/dylib) + - support 'L' fields, handle overflow, throw exceptions + - the beginnings of a test suite for Mk4py (in python/test/) + + Separated PPC and 68K projects (Mac classic), because PPC is now + built with 8.3 (Carbon support), while 68K requires 6.3. The x86 + cross-compile-from-mac projects have been dropped. + +2003-01-09 String compare tweak, Mac Carbon runtime mmap code + + Use strcasecmp on unix, instead of own code (string.cpp). + + Added code based on Paul Snively's contributed patch to recognize + running under OSX, so carbon apps can benefit from mmapped files. + All changes are within fileio.cpp, requires CW8 to build this way. + Added "PPC Carbon" target to cw.mcp, derived from "PPC DLL" one. + +2002-12-23 Tweak for Borland builder 5 & 6 + + Changed #ifdef line 22 in univ.cpp (fix by S. Cusack). + +2002-12-09 Fixed bug in selection view change propagation + + Fixed a bug when a row is inserted in a view on which a selection + depends, when the inserted position is not part of the derived one. + This looks like an oversight in 2.3/2.4 changes, and must have been + in there for quite some time. Added new n14 test to verify this. + +2002-12-02 Fixed bug in MK old-file format conversion + + Fixed bug in on-the-fly conversion of old 1.x/2.0.x format files. + +2002-11-24 Fixed Mk4tcl threaded build + + Release and reclaim mutex lock while calling eval inside loops. + Added "--enable-threads" option to configure script. + +2002-11-22 Configure tweak for HPUX/Itanium + + Removed ia64 check in configure.in, now that libtool has been fixed. + +2002-11-16 Tweaks to compile on Mac + + Small changes to the source code to avoid errors from the MWCW 8.x + compilers. Omit stricmp and strdup with CW version >= 8. + +2002-11-04 Fixed typo in Makefile + + This prevented Mk4py from getting installed (thanks F. Majid). + +2002-11-03 ############################################## MK 2.4.8 + + Reverted non-portable change in Makefile to copy to "Mk4tcl.*". + +2002-10-28 Workaround for bugs on ARM/WinCE and HP/UX, Mk4tcl/WinCE + + Turn off c4_ColofInts::Set_8i optimization when compiling for ARM on + WinCE using EVC3. All regression tests now pass (on ARM & x86emu). + + On HP/UX, enable copying in fileio.cpp, line 265, so a write is not + done directly from a mmap'ed file (this can hang a process, hard). + + Added a "mktcl" subproject to msevc3, to build "Mk4tcl.dll". + +2002-10-27 Added multi-thread support for Unix + + Added changes to support same appartment-threading model on Unix as + on Win32 (pthreads based). This merely adds support to allow safe + use of the current "each datafile in one thread" design on Unix. All + changes in view.cpp (thank you, M. Berk). Define q4_MULTI to enable. + +2002-10-26 Merged WinCE changes + + Merged changes to build MK for WinCE using MS Embedded VC 3.0. + These changes are based on Joseph Tate's modifications (thanks!). + +2002-10-21 Updated autoconf & libtool (on teevie) + + Files in unix/ regenerated with autoconf 2.53a and libtool 1.4.1. + +2002-10-16 Added "dup" subcommand to Mk4tcl OO + + There was no way to duplicate a view in the mk4tcl OO interface. + Needed to properly deal with re-use / ref counts - added "dup". + +2002-10-11 Cast widened in Mk4tcl, support q4_TINY def for Mk4tcl + + Changed cast from int to long, to avoid compiler warning on some + 64-bit machines (mk4tcl.cpp, line 2013). + + Remove float/double code when q4_TINY is defined, also in Mk4tcl. + +2002-10-10 Makefile tweaks + + Removed duplicate flags from CXXFLAGS definition. + +2002-10-09 Fixed blocked/subview bug, tweak for the ARM platform + + Blocked viewers were not doing the right thing when rows had subviews + in them - fixed the logic, and add a new m05 test to verify it all. + + Fixed a signed-char bug which prevented MK from passing all tests on + the ARM, in this case the Compaq iPaq PDA with Linux and gcc 2.95.4. + +2002-10-07 Tweak to prevent gcc compiler bug + + Added intermediate temp var in derived.cpp to prevent gcc -O failure. + +2002-10-04 Config and makefile adjustments + + Adjusted configure.in to use ".sl" for HP-UX, and ".dll" for Cygwin. + + Changed "install -d" to "mkdir -p" (2x) in Makefile.in, since the + former is not supported by all incarnations of install (A Kupries). + + Added @CXXFLAGS@ to the end of "CXXFLAGS =" lines in Makefile.in, + as suggested by Donal K. Fellows. Used for his IRIX(64) builds. + + Added logic to build properly on HP-UX, including a small assembly + file (!) which allows loading C++ shared lib from C, as needed in + Tcl - with thanks to Andreas Kupries for solving and patching this. + +2002-09-25 Build tweaks for Mac OS X + + Applied patches by Daniel Steffen to deal with ".dylib" (thanks!). + + Use -O i.s.o. -O2, which caused test b27 to fail on OS X (gcc 3.1). + +2002-09-09 More 64-bit platforms recognized + + Added #ifdefs for more 64-bit platforms, thanks to Reinhard Max. + +2002-09-08 Make tweaks for HP-UX + + Tweaks to build on HP-UX / 9000 (added __hpux #ifdef in header.h). + +2002-09-03 Fixed Mac OSX build problem + + Compile Mk4tcl lib with stubs only if building the shared lib. + Ignore strip errors (fails with Mk4tcl.so on OSX / dyld libs). + +2002-07-01 Python and Tcl installation improved + + Now installs Python Mk4py.so and metakit.py in the most common dir + location by default, i.e. "/usr/local/lib/python2.2/site-packages". + Locations can be overridden through $pyincludedir and $pylibdir. + + For Tcl, "make install" now constructs a standard package dir, i.e. + "/usr/local/lib/Mk4tcl/" with entries "Mk4tcl.so" and "pkgIndex.tcl". + Locations can be overridden through $tclincludedir and $tcllibdir. + +2002-05-30 ############################################## MK 2.4.7 + + Fix CONST84 logic so source compiles under both Tcl 8.3 and 8.4. + Fix creation of tests/CVS/ so diff in regression tests won't fail. + +2002-05-14 Fixed an adaptive int insert/delete bug + + Another bug in the 2.3/2.4 codebase, related to adaptive integers. + + Symptom: one int entry has incorrect bytes after insert/delete. + + Scenario: ints are 1..8 bits, and an odd number are added/removed, + leaving an odd-sized internal "gap". Then store a 16/32 bit value, + forcing resizing. Once this is done, there will be one value which + cannot be properly read or set because its data is split *across* the + gap (commit is ok and removes the problem). Fix in column.{h,cpp}, + with a new regression test s46 added to make sure things are ok now. + + Let's hope that this is truly the *last* deeply embarrassing bug... + +2002-05-06 ############################################## MK 2.4.6 + + Recent bug fix was critical enough to warrant a new revision. + It is safest to avoid using versions 2.4.2 .. 2.4.5 altogether. + +2002-05-05 Fixed major bug in string/bytes after multiple commits + + Finally found a way to reproduce spurious bugs reported in the latest + revisions. It turns out that one of the optimizations of the past 2 + months (no exact details) caused memo's to be tracked incorrectly in + their free space use. This causes trouble with strings over 10 Kb + (or smaller if there are over 1000 rows). + + The bug is forced by new (frightfully short) test cases s44 + s45. + Fixed by performing a slightly less agressive optimization in the + c4_FormatB::Commit (which is also shared with strings, type 'S'). + + Removed a "--exclude" from diff, which is not portable enough. + +2002-05-01 Added support for Windows CE + + Patches submitted by Joseph Tate (thank you!), with minor tweaks. + +2002-04-29 ############################################## MK 2.4.5 + + Various bug fixes, fixed a number of platform issues. + +2002-04-28 Fix small-int re-use view bug + + A nasty bug was reported by VPI which caused upper bytes to be + truncated from int values. The problem appears when storing ints of + 1..4 bits in a view, then clearing the view (so a gap is placed past + the end of the column), then adding a row with an int of 2 or more + bytes. This uncovered a bug in forgetting to truncate columns with + sub-byte int storage. Now fixed, added regression test s43. + + This bug could also have affected string and byte storage, since + these use int columns to store item sizes. Under very specific + conditions, it may have lead to truncated or even mixed-up values. + +2002-04-27 Fix nested mk4tcl loop bug + + Loops would exit prematurely when nested - due to objc/objv being + overwritten in the inner loop. Affects mk4tcl.cpp and mk4too.cpp. + +2002-04-10 Fix bug introduced in recent blocked viewer optimization + + Murphy was at it again. The bug affected the way row inserts and + deletes were done, and can cause incorrect data to be copied. It is + relatively hard to reproduce (the test dataset was 12 Mb), but the + change explains things fully and is in fact very small. + +2002-04-02 Fix bug in debug code + + In remap.cpp line 531, a debug assertion was moved in the wrong way. + +2002-04-01 Backed out to libtool 1.4d, fix test diff and Tcl const + + Backed out to the more official 1.4d release of libtool (instead of + the CVS version, which is adding "tags" we will not need anyway). + The unix/Makefile.in has been simplified, back to how it used to be. + + Fixed the "diff" call at the end of "make test" so that it no longer + generates extra output if things match and now fails if they do not. + + Added fix to allow compiling mk4tcl.cpp with "pre-constified" Tcl + code, thanks to a tip by Don Porter (see "grep CONST84 mk4tcl.*"). + +2002-03-31 ############################################## MK 2.4.4 + + Various bug fixes and (blocked view) performance enhacements. + +2002-03-28 More blocked optimizations, IRIX tweaks + + Switched Slot() to binary search. This seems to slow down a few + percentage point for smaller views, but with 5 millions rows this is + reported to make a huge difference (from code by Zhang Dehua). + + Added header "bool" fix by Erik Hofman so MK compiles on IRIX (SGI). + +2002-03-27 Added definitions for AIX + + Added six operators defs before c4_Cursor class, to avoid compile + errors on AIX. With apologies to Murat Berk for taking so long... + +2002-03-26 Re-instated the c4_View::RelocateRows operation + + Re-enabled code which supports efficient moves of rows from one view + to another - avoiding copying of subviews. Strings/memos are still + being copied for now. Also moved a slow test out into a new call + "c4_View::IsCompatibleWith", this must be checked to make sure that + RelocateRows can work. Passing incompatible views will still cause + an assertion in debug mode, but must be avoided in release builds. + + This change ought to have a dramatic effect on inserts/deletes for + blocked views with large subviews. Added examples/blockdels.tcl to + thoroughly exercise this new code and all boundary conditions. + +2002-03-22 Fixed a serious bug in serialization code + + When serializing string/bytes columns with large strings using the + c4_Storage::SaveTo function, memo's would sometimes not be written, + leading to a *damaged* datafile (and incorrect free-space tracking). + +2002-03-15 Better configure logic, "mk::view layout" fix + + Many tweaks to configures, makes, and libtool setup. Get rid of the + library version numbers and the special Mk4*.so targets. Instead of + Mk4tcl.so use libmk4tcl.so (likewise Mk4py.so is now libmk4py.so). + + Fixed "mk::view layout", it was broken by the 10-2-2002 change. + +2002-03-13 Extend partial access 'B' usage + + Added code to Access and Modify to simulate partial data access the + hard way when the underlying view does not support it (c4_Bytes + only), i.e. copy via full temp. Added test s41, doing partial access + on a blocked view. + +2002-03-12 Add test for serialized input + + The c4_Storage::LoadFrom() call (mk::file load) can be tricky. After + a commit, the header is adjusted so that reading from the start + works. This is not the case in commit-extend mode, where a load will + read th state as it was before extending - it cannot know there is + more. + + Added test s40 to verify this case. Also reorged a few more files + (tbasics and tstore4 split into 2 each). + + Added test in mk4tl.cpp so LoadFrom failure generates an error + return, instead of being ignored. + +2002-03-10 Tweaked March 8 fix a tad further + + The workaround implemented below wasn't 100% complete. + +2002-03-08 Workaround for file extend on Win + + There seems to be a bug when extending a file on at least NT4 with + NTFS (file server works fine). When extending the file in such a way + that a gap is created to save new data during commit, the file + appears to get rounded up to the next 512-byte boundary. At that + point, the datafile no longer has a valid end marker and is sort of + corrupt. + + Wrote workaround for Win32 builds, see persist.cpp notes names "March + 8, 2002". One way to force this bug is to run "mkhash Dmhs 250000" - + after row 150000, it asserts on bad filesize when built in debug mode + and run on NTFS. + +2002-02-19 Fixed over-aggressive optimization + + Change made on Feb 7 was releasing too many objects in a commit, + causing it to detach empty top-level views, even when in use. Fixed, + added s39 to test for this case. + +2002-02-10 Improve Mk4tcl's "mk::view layout" + + Avoid crash when asking for the layout of a non-existent view. Now + returns an error instead. + +2002-02-07 Fast commit with many empty subviews + + Avoid creating subviews when committing, if these are empty anyway. + Added new s38 test for this case. + +2002-02-02 Small optimizations + + Changed a few c4_Property instances to const& references to avoid + copying (2 in view.cpp, 2 in custom.cpp). + +2002-02-01 ############################################## MK 2.4.3 + + Bug-fix release, mostly. + + Python include path now upgraded to python2.2 (was 2.1). + +2002-01-31 Cross-platform serialization, Tcl + + There was a bug with serializing a datafile (SaveTo) when it was + created on a platform with reverse endian-ness. Fixed so serialized + data also flags reversed byte order. + + Tweaks to fix const changes in the latest Tcl cvs branch. Fixed a + recently-introduced UTF8 path bug in mk4tcl.cpp. + +2001-12-21 Optimized GetAs + + Now that GetAs is used so much more, optimize the common case where a + description does not require restructuring. Can lead to order-of + magnitude speed improvement in cases where a storage contains many + views. + +2001-12-20 Fixed bug in Locate, comparison issue + + Testing for the Mk4py changes uncovered a serious bug in + c4_View::Locate, causing it to sometimes return zero, even if there + are matching rows (thanks, Gordon). + + But a very fundamental weakness also showed up, being that row + comparisons (and that includes the C++ operators) have the confusing + property of not being symmetric in all cases. The problem occurs + when left- and right-hand sides do not contain the same (number of) + properties. In that case, the *left-hand* row participating in the + comparison determines which properties take part in a comparison. + + In the case of Locate, this caused improper comparisons. And it is + very easy to get bitten by this, such as here: c4_RowRef key = ...; + int n = view.Search(key); bool match = n >= 0 && view[n] == key; The + above code is *wrong*. The last line needs to be: bool match = n >= + 0 && key == view[n]; + + This is very clearly a design mistake. Comparisons should have been + *either* implemented *or* named differently. + + A new "m04" test has been added to the regression suite. + +2001-12-19 Changes to mk4py by Gordon McMillan + + Several changes and cleanups. Mk4py now has logic to track different + view categories, e.g. to make sure a R/O view is not being written + to. This should greatly reduce the number of silently ignored + incorrect calls, as well as crashes, and will produce appropriate + error messages instead. + +2001-12-18 Cleanup + + Cleaned up source comments and got rid of yet more warnings. + +2001-12-14 Fixed yet another case of crash-on-exit + + The new Unmapped() code of 2.4.2 forgot one case of cleaning up, + which has now been fixed (in c4_FormatB::Commit). + +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 + + Minor kitInit.c change allows wrapping apps as a "custom-extended" + version of Tclkit. Enable threaded Tcl build on Unix. + + This release consolidates the most recent fixes and code tweaks. + +2001-09-27 Fix temp storage open in Mk4tcl + + A recent change made it impossible to open temporary storages from + Tcl ("mk::file open db") - <blush> - now fixed again. + +2001-09-19 Bug fixes + + Fixed a problem during commit, when memo's are modified, causing them + to be stored inline again. This caused a late reference to mapped + memory - leading to intermittent crashes on commit. + + Changes/fixes in mk4tcl.cpp, to prevent a problem when a datafile is + re-opened again under the same name later on. Old references could + in some cases end up stale - leading to crashes much later. + +2001-09-05 Bug fixes + + Hashing bug fixed: failed to terminate when looking for a missing key + after a hash collision. The fill count was not being tracked + properly to enforce that there is always at least one unused slot. + + Fixed bug when setting a string from a higher row: the data gets + trashed, because too little copying was done while creating a gap. + This bug may have led to some other cases of "damaged" datafiles. + Solved by copying input data in c4_FormatB::SetOne(). + + Fixed long-standing bug with commit-after-load, by now doing a full + view/subview copy. This is inefficient, but it avoids all sorts of + mapping/strategy problems. This also fixes test s33 (at last!). + + Added regression tests b27, c21, m01, and s36 to check above fixes. + +2001-06-29 ############################################## MK 2.4.0 + + More changes to the Mk4py interface + + - allow setting a row to a value if the row has a single property + - there is an unexplained crash when setting slices with wrong type + +2001-06-22 Changes to the Mk4py interface + + Modifications and fixes gratefully accepted from John Barnard: + - c4_LongProp support ('L' datatype) + - row.__attrs__ returns the list of all properties + - row.__view__ returns the container view of the row + - row.__index__ returns current position in view + - view.setsize(n) added, extends/truncates number of rows + - generalized makerow to allow any sequence, not just lists + + Changed PyRowRef to inc/dec the reference it has to the underlying + view. Should prevent dangling pointer problems, such as deleting a + storage while rows are still in use. This adds a little overhead. + + Fixed a PyErr_Clear issue when accessing non-existent properties. + +2001-06-12 Close DB filedesc on exec + + Added an fcntl call to fileio.cpp, so that on Unix database file + decriptors are closed on exec (relevant when doing "exec ... &"). + +2001-05-30 Fixed mem-leak in Mk4tcl + + A long-standing bug, in TclSelector::ExactKeyProps. + +2001-05-28 Security fix in Tclkit + + See end of the tcl/kit/README file for deatils. + +2001-03-30 Fixed long-standing commit bug + + There was an intermittent bug in c4_Persist::Commit, when properties + were "restructured away" (dropped). The bug was hard to track down, + because it depended on what address ranges the O/S assigned to + mem-maps. Might also fix other spurious commit/exit crashes. + +2001-03-29 ############################################## MK 2.3.4 + + The "last" release candidate + + Now checked into its *new* CVS home at equi4.com. Mailings list(s) + have also been moved to this site. + +2001-03-28 Fix Win build, broken on Mar 27 + + Dropped kBufMax from mk4.h, it caused compiler errors in MSVC6 - + switched to "sizeof" in a couple of places. This error was + introduced by the double-fix of 3/27. + +2001-03-28 Allow builds of Tclkit with Sun CC + + Integrated a few changes provided by D.J. Hagberg. Note: the + M-solaris.sh and M-dyn.sh scripts need to be manually edited when + choosing between CC and gcc. + +2001-03-27 Double-alignment bug on Solaris + + Two changes (c4_Bytes in mk4.h and src/column.h) to fix an alignment + problem for 8-byte doubles on Solaris. This caused tests b17, b23, + b24, s22, and s28 to fail. + +2001-03-26 Fixed cross-platform commit bug + + There was a nasty bug in the 2.3.x code, which wrote incorrect field + sizes when committing to a datafile with a different byte order + (i.e. created on a machine using different endian-ness from the one + doing commit). + +2001-02-14 Removed file events from Tclkit + + Changed kit/rechan.cpp to not generate file events. This avoids a + bug in Tclkit whereby an open file can generate a continuous stream + of file events as long as the file is open - the console will seem + to be frozen, though "close $file" does work and fixes it. + +2000-12-13 Added missing c4_LongRef export + + Added a line in mk4dll.h to resolve references to the new + c4_LongProp/c4_LongRef datatype on Windows. + +2000-12-04 Fixed conversion bug + + There was a bug in c4_FormatV::OldDefine, causing MK to crash when + trying to convert an old-format file with empty subviews in it. Bug + introduced on 14 Nov. + +2000-12-02 Fixes in Tclkit code + + Fixed a Tcl-level bug causing memory leaks for all compressed files + stored with MK opened for reading. + + Disabled event sources (mk4tcl.cpp and rechan.cpp) to avoid a GUI + freeze-up while a fake file is open. + +2000-11-16 Simplified c4_Storage + + Made some changes so that a c4_Storage no longer has a separate + c4_Persist* copy. As a result, a storage can now be reconstructed + from any root-level view. This generalizes views, and prepares for + a merge. + +2000-11-14 Fixed mem leak in conversion code + + The conversion code from pre 2.3 files had a memory leak in + c4_FormatV::OldDefine, causing f06 to leak, as well as several + subsequent erroneous leak reports. Changed a few "new" to "d4_new" + calls along the way. + + Remove FlipBytes members, they are no longer needed. + +2000-11-08 Tclkit now in the distribution + + The "Tclkit" project has been merged into Metakit. Details and + updated build info at "tcl/kit/README". The SourceForge CVS + repository is up to date again. + + Mk4py: improved number conversion and error handling. + +2000-11-03 ############################################## MK 2.3.3 + + First final release candidate + + Yes, there will probably be a second one as well... + +2000-10-31 Improved error handling + + More logic added to catch errors in flush and streams. This affects + the C++ core as well as Mk4py and Mk4tcl. API of c4_Stream::Write + changed to return success flag. + +2000-10-30 Added autocommit call to Mk4tcl + + To better support VFS, Mk4tcl now has a new command "mk::file + autocommit <db>" to force commit on close. + +2000-10-26 Changes to compile with Borland C++ + + Minor tweaks to compile with Borland C++ Builder 4.0, which does not + support "long long". A new Kitviewer has been built (new code to + replace c4_View::Describe). + +2000-10-03 Fixes for Alpha Unix + + Moved _item in column.h up to fix alignment sensitivity. Config.h + did not get SIZE_LONG right on Alpha Unix (0?). + +2000-09-27 Contributed fixes and Python 2.0b2 + + Adjusted makefile to build with Python 2.0b2 release. + + Source code tweaks to avoid DEC CXX 5.7 compiler errors. Add + no-inherit flags for Win32 to not leak file handles. + +2000-08-27 Allow derived row deletes in Mk4py + + Added code to PyView.cpp to handle deletes (and slice deletes) in + derived views, see "examples/derived.py". + +2000-07-30 Major auto-convert 1.8.6 file bug + + Bug in on-the-fly conversion of bytes properties ('B') in pre-2.0 + datafiles (i.e. 1.8.6 and earlier) resolved. + + Unfortunately, this bug can not be 100% unambiguously fixed. The + new code *will* properly detect most cases, and convert both 1.8.6 + and 2.0 datafiles on the fly, but especially for views with only a + few rows and at most a few bytes of data per row - the conversion + *might* fail. + + In this case, MK will have to be compiled with a define to force it + to either assume all old datafiles are 1.8.6 (-Dq4_OLD_IS_PRE_V2), + or to assume that they are always 2.0 (-Dq4_OLD_IS_ALWAYS_V2). If + you are currently using MK 1.8.6, then you should *skip* the update + to 2.01, and consider updating to 2.3.x. This way you never have + any 2.0 files around, and can force all your code to handle 1.8.6 + files properly (by using "-Dq4_OLD_IS_PRE_V2"). + + See src/format.cpp, c4_FormatB::OldDefine for details. + + This bug *only* applies to bytes properties in pre-2.0 data files. + Conversion of 2.0x files is unaffected. + +2000-07-25 Fixed new self-referential views + + The new recursive / self-referential view definition style has been + fixed, e.g. "view[data:S,self[^]]" will now let you store a tree of + arbitrary depth, with each 'self' subview having data and self + properties. See the demo in "examples/selfref.py" to see how this + all works. + +2000-07-22 Fixed bug in double restructuring + + Solved a very long-standing bug in restructuring, which caused + incorrect (non-zero, small) default values when a c4_DoubleProp was + added to a view which already had rows. + +2000-07-18 Added remapwith and pair to Mk4py + + Exposed C++'s c4_View::RemapWith as v1.remapwith(v2), and + c4_View::Pair as v1.pair(v2) in the Mk4py Python binding. Added + pair.py, remap.py, and wrap.py in "examples/" dir. + +2000-07-12 Added metakit.py wrapper + + Added "metakit.py" script to wrap Mk4py, including a new + metakit.dump() to pretty-print views. More utility code will be + added over time. The preferred way to use Metakit from Python is + now "import metakit". + +2000-07-06 Conversion fix, warning cleanup + + Fixed on-the fly conversion of old datafiles. The free space was + not managed properly - changed to never touch any data inside the + file during conversion. + + Some source code change to get the compile through gcc flags + "-fguiding-decls -Wall -pedantic -Wno-unused". The only remaining + complaint is about using "long long". + +2000-07-04 MkSQL subtree, "indexed" mapped viewer + + Added the sql and mksql subtrees to the distribution, with Gordon + McMillan's MkSQL engine, written in Python. The "isql.py" script is + a simple interactive shell around it. + + Started work on a new viewer which maintains a persistent index (as + a one-int-prop permutation), see src/remap.cpp. + +2000-07-03 Mk4tcl fixes + + Fixed view rename problem and "delete end" (Matt Newman). Adjusted + the tests in tcl/test/mk5object.tcl accordingly. + +2000-06-30 Tequila fixes + + Close fix and failure handler (Steve Landers). + +2000-06-29 ############################################## MK 2.3.2 + + First beta release + + The new release is 99% feature-complete. What remains is to further + document C++/Python/Tcl use and to fix bugs. + + Python sample code in "python/aside.py" and "python/find.py". Tcl + samples in "tcl/test/mk5object.tcl" and "tcl/mapped.tcl". + +2000-06-28 Hash/blocked/ordered: changes and fixes + + Changed hash insertion to insert at specified position. This makes + it possible to use hashes "under" ordered views. For best + performance, insert rows at end of hash views. + +2000-06-26 Documentation, example, Mk4tcl OO fixes + + Moved C++ member documentation out of "mk4.h" header. Added + examples/ directory, with a find.py timing example. Fixed bugs in + new Mk4tcl: "$vw find" and "$vw delete end". Added tests for new + Mk4tcl OO interface: ":mk5object.test". + +2000-06-16 Improved modifiable custom viewers + + The Pair and Slice viewers now support set/insert/remove, while + RemapWith/Concat/Rename support setting values. + +2000-06-15 Many changes to the Tcl code, hashing + + Contributed by Matt Newman, it adds support for most custom viewers, + including the new hash etc. Added a fast find. Caveat: most old + custom viewers are still not modifiable. + + Hash calculation improved, far less collisions than before. + + Blocked viewer seems to work. Ordered on top is sub-optimal. + +2000-06-12 GetUpperLimit, Blocked, Ordered, mk4too + + Removed c4_View::GetUpperLimit (it's equivalent to GetSize-1 and was + not being used anywhere). + + Start implementing c4_BlockedViewer, a simple balanced/blocked + nested data structure. Also started on a c4_OrderedViewer, which + keeps the underlying view sorted during changes. These two can be + combined to implement an efficient 2-level btree. + + Adopted code by Matt Newman for oo-cmd's for Mk4tcl views. First + trials work, started to extend with new custom viewers. + +2000-06-09 Change case of a few Mk4py members + + Changed all top-level members in the Python interface to lower case: + storage, property, view, wrap (will break existing code). + + Fix bounds check in Mk4tcl.cpp for commit/rollback (new code). + + Whoops, forgot to add new src/remap.{h,cpp} to the cvs tree. + +2000-06-08 Implemented hash lookup + + Added a new virtual c4_Sequence::RestrictSearch, which lets a view + take over searching (used by c4_View::Find). The result is that the + new hash viewer gives a huge speedup for finds. Find requests which + require linear scanning are unaffected. + +2000-06-07 Documentation extraction based on Doxygen + + The automatically generated output from Doxygen is working out well + and looking pretty, added "src/doxy.h" with more comments. + +2000-06-05 Started hash and btree custom viewers + + The hash implementation is nearly done, also usable from Python. + Btrees are being implemented as fixed 2-level for now. + +2000-06-01 Fixes + + Fixed crash when opening missing file r/o new in 2.3.1 alpha. Fixed + incorrect on-the-fly-conversion of 2.0 format subviews. Added + "storage.aside(storage)" to the Python interface. + +2000-05-30 Fixed commit-aside + + The new commit-aside code was botched by recent changes. Fixed + SetAside to pick up new root seq, changed by implicit rollback. + Note that a commit-aside is not finished until you *also* commit the + secondary file containing all newly generated changes. + + Fixed bug in c4_BytesRef::Access, introduced in 2.3.1 alpha. + +2000-05-29 Added new 64-bit long datatype + + Added support for 64-bit longs (type 'L'), and c4_LongProp, etc. + This type is not autosizing, it always uses 8 bytes per entry. Uses + "long long" or "__int64", else defines struct with 2 longs. This is + not yet correct for platforms which have no 64b ints. No regression + tests or Python/Tcl interfaces yet. + +2000-05-28 Better file mark scanning + + Added c4_Strategy::EndOfData, to determine the logical end of a + Metakit datafile. This call can be used to check whether a file + contains any data, and whether a commit-extend has been performed. + Old-style scripted documents (with preamble) can now be opened. + Changed strategy class, DataSeek has been merged with read/write. + Removed c4_LoadContext, LoadIt member moved to c4_Persist. + +2000-05-27 Tweaked configuration define's + + Make the release build the default (no assertions, use inlines). + Enable booleans for gnuc by default (it's pretty standard by now). + Added extra include path to better find Python's includes. + +2000-05-26 Fixed Tcl dependency + + Changed configure script to no longer look for Tcl if the + "--with-tcl=..." parameter is not specified. + +2000-05-25 ############################################## MK 2.3.1 + + First alpha release + + Officially, this is "Metakit 2.3.1 alpha" (ignore "2.3.0" in mk4.h). + All alpha's are 2.3.1 (beta's will be 2.3.2, finals start at 2.3.5). + Builds on Linux/Mac/Win appear ok - as do Mk4py, Mk4tcl, and Tclkit. + +2000-05-06 Massive changes to the core + + To summarize the main issues: management info is now stored in such + a way that it need not be read in right away - file open is now + instant. The S(tring) datatype is now stored as B, making it far + more scalable (API/use is unchanged). Storage objects now derived + from views, both can be initialized from a stream (data will be kept + in a buffer, beware of potentially large memory use). + + Several file format changes are "for future expansion". + +2000-05-05 Fixed builds without Tcl + + In 2.0.1, the make would fail if there was no Tcl to build with, or + not an appropriate release. Changed Makefile to report and skip Tcl + builds in that case. + +2000-04-06 Fixed a nasty restructure/mmap bug + + When a property is deleted by a restructure, then committed, then + later committed again, a problem can cause MK to crash. It has only + been detected in debug builds, but the problem turns out to be a + fundamental one (only happens with memory-mapped files, if the file + is resized). Fix in next rel (c4_HandlerSeq::DetachFromStorage). + +2000-04-02 Memo properties are no longer needed + + The M datatype is gone from the public API (and now illegal). + Everything binary should now be stored in B(ytes) properties, which + then adaptively decide which internal format to use, based on a + simple heuristic (which will be refined later). Existing datafiles + will automatically convert from M to B. The partial Access and + Modify calls now also work on B items. + +2000-03-30 Minor change in c4_Strategy + + Dropped the _keepAfterCommit flag in c4_Strategy, it probably has + never been used and it interferes with new features. + +2000-03-27 Change in API for creating storages + + It is no longer possible to create a storage and define its + structure with a single call. Instead, open a storage in r/w mode + (i.e. "1") and then call the (now public) SetStructure member to + define the structure of all views. This change is necessary to + prepare for the upcoming "commit-aside" logic. + +2000-03-23 File format changes (in progress) + + The new file format has an incompatible header, so old code will not + recognize new datafiles. Major changes are: added a file tail + marker, the serialized format is now a very good way to compress + datafiles, since it can be efficiently opened in on-demand/mmap'ed + mode. The new format supports several planned features. Code to + convert existing files on-the-fly will be added before this change + is released. + +2000-03-19 Added c4_Strategy::FileSize + + The Strategy::FileSize call is used for a file format change. + +2000-03-18 Added c4_View::Locate + + Locate returns the number of matching rows, and optionally the + position of the first one, using binary search. Like the + c4_View::Search function, it requires the view to be sorted. + +2000-03-17 ############################################## MK 2.01 + + Maintenance release, it's solid + + Updated MK version number to 2.01, this maintenance release + represents a very stable version. + + Small change to b07 test to avoid evaluation order problems. + + Added unix/metakit.spec file for RPM, thanks to Sean Summers. + +2000-03-16 Drop Store, fix deep copy, drop segments + + c4_Storage::Store never worked properly under all conditions. It's + been deprecated for some time and has now been removed. Made a + handful of changes to test- and demo code to drop it. + + Duplicating a view with deep copy never worked, because it used the + buggy Store call as well. Changed to use recursion. + + Dropped support for segmented tree-walk storage, which hasn't been + used since 1.5 (use a commit with 2.0 to convert files). This is + necessary to prepare for some file format changes. + +2000-03-15 Modifiable custom viewers, other tweaks + + A start has been made with making custom viewers updatable. The new + methods are Set, InsertAt, RemoveAt, and Move, but the number of + viewers which implement this is still limited. Mk4py has been + adjusted to allow "set" on wrapped views. + + Removed c4_Strategy::DataLoad, it was only used in one place. Small + optimization of the 2 calls to c4_Streamer::NextByte. Get rid of / + disallow read calls on memory mapped files. + +2000-03-14 Makefile tweaks, non-commits smarter + + Changed from --enable-tcl to --with-tcl=DIR, because the old + approach only worked with Tcl installed in a standard place. + + Commits of a R/O file now fail. Also, if no changes have been made, + a commit will no longer write anything to file. + +2000-03-13 Several new commands added to Mk4py + + Several changes were submitted by Gordon McMillan, which add better + support for his upcoming SQL engine. + +2000-03-12 Allow embedding MK datafile at end of EXE + + Mk4tcl was changed to look for an optional trailer for quick access + to the start offset. This makes it possible to append datafiles to + executables, even if they are larger than 4 Kb. + +2000-02-29 Fixed rare bug with lots of memo fields + + There was a bug in free space management (persist.cpp), which can + only occur when exactly 7500 free space gaps are present, and a + commit crosses the threshold. There was also a small mistake in + that same code causing a bit of free space waste. + +2000-02-24 Added proxy support to Tequila + + Tequila can now be used as basic client/server setup for Tcl + scripts. See tcl/tequila/README for details and an example. + +2000-02-04 Fixed mk::views (Mk4tcl) + + The mk::views command failed to list the first view in the file + (this bug was introduced by changes in MK 1.99). + +2000-01-02 Adjusted y2k + + Copyright and license dates adjusted. + +1999-12-26 More Mk4py changes + + Added sortrev, and fixed "select(low,high)". Docs updated. + +1999-12-23 New view operators in Mk4py + + Added rename, project, groupby, and counts operators to Mk4py. + These were already part of the C++ core. + +1999-12-22 Avoid GetId inline warning + + Reordered GetId in "mk4.inl" to avoid (harmless) inline warning. + +1999-12-21 Checked-in Catfish and Kitviewer sources + + Added win/catfish and win/kitviewer areas. Catfish was built with + MSVC 1.52, so the win/msvc152 area has also been added. + + Kitviewer requires Borland C++ Builder 4.0 to build (using VCL), it + has been adjusted to now also recognize scripted documents. + +1999-12-20 Bug fix in set-after-get situations + + A bug has surfaced when setting string/byte/memo values which span a + 4 Kb block boundary. The bug can only happen if data is first + fetched and subsequently changed. The affected code is in + src/format.cpp (3x). Added Tcl test 5.5 to catch this. + +1999-12-19 Mac tweaks + + Changes to make the Mac versions build from the CVS repository. The + Mac can also cross-compile Windows libraries using MWCW 5. + +1999-12-17 Add the Tequila example + + Added the Tequila global Tcl array data server, see tcl/tequila/. + +1999-12-15 MK 2.0 Official Open Source release + + Removed a bad assertion from FormatX::Compare. + + Several new services set up on the excellent SourceForge.com site. + +1999-12-14 Documentation added + + The C++ API documentation has been added to the distribution, as + well as a document describing the file format details of Metakit. + +1999-12-13 Bug fix affecting c4_View::Description + + There was a problem with c4_ViewScanner::Describe, due to a change + from c4_String to (const char*). Now c4_View::Store works again. + +1999-12-12 MK 1.99 New release, as open source software + + The major change is that Metakit has been released as open source + software, based on the liberal X/MIT-style license. Commercial + support remains unchanged for all recent commercial customers, and + for those who purchase the Enterprise License. The Universal Source + license has been terminated, because full source code is now freely + downloadable by anyone from the website. + + Sources and documentation files have been adjusted accordingly. + +1999-12-08 MK 1.9h Bool support for gcc/egcs, minor fix + + Clear _field after delete in c4_HandlerSeq::DefineRoot. This + triggered an assertion on Linux, when compiled in debug mode. + + Added pre-processor logic to detect whether gcc supports bools. + + Removed all indentation from #define's, #ifdef's, etc. This was + done after a report that some compilers can get confused by this. + +1999-12-06 Derived view row copy fix + + There was a problem when using SetAt with derived views as source, + due to a remapping problem. Fixed viewx.cpp, added new test b25. + +1999-11-25 MK 1.9g Makefile changes, thread-safe Mk4tcl + + Renamed options to --enable-python and --enable-tcl, both now off by + default, since most people probably don't want to enable both. + + The new "-shared" changes to make Mk4tcl thread-safe have been + folded into the main source code. + +1999-11-22 Channel improvements Mk4tcl + + There was a close conflict in mk::channel, also several changes to + improve mk::channel fileevent handling. + +1999-11-19 Bug fix in Mk4tcl + + There was an array overrun when mk::get was called without fields. + Added code to avoid this. + +1999-11-11 Mk4tcl exit handling + + Simplified Mk4tcl exit handling, fixes "interp delete" crash. Added + new mk5fixed.4 test to catch this case. + +1999-11-10 Mk4tcl shared and multi-threaded access + + Made a first experimental version of Mk4tcl (1.2.1, not announced) + which allows sharing a database between interpreters and threads. + +1999-11-09 STL, MkWrap, compare caching + + Tweaked the makefile to support STL builds (also adjusted README). + + Fixed bug in MkWrap, calling storage.description() without args. + + Yet more fixes in comparisons, this is all one problem, caused by + changes in caching for ints, floats, and doubles. Added B24 test. + These (last?) problems occurred in custom / compound views. + +1999-11-08 MK 1.9f Fixed sort comparisons + + There was a cache problem with comparisons of int / float / double + sorts. Fixed, also added new B23 regression test to check for it. + +1999-11-07 Little nasty details + + Tweaked some make/project files. All regress tests and Tcl tests + now reported to really work on Solaris, Linux, Windows, and Mac. + Regression tests required more memory on Mac to get past L03 case. + +1999-11-06 MK 1.9e Big oops: Mk4tcl and MkWrap were broken! + + Fixed a c4_Strategy / c4_FileStrategy mixup in Mk4tcl and MkWrap. + +1999-11-05 Simplify c4_Storage + + Moved state out of c4_Storage and into c4_Persist, to prepare for + multi-thread wrappers. Made a new, simpler design to achieve that. + +1999-11-04 MK 1.9d Factor out stdio dependencies + + Moved all stdio dependencies out of core into new "fileio.cpp" src. + The mk4.h header no longer includes <stdio.h>, added new "mk4io.h" + header with a c4_FileStrategy class, derived from c4_Strategy. + + Also factored c4_Stream/c4_FileStream out of the c4_Strategy class. + This alters the API slightly, but makes it 100% portable/embeddable. + + Added "tcl/iohan.tcl", a simple wrapper for generic storage access: + locally, on a FTP server, in a local MK datafile, or using a remote + Tequila server (see http://www.equi4.com/tclkit/tequila.html). + +1999-11-03 Improved detach/restructure handling + + Changed detach to drop all persistent formathandlers, but leave the + number of rows intact. It will be much faster to destroy columns + than to delete (and propagate) rows. The result is that a pointer + to a view of which the underlying storage object goes away will end + up with the same number of rows as before, but no properties at all. + + Fixed a problem which would have occurred when properties are being + "restructured away" and then committed. The solution is to check + for this and delete all such properties at commit time. + + Moved Buffer() out of c4_HandlerSeq and c4_CustomSeq, and made the + new version in c4_Sequence allocate the c4_Bytes object lazily. + Faster, and decreases sequence object size (for lots of subviews). + + Mk4tcl, mk::layout now returns the proper layout even if the views + are empty. Solved by adding extra arg to c4_Storage::Description, + to return structure of a single top-level view. Fixes "mk8basic.1", + and the returned string now has one bogus list layer stripped off. + + MkWrap also adjusted with optional arg for storage.description(). + +1999-11-02 New Wrap code in MkWrap + + MkWrap, added new Wrap(seq,props,byPos) member, a c4_CustomViewer + which wraps any Python sequence as MK view (for use in joins, etc). + +1999-11-01 MK 1.9c Mk4tcl changes + + Mk4tcl, several changes: added "-size" option to mk::get to return + the size of prop value without fetching it (see new basic.9 test). + Added "-globnc" for case-insensitive globbing (for regexp, this is + available through the new (?i) metasytnax of Tcl 8.2 (see basic.10). + +1999-10-31 MK 1.9b Solved shared lib unload with Tcl 8.2 + + Changed property symbol table setup to avoid static initializers, to + work around a problem with shared library cleanup from Tcl 8.2. + Added new c4_Property::CleanupInternalData call to clean up 100% + (this code need not usually be called, only if memory is tracked). + This fixes the crash-on-exit bug in Mk4tcl (Linux and Solaris). + +1999-10-29 Make support for MkWrap and Mk4tcl + + Both MSVC and MWCW now also build Mk4tcl and MkWrap extensions. The + MWCW project compiles for Win and Mac *on* either Win or Mac. + Makefile extended to build Mk4tcl and MkWrap, added dist target. + Updated to latest Perceps 3.5 beta, started generating docs again. + +1999-10-27 MK 1.9a New build / directory structure + + Completely reworked the directory structure to simplify all builds. + Created new "builds/" area for all intermediate and output files. + New MSVC 6.0 project structure created in "win/msvc60/". + + Moved Mk4tcl to the "tcl/" top-level directory, and MkWrap to the + "python/" dir. The MkWrap code has been removed from the project. + + Removed c4_View::Match and the regular expression package, since it + can just as efficiently be done with a wrapper around MK, now that + string results no longer allocate a temporary copy. + + Started writing a Tcl-based test suite for use with Mk4tcl. + +MAJOR CHANGE SINCE 1.8.6 + + Merge handler.cpp and format.cpp classes to get rid of special-cased + in-memory version of handlers. This has major effects on how data + is kept for unattached views (they still exist, but no longer + special). The code is leaner and meaner, it passes all regression + tests. + +ALSO LISTED IN THE RELEASE HISTORY + + Added c4_MemoRef::Access and c4_Memoref::Modify for partial access + to memo fields. Avoids copying and allows inserts/deletes anywhere. + MkWrap and Mk4tcl have both been extended to allow using Memo fields + for simulated file IO (mk::channel for Tcl, MkMemoIO.py for Python). + + Added c4_Reference::GetSize to determine the size of a value without + accessing it. For ints, returns negated bit width if 1/2/4 bits. + + Added experimental c4_View::RelocateRows to move rows from one view + to another (both must be in same storage, with the same structure). + Moves do not involve any data copying w.r.t. subviews and memo's. + +The old release history is at http://www.equi4.com/metakit/history.html + +# vim: tw=72 |