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