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