-
Notifications
You must be signed in to change notification settings - Fork 41
/
CHANGES
2081 lines (1355 loc) · 82.4 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2011-08-18 Move code to public repository on GitHub
The Subversion repository at svn://svn.equi4.com/metakit is now
obsolete. GitHub has the new official repository for Metakit.
2009-02-10 Create Python install dir if not yet present
As with C++ and Tcl, the installation directory is created if
it did not exist (patch provided by A. Sampson).
2007-06-25 Various Tcl tweaks (recovered from SVN log)
Cleanup/overhaul, adding CONST86, stubs, and Tcl_GetErrorLine
compatibility to allow compiling Mk4tcl for Tcl 8.6*.
2007-06-24 Tcl TEA3 overhaul
Replace configure.in/Makefile.in with new versions, adapted from
Tcl's sampleextension. Now generates config.h and pkgIndex.tcl
from corresponding *.in files.
Comnvert all tcl/test/ entries to new ones in tcl/tests/ to use
the standard tcltest framework. Just 40 tests in all so far.
Update to tcl.m4 3.6, with a patch to fix "make test" on macosx.
2007-06-24 Cleanup obsolete code
Remove Lua binding in lua/ - it was never actually completed.
Remove win/{catfish,kitviewer,msevc3,msvc152} - now unsupported.
Remove mac/, pre-macosx builds are no longer supported.
Removed the MKSQL logic and tcl/mksql.tcl, since it is not used.
2007-06-24 Patch for cygwin
There's a submitted patch (F152) which tries to fix a problem
when compilng MK on cygwin with CXXFLAGS=-mno-cygwin, but it may
not be the best way to fix things. Instead, this change adds the
$(LDFLAGS) parameter in a few places in the Makefile. It was not
used before, and $(SHLIB_FLAGS) still isn't being used - weird.
2007-06-18 Fix threading problems in Mk4tcl
A change is needed to make the thread fix work with mk::loop,
because the _ws pointer could be null in FreeCursorInternalRep.
Fixed by no longer clearing _ws and changing a test for that case.
2007-06-16 ############################################ MK 2.4.9.7
If you're using Tcl in threaded mode, please upgrade - see below.
2007-06-16 Fix threading problems in Mk4tcl
The Mk4tcl binding had two serious bugs, causing potential crashes
and database corruption when used in multi-threaded mode:
1) The Makefile did not set -DTCL_THREADS when configured with
the "--enable-threads" flag, only -Dq4_MULTI, which is the C++
level threading support of Metakit. So all builds were still
running the Mk4tcl wrapper in unprotected mode (!).
2) Tcl's type conversion callbacks did not contain mutex calls to
prevent calls from Tcl into Mk4tcl other than mk::* commands.
This happens during "Tcl_ObjType mkCursorType" type conversions.
Added the proper -DTCL_THREADS flag to Makefile.in, and extra code
to implement recursive mutex protection on top of Tcl's primitives.
This problem does not affect the C++ core (which has been in use in
threaded mode for some time, on many platforms including Windows),
nor the Mk4py binding for Python which uses a global interp lock.
2007-02-12 Continue unmapped, also in debug mode
In the WIN32 version of ResetFileMapping, there were two assertions
which made the code fail in debug builds, even though both cases are
properly handled with if's. Dropped the asserts, so that the logic
is the same as in release builds: when memory mapping fails, simply
continue without memory mapping and fall back to buffering all data.
2006-11-15 ############################################ MK 2.4.9.6
Please upgrade, this consolidates a year with various fixes.
Added some notes to the README about building the Python and
Tcl extensions using various approaches.
Bumped hardwired Python version number to 2.5 in unix/configure.
2006-11-11 More precise file head/tail marker checks
The tests for valid head / tail file markers have been relaxed a
tiny bit, to allow for future file format changes. This has no
effect on current uses of MK, the file format remains the same.
2006-11-11 Reformatted all C++ source files
To get rid of some tab/indent problems accumulated over the last
few years, I've run all C++ sources through a pretty-print app
(SourceFormatX, a shareware Windows app). These sources are all
being checked-in, so the list of affected files is quite large.
No semantic changes whatsoever to MK. All tests pass, as before.
2006-10-31 Fixes for the Python binding
Fix 64-bit compile with Python 2.5 by Ralf Schmitt, see
http://www.equi4.com/pipermail/metakit/2006-October/002236.html
Memory leak fix in PWOMapping.h, by Brian Warner, see
http://www.equi4.com/pipermail/metakit/2006-October/002229.html
Fix 64-bit ptr -> int conversions in {PyRowRef,PyView}.cpp, see
http://systemexit.de/repo/metakit?cs=f8f1ef2f6099
2006-10-31 Fix int overflow in mapped file check
As reported by Max Kaehn, there is a test in column.cpp which is
sensitive to integer overflow when two pointers are > 2 Gb apart.
This may have been an old problem for anyone who uses the default
memory-mapping files enabled. Embarassing that this was not caught
or resolved before, but I was never able to reliably reproduce it.
This is a potentially serious problem, upgrading is recommended.
2006-10-31 Bring this change log up to date from CVStrac timeline
I've decided to not adopt the CVStrac system for this change log,
because having this log inside the source tree is more convenient.
(08-01) persist.cpp: maintain stable-storage space usage on re-open
(05-08) view.cpp: fix resource leak in view.cpp
(01-26) PyStorage.cpp: fix metakit.py pathnames are required to
be of type str & support unicode filenames in storage()
(01-25) mk4tcl.cpp: fix crash in mk::select with -keyword search
(01-24) fileio.cpp: fix compile error in fileio.cpp with mingw
(01-13) configure.in: tweaks to configure.in to use Tcl stubs when
compiling a dynamic Mk4tcl on macosx/darwin
2006-01-12 Don't call _open on WinNT, make commit fail on > 2 Gb
Fixes for the Dec 5 patch to still always support Win98, thx Matt.
Fix ticket #2, return false on commit if files would exceed 2 Gb.
2006-01-12 Started using CVStrac for this project, makefile tweak
CVStrac is a CVS browser, bug tracking system, and more. All files
have gone through a dummy check-in to complete the transition. The
CVS repository is not affected by this change, but this does mean
that CVStrac only really started tracking changes from here on.
If it works out well, this CHANGES file will probably be abandoned
in favor of the "timeline" feature in CVStrac which offers the same
functionality and *much* more (lots of cross-/hyper-links for one).
Tweaked Makefile so "make test" does not complain about CVS dir.
2005-12-05 Fix the broken hpux change of 2005-09-06
It turns out that the 2005-09-06 change, which was rolled back on
2005-10-01, was simply incomplete. Now that it works, it has been
adopted on all platforms because it is more portable and equivalent.
Thx again Matt.
2005-12-05 Better support for UTF-8 file & property names
Patch submitted by Matt Newman. Fixes handling of property names
in a description string to support UTF-8 and %'s in names. Also
fix file name handling (convert UTF-8 to native before open).
2005-11-22 ############################################ MK 2.4.9.5
Main reason for this release is the 11-18 disk-full handling fix.
2005-11-21 Optimization for access via c4_BytesRef::Access
Added a noCopy flag (default remains as before), by A. Stigsen:
When I first looked at c4_BytesRef::Access() I noticed that
FetchBytes had the forceCopy option set. So I tried removing that,
and that gave some improvement. But it still often happened that the
item was in several segments, forcing a copy. So I have added a
noCopy option to Access() to ensure that I do not get any uneeded
memcopies. It gave a huge performance boost in my application, so it
might be useful for others as well.
2005-11-18 Fixed incorrect case of handling disk-full on commit
This is a potentially serious bug (though all data can still be
recovered if dealt with right away). When an I/O error occurs
under specific circumstances in the commit, the resulting file
may be left in an improper state. Full details are desribed in
http://www.equi4.com/pipermail/metakit/2005-November/002144.html
2005-11-16 Ranlib called too early
Fixed call to ranlib when installing Mk4tcl.a - this was copied
incorrectly by my from the 11-11 patches. Thx A. Kupries.
2005-11-15 Version number fixed
Fixed version number mismatch (2.4.9.3, should now be 2.4.9.4).
2005-11-11 Build fixes for Tcl (by Matt Newman)
Added logic to disable mmap calls on some HP-UX versions.
Plus other tweaks for the Tcl build. Mods by Matt Newman.
2005-10-01 The HP-UX fix did not work on macosx.
Made the 2005-09-06 change below conditional on __hpux, so that
builds on Mac OS X don't break, i.e. revert it. Thx D. Steffen.
2005-09-26 Linking with g++ i.s.o. gcc
Fixed SHARED_LD to use G++ instead of gcc. This caused problems
when using the shared library from a gcc-compiled main.
2005-09-06 Tweak Tcl binding to avoid compiler problems
Made some changes to let HP-UX's aCC compile mk4tcl.{h,cpp}
properly (no static inits with function ptrs?). Thx Bob T.
Also got rid of some warnings caused by const-ness mismatches.
2005-09-05 Fix potential Tcl close problem
Bug if a Tcl channel is still open on exit in mk::channel. Fix
thanks to Matt Newman. Also cleaned up some old unused code.
2005-06-10 ############################################ MK 2.4.9.4
Maintenance release, consolidates over a year of changes/tweaks.
2005-06-10 Adjusted Python builds
Changed configure.in to use Python 2.4.x by default (was 2.3).
2005-04-15 Fix typo in Mk4py code
The 2005-01-29 changes had a typo (InsertA i.s.o. InsertAt).
So no one built the CVS version since then? (thx, Ben R.)
2005-03-01 Fix for BTS#112, insert one part of a view in other
Only showed up in debug builds, due to malloc overwriting mem,
this was a dangling pointer. Reported and fixed by A. Stimms.
2005-02-18 Backed out of faulty change on 2004-09-23
The c4_BytesRef::Modify change was not correct. Will need to
be reviewed again, thanks to P. Thoyts for reporting this.
2005-02-14 Minor mods or PocketPC
Changed some #defines to build under eVC4 for PoscketPC.
Updated Tcl build to TEA 3.2 for same reason.
2005-01-31 Updated Tcl build to use TEA 3.1
A number of changes were needed to make the configure & make
setup in the tcl/ area work with Tcl's TEA 3.1 build system.
Install target not quite there due to missing doc/tests dirs.
2005-01-29 Allow inserting view in Mk4py
Fix by B. Kelley to support inserting a view into another.
Properties in the source view will be added to dest as needed.
2005-01-07 Some Mk4py fixes
See BTS#105 for report, PyView.cpp leak fixed.
See BTS#106 for report, submitter unknown (change in PyHead.h).
2004-11-30 Added license terms in separate file
As suggested by Daniel Steffen, see "license.terms".
2004-09-23 Fix c4_BytesRef::Modify bytes insertion
There was a bug preventing bytes from being inserted past the
original size. Reported by A. Stimms, disgnosed by B. Kelley.
The solution was to remove an incorrect minor optimization.
2004-06-03 Fixed missing include
Added stdio include to mk4too.cpp, fixes Tcl 8.5 compile.
2004-05-20 Mac OS X tweak
Fix gcc shared lib builds flags for Mac OS X (thx D. Steffen).
2004-04-27 Optimization of blocked views
New caching of most recent subview block saves a lot of time when
frequently getting and storing values (also in sequential order).
Effects depend on usage pattern of course, expect 10..40% gain.
Many thanks to M Berk for submitting a good working patch, which
was then further tweaked. No change in API / usage / storage.
With this improvement, blocked views are highly recommended for
larger views, i.e. millions of rows (up to address space limit).
This requires C++, Mk4py, or Oomk/Mk4too (not Mk4tcl).
2004-04-26 Python Unicode strings and distutils test suite
Did some work to integrate Nicholas Riley's PyRowRef.cpp changes
into the core. Now supports unicode and rejects strings which
have null bytes in them (use 'B' i.s.o. 'S' type to accept 'em).
Tweaked setup.py a bit to properly run "python setup.py tests".
This required a hack I don't understand, lines 135 and on, marked
"jcw". Without these extra imports, the tests are not found.
Merged tweak to PyView.cpp to barf on view.append with >1 args.
Thanks to Nicholas Riley for lots of improvements.
2004-04-24 Autoconf tweaks
Dropped LINK_SPECIAL_FLAGS="-rpath ${libdir}" from configure.in,
which was causing havoc on Linux: make & make test work again now.
Fixed configure.in + Makefile.in to support static builds again.
The Tcl static target is now Mk4tcl.a i.s.o. libmk4tcl.a (ouch).
For Tcl and Python, the following now works on my Linux box:
../unix/conficure --with-tcl=/usr/include --with-tcl=/usr
More elaborate params are also supported, see "configure --help".
2004-03-30 Fix opening Win32 files with unicode/multibyte chars
The _open call used on Win32 is not Unicode/multi-byte friendly (!).
Added code to try a conversion and use the _wopen variant when the
_open fails. This should work for opening existing files and for
creating new files as long as the file tail does not have special
chars (i.e. only special chars in the directories leading up to it).
Also removed UTF conversions from mk4tcl.cpp (Windows build), which
interfere with this new logic.
Detected and resolved by Jeff Hobbs for use in the Mk4tcl extension.
2004-03-09 Added new build files for Mk4tcl
Added the TEA configure system to tcl/, so that Mk4tcl can now also
be built with that approach. This supercedes the current Mk4tcl
code in unix/Makefile.in, which will probably be dropped soon.
2004-03-08 Added DESTDIR to makefile
Added Stuart Cassoff's patches to support DESTDIR in the Makefile.
2004-03-07 Removed libtool dependency
Thrown out libtool, it is more hassle than it's worth. Adjusted
configure.in and Makefile.in accordingly - these changes are very
preliminary, all help to fix remaining platform issues appreciated!
2004-03-03 Added Microsoft Visual Studio 7.0 project files
Added a new win/msvc70/ directory with all MSVC 7.0 project files.
With thanks to David Van Maren for sharing his work on this.
Also added David McNab's info on how to build Mk4py with older
versions of Python. See python/README-dmn for details.
2004-02-29 Fix in Mk4tcl property caching
In very specific cases, Mk4tcl does not properly track properties
cached in a Tcl_Obj*. This affects byte-compiled code when there
are properties using the same name but with different types. Fixed
in the mk4tcl.h and mk4tcl.cpp sources.
Also optimized selections a bit further (pass Tcl_Obj* instead of
strings to force more typed matches, and avoid some c4_String's).
2004-02-16 Minor tweaks
Change in std.h (for STL) to build with Borland C++ 5.0, and a typo
in checking code of c4_View::IsCompatibleWith, which means incorrect
use of MK was not detected properly (can't happen in blocked views,
the main call point of this routine). Reported by M Dierolf, thx!
2004-01-28 Free space query
Added a new FreeSpace() member to c4_Storage to determine how much
unused space is in a datafile. The validity of the returned values
has not been verified yet, it's an "undocumented feature" for now.
2004-01-26 ############################################ MK 2.4.9.3
Maintenance release, consolidates past 9 months of changes/tweaks.
Fixed test for "__name__" in python/metakit.py to run a quick test.
2004-01-22 Fixed refcount problem with temp rows in Mk4tcl
This was a long-standing bug: "mk::row create" did not work right
because the tracking of temporary rows was completely messed up.
Added test case for Tcl (mk6.8), fixes FB14, BTS#78, and BTS#29.
2004-01-21 Documentation updates
Updated copyright notices to 2004, and udated to Doxygen 1.3.5 for
a new set of C++ documentation. In anticipation of next release.
2004-01-20 Don't trip over duplicate property names
Added code in c4_Field constructor to avoid crashing when there is a
duplicate property name in the format description string. Duplicate
names are now ignored (there is no good way to report errors at this
point). Avoids an even bigger problem: conflicting property types.
Added test s49 to detect this case (FB20, reported by Brian Kelley).
2004-01-18 Fixed rare but very serious subview resizing bug
Fixed rare but serious file damaging bug, when resizing a comitted
subview to empty, committing, and then resizing back to containing
data. Added new s48 test to force this bug to the surface.
Fortunately this usage pattern *never* happens in blocked views!
Fixes are at the end of c4_FormatV::Insert and c4_FormatV::Remove.
2004-01-16 Gracefully deal with bad property type specifiers
When GetAs is a called with a bad description, such as for example
"myview[name:A]", the release code would crash on a null pointer
dereference at some point. Changed so the code now treats any type
it does not know about as "I" (works a bit better than using "S").
The debug build still hits an assertion, as before. Added s47 test.
2004-01-03 Fixed typo in PyView.cpp
Forgot to fix closing brace after the 2003-12-11 mods.
2003-12-21 Fixed Mk4too sorting on subview of length 1
There was a silly bug when sorting on subviews in the new Mk4too
interface (not in Mk4tcl), which returns a view, instead of a list
of integers. In the case of 1 row, optimization was done wrongly,
omitting the sort as well as the remapping. Fixed.
Oomk needs to be patched to work around this (don't sort if n=1).
2003-12-13 Tweak to avoid two unisgned/signed compiler warnings
In remap.cpp, compiled in debug mode on Win32 (DWORD vs. t4_i32).
2003-12-11 Checked in numerous changes to Mk4py by Nicholas Riley
All changes are local to the python/directory - for details, see
http://www.equi4.com/pipermail/metakit/2003-September/001407.html
With a big thank you to Nicholas for contributing these improvements.
2003-11-23 Bumped to Python 2.3, doc tweaks, lots of name fixes
Adjusted makefile to now look for Python 2.3 by default.
Regenerated config files. Fixed obsolete links in the doc files.
Got rid of tons of Metakit "interCap" cases, should be Metakit.
This affects a huge number of source files and one #define (which
has been defined twice for compatibility: d4_MetakitLibraryVersion).
Use "cvs diff -i" to see real changes, other than case swapping.
2003-10-28 Get rid of --enable-python, check in c22.txt
It's not valid, but some files mentioned it. Use --with-python.
Forgot to check in the new c22.txt file added earlier this month.
2003-10-16 Added note to Tcl docs
Added a note to doc/tcl.html on how to load a MK datafiles stored in
another one, as needed when using VFS for example.
2003-10-10 Added c22 test
Added test to make sure groubpy/select bug is not present in the C++
core (bts #75 reports the bug found for Mk4tcl/Mk4too).
2003-10-01 Fixed bugs in Tcl test suite
The tests in tcl/test/ were incorrectly closing non-test datafiles,
such as the "exe" one open while tclkit runs, and needed when a
slave is created which needs to re-run init.tcl etc from VFS.
2003-09-30 Python 2.3.1 & cleanup
Tweaked PWONumber.h and PyRowRef.cpp and MSVC6 project so it can
compile Mk4py for Python 2.3.1 again. Windows binary uploaded.
Removed the win/msvc60/tests/ directory, it's no longer needed.
2003-09-20 Autoconf and libtool rebuilds
In an attempt to stay ahead of version trouble and other nonsense,
the autoconf / configure and libtool files have been regenerated.
Autoconf is at 2.57 and libtoolize is at 1.4.3 on this dev system.
2003-08-26 Documentation fix
Fixed install comments for Mk4py, as reported in bts #59.
2003-07-17 Fixes to Mk4py (Gordon)
Fix crash when db.description(nm) is called for missing view "nm".
Fix wrap - for the special case of wrapping a list of primitives
(eg, ints, floats, strings) in a single property "view".
2003-07-11 Fix for Linux not finding .lai file
Posted for RH 8.0 on MK mailing list by Jeff Web on July 3rd.
2003-07-01 Fixed "Metakit" (preferred) vs "Metakit" (obsolete)
Get rid of InterCappedWords. Time to grow up, d00d...
2003-06-06 Fix to Mk4py for case (in)sensitivity.
When using a dict (or keyword args), makeRow now gets the
names from the dict's keys and gets the properties by name.
This allows case insensitive matching. Note that using an
instance still requires that the instance attributes have
names that match (case sensitive) with the view.
2003-05-15 Add distutils setup.py script (Gordon).
Tested on Linux & Windows (MSVC).
You can now do a plain configure / make (without python)
then cd python; python setup.py build | install
2003-05-08 Fixed array bound bug when not using mmap-ed files
There was an incorrect test, when dealing with a new file and
memory mapping is not enabled (which is uncommon, these days).
Thanks to V Demarco for catching and resolving this bug.
2003-04-28 Sourceforge
Synced to SF's CVS, see http://sourceforge.net/projects/metakit
2003-04-25 Autoconf/libtool update
Did "autoreconf -force" with autoconf 2.5.7 and libtool 1.4.3, as
suggested by Gerfried Fuchs/Ryan Murray. Some Makefile.in tweaks.
2003-04-22 Fixes to Mk4py (Gordon).
Make view.append(instance) work again.
Fix recursively adding subview data.
Make properties compare properly.
Initial (incomplete) unittest based test script.
2003-03-16 ############################################ MK 2.4.9.2
Also allow passing pairs to "mk::row append" as a list (Mk4tcl).
2003-03-10 Fixes for sparc64 configure and AIX strcasecmp
Both changes contributed by Andreas Kupries.
2003-03-07 Fix more bugs in blocked view, add 64-bit Sparc support
The blocked viewer deletion was STILL incorrect. Fixed bad offset
calculations, added several more assertion checks, and added a new
m07 test case which checks for numerous cases of deletion overlap,
i.e. cases where multi-row deletions cross subview boundaries.
Added __sparc9 #define to mk4.h (thanks again, Andreas K)
2003-03-05 Fixed two potential races in C++ threaded build
There was a serious bug in view.cpp, whereby Unix (p)thread locks
were non-functional in release mode (#define NDEBUG). Yikes!
In addition the logic was flawed (both Unix and Windows), failing to
protect from indexing while sPropNames / sPropCounts were being
resized (i.e. a realloc). Added explicit locking to all affected
paths, and removed the now obsolete count locks (i.e. AddRef).
Thanks to Murat Berk for chasing this and explaining the problem.
This bug "only" affects C++ builds. Tcl and Python each have an
extra layer on top which means there can be no races inside MK.
2003-03-03 ############################################ MK 2.4.9.1
Moving to a new 4-level bugfix release number.
2003-03-02 Fixes to Mk4py (gmcm)
Modify some recent patches that were Python 2.2 only so they would
still work with 2.1. Add a view.properties() method (returning a
dict of propname -> Property) for cases where a property is masked
by a method name.
2003-03-01 Reverted changes in Mk4py/scxx, avoid Mk4tcl warning
One was in SCXX, PWONumber.h - ouch and apologies (jcw). Changed
comparison logic in mk4too.cpp (64-bit ints, new code).
2003-02-28 Fixed relaxed layout in Mk4tcl, several Mk4py fixes
Use list operators to convert a Tcl layout to MK format. This used
to crash, Tcl test 6.7 added to verify the fix. Changed test 3.1 to
use a different notation for nested defs (^).
Added to ViewerAsSeq, to allow v1+v2+v3 (thanks Michael Scharf).
Also fixed several mem leaks - thx again!
2003-02-27 Added support for HPUX aCC "long long"
Added #ifdef's to mk4.h to match autoconf HAVE_LONG_LONG settings.
Tweaks to configure.in by Andreas K to better support HP/UX (thx!).
2003-02-26 Added 64-bit int support to Mk4tcl, fix mingw
The "L" type was not exposed, though Tcl >= 8.4 has "wide" ints!
Will now support 64-bit ints, if built against a Tcl 8.4+ header, but
still defaults to without for use in Tcl's <= 8.3.
Fix _strdup #ifdef in univ.cpp when compiled from mingw on win32.
2003-02-24 Break was missing in switch Mk4py
Fixed a serious problem, which must have come from editing too
wildly (Mk4py needs a test suite!).
2003-02-20 Remove a stray include, remove CR's
Remove "#include <stdio.h>" from remap.cpp, leftover from debugging.
Also removed CR's left behind from editing under Windows (doh!).
2003-02-18 ############################################## MK 2.4.9
This is mostly a bug fix release (some features added to Mk4tcl).
2003-02-18 Fixed a bug in blocked view deletion, and hash byteorder
There was an off-by-one error in the deletion of multiple rows
which span more than an entire subview block. Test m06 is ok now.
Also added consistency checks (when compiled in debug mode).
Fixed a too-strict assertion in mk4tcl.cpp, Item destructor.
Fixed a byte-order sensitivity in hash views for numeric properties.
2003-02-17 Configure tweaks for hpux/ia64
Re-instated hpux changes by A. Kupries, for ia64, also -lpthread.
2003-02-14 Bug found in blocked viewer modification
Added test m06 to catch a problem first detected in the Tcl test
suite (test 5.7) - recoded to C++. This is a show-stopper for the
upcoming 2.4.9 release - fixing it is now a top priority.
2003-02-14 Some changes to OO interface in Tcl
The OO "select" cmd now returns a view, not a list of row #'s.
Added "product" and "rename" operators, they were not exposed.
2003-02-14 Enable stdio buffering
On platforms where stdio is used, the setbuf(..., 0) calls have been
removed (fileio.cpp). This improves performance, and lets caller set
up whatever buffering they like.
2003-02-07 Tweaks to restore broken MK ports
Fixes by A. Kupries to fix MK builds I broke (Itanium/HPUX).
2003-02-07 Changed code to avoid compiler warning
In remap.cpp, LookDict(), add return at end to avoid a mistaken
compiler warning (on AIX 5.1). No effect on runtime behavior.
2003-02-02 Work around optimizer bug in gcc 3.2.1
The sign-extension in c4_ColOfInts::Get_16r was not being done right
with -O2 on Linux. This only manifests itself with files having
reversed bytes (e.g. PowerPC/Mac). Changed code to use a local temp
buffer instead. This bug was the reason why some starkits failed to
load when created on Mac and used on Linux.
2003-01-24 Fixed cleanup order bug in Mk4tcl
There was a long-standing bug in Mk4tcl, in which cleanup order of
MkPath objects caused them to access their MkWorkspace parent even
though it was already deleted. This may have caused some of the
crash-on-exit bugs in the past.
2003-01-22 Add missing -lstdc++
For unknown reasons, the current make failed to produce shared libs
with libstdc++ linked in - manually added to LDFLAGS again.
2003-01-19 Tweak to temp object use
Two changes in handler.cpp to avoid bug in compilers which get the
cleanup logic of temp objects wrong (thx, Dan Gregory).
2003-01-17 Add synonym for mk4tcl "info" command
To avoid a name clash, "$view info" can now also be written as
"$view properties" (or an abbreviation of that).
2003-01-16 Allow access to root view in Mk4tcl
Access to root view (i.e. the storage object itself) was not
allowed - added a small change to allow this (MkPath::AttachView).
2003-01-15 Use strdup
On Unix, use strdup i.s.o own code for _strdup, see univ.cpp.
Perhaps it's time to start reversing the names, and make unix std.
2003-01-10 Build improvements, Mk4py long and Mac improvements
Merged changes submitted by Nicholas Riley (thanks!) into CVS:
- changes to build Mk4py on MacOS X (framework/dylib)
- support 'L' fields, handle overflow, throw exceptions
- the beginnings of a test suite for Mk4py (in python/test/)
Separated PPC and 68K projects (Mac classic), because PPC is now
built with 8.3 (Carbon support), while 68K requires 6.3. The x86
cross-compile-from-mac projects have been dropped.
2003-01-09 String compare tweak, Mac Carbon runtime mmap code
Use strcasecmp on unix, instead of own code (string.cpp).
Added code based on Paul Snively's contributed patch to recognize
running under OSX, so carbon apps can benefit from mmapped files.
All changes are within fileio.cpp, requires CW8 to build this way.
Added "PPC Carbon" target to cw.mcp, derived from "PPC DLL" one.
2002-12-23 Tweak for Borland builder 5 & 6
Changed #ifdef line 22 in univ.cpp (fix by S. Cusack).
2002-12-09 Fixed bug in selection view change propagation
Fixed a bug when a row is inserted in a view on which a selection
depends, when the inserted position is not part of the derived one.
This looks like an oversight in 2.3/2.4 changes, and must have been
in there for quite some time. Added new n14 test to verify this.
2002-12-02 Fixed bug in MK old-file format conversion
Fixed bug in on-the-fly conversion of old 1.x/2.0.x format files.
2002-11-24 Fixed Mk4tcl threaded build
Release and reclaim mutex lock while calling eval inside loops.
Added "--enable-threads" option to configure script.
2002-11-22 Configure tweak for HPUX/Itanium
Removed ia64 check in configure.in, now that libtool has been fixed.
2002-11-16 Tweaks to compile on Mac
Small changes to the source code to avoid errors from the MWCW 8.x
compilers. Omit stricmp and strdup with CW version >= 8.
2002-11-04 Fixed typo in Makefile
This prevented Mk4py from getting installed (thanks F. Majid).
2002-11-03 ############################################## MK 2.4.8
Reverted non-portable change in Makefile to copy to "Mk4tcl.*".
2002-10-28 Workaround for bugs on ARM/WinCE and HP/UX, Mk4tcl/WinCE
Turn off c4_ColofInts::Set_8i optimization when compiling for ARM on
WinCE using EVC3. All regression tests now pass (on ARM & x86emu).
On HP/UX, enable copying in fileio.cpp, line 265, so a write is not
done directly from a mmap'ed file (this can hang a process, hard).
Added a "mktcl" subproject to msevc3, to build "Mk4tcl.dll".
2002-10-27 Added multi-thread support for Unix
Added changes to support same appartment-threading model on Unix as
on Win32 (pthreads based). This merely adds support to allow safe
use of the current "each datafile in one thread" design on Unix. All
changes in view.cpp (thank you, M. Berk). Define q4_MULTI to enable.
2002-10-26 Merged WinCE changes
Merged changes to build MK for WinCE using MS Embedded VC 3.0.
These changes are based on Joseph Tate's modifications (thanks!).
2002-10-21 Updated autoconf & libtool (on teevie)
Files in unix/ regenerated with autoconf 2.53a and libtool 1.4.1.
2002-10-16 Added "dup" subcommand to Mk4tcl OO
There was no way to duplicate a view in the mk4tcl OO interface.
Needed to properly deal with re-use / ref counts - added "dup".
2002-10-11 Cast widened in Mk4tcl, support q4_TINY def for Mk4tcl
Changed cast from int to long, to avoid compiler warning on some
64-bit machines (mk4tcl.cpp, line 2013).
Remove float/double code when q4_TINY is defined, also in Mk4tcl.
2002-10-10 Makefile tweaks
Removed duplicate flags from CXXFLAGS definition.
2002-10-09 Fixed blocked/subview bug, tweak for the ARM platform
Blocked viewers were not doing the right thing when rows had subviews
in them - fixed the logic, and add a new m05 test to verify it all.
Fixed a signed-char bug which prevented MK from passing all tests on
the ARM, in this case the Compaq iPaq PDA with Linux and gcc 2.95.4.
2002-10-07 Tweak to prevent gcc compiler bug
Added intermediate temp var in derived.cpp to prevent gcc -O failure.
2002-10-04 Config and makefile adjustments
Adjusted configure.in to use ".sl" for HP-UX, and ".dll" for Cygwin.
Changed "install -d" to "mkdir -p" (2x) in Makefile.in, since the
former is not supported by all incarnations of install (A Kupries).
Added @CXXFLAGS@ to the end of "CXXFLAGS =" lines in Makefile.in,
as suggested by Donal K. Fellows. Used for his IRIX(64) builds.
Added logic to build properly on HP-UX, including a small assembly
file (!) which allows loading C++ shared lib from C, as needed in
Tcl - with thanks to Andreas Kupries for solving and patching this.
2002-09-25 Build tweaks for Mac OS X
Applied patches by Daniel Steffen to deal with ".dylib" (thanks!).
Use -O i.s.o. -O2, which caused test b27 to fail on OS X (gcc 3.1).
2002-09-09 More 64-bit platforms recognized
Added #ifdefs for more 64-bit platforms, thanks to Reinhard Max.
2002-09-08 Make tweaks for HP-UX
Tweaks to build on HP-UX / 9000 (added __hpux #ifdef in header.h).
2002-09-03 Fixed Mac OSX build problem
Compile Mk4tcl lib with stubs only if building the shared lib.
Ignore strip errors (fails with Mk4tcl.so on OSX / dyld libs).
2002-07-01 Python and Tcl installation improved
Now installs Python Mk4py.so and metakit.py in the most common dir
location by default, i.e. "/usr/local/lib/python2.2/site-packages".
Locations can be overridden through $pyincludedir and $pylibdir.
For Tcl, "make install" now constructs a standard package dir, i.e.
"/usr/local/lib/Mk4tcl/" with entries "Mk4tcl.so" and "pkgIndex.tcl".
Locations can be overridden through $tclincludedir and $tcllibdir.
2002-05-30 ############################################## MK 2.4.7
Fix CONST84 logic so source compiles under both Tcl 8.3 and 8.4.
Fix creation of tests/CVS/ so diff in regression tests won't fail.
2002-05-14 Fixed an adaptive int insert/delete bug
Another bug in the 2.3/2.4 codebase, related to adaptive integers.
Symptom: one int entry has incorrect bytes after insert/delete.
Scenario: ints are 1..8 bits, and an odd number are added/removed,
leaving an odd-sized internal "gap". Then store a 16/32 bit value,
forcing resizing. Once this is done, there will be one value which
cannot be properly read or set because its data is split *across* the
gap (commit is ok and removes the problem). Fix in column.{h,cpp},
with a new regression test s46 added to make sure things are ok now.
Let's hope that this is truly the *last* deeply embarrassing bug...
2002-05-06 ############################################## MK 2.4.6
Recent bug fix was critical enough to warrant a new revision.
It is safest to avoid using versions 2.4.2 .. 2.4.5 altogether.
2002-05-05 Fixed major bug in string/bytes after multiple commits
Finally found a way to reproduce spurious bugs reported in the latest
revisions. It turns out that one of the optimizations of the past 2
months (no exact details) caused memo's to be tracked incorrectly in
their free space use. This causes trouble with strings over 10 Kb
(or smaller if there are over 1000 rows).
The bug is forced by new (frightfully short) test cases s44 + s45.
Fixed by performing a slightly less agressive optimization in the
c4_FormatB::Commit (which is also shared with strings, type 'S').
Removed a "--exclude" from diff, which is not portable enough.
2002-05-01 Added support for Windows CE
Patches submitted by Joseph Tate (thank you!), with minor tweaks.
2002-04-29 ############################################## MK 2.4.5
Various bug fixes, fixed a number of platform issues.
2002-04-28 Fix small-int re-use view bug
A nasty bug was reported by VPI which caused upper bytes to be
truncated from int values. The problem appears when storing ints of
1..4 bits in a view, then clearing the view (so a gap is placed past
the end of the column), then adding a row with an int of 2 or more
bytes. This uncovered a bug in forgetting to truncate columns with
sub-byte int storage. Now fixed, added regression test s43.
This bug could also have affected string and byte storage, since
these use int columns to store item sizes. Under very specific
conditions, it may have lead to truncated or even mixed-up values.
2002-04-27 Fix nested mk4tcl loop bug
Loops would exit prematurely when nested - due to objc/objv being
overwritten in the inner loop. Affects mk4tcl.cpp and mk4too.cpp.
2002-04-10 Fix bug introduced in recent blocked viewer optimization
Murphy was at it again. The bug affected the way row inserts and
deletes were done, and can cause incorrect data to be copied. It is
relatively hard to reproduce (the test dataset was 12 Mb), but the
change explains things fully and is in fact very small.
2002-04-02 Fix bug in debug code
In remap.cpp line 531, a debug assertion was moved in the wrong way.
2002-04-01 Backed out to libtool 1.4d, fix test diff and Tcl const
Backed out to the more official 1.4d release of libtool (instead of
the CVS version, which is adding "tags" we will not need anyway).
The unix/Makefile.in has been simplified, back to how it used to be.
Fixed the "diff" call at the end of "make test" so that it no longer
generates extra output if things match and now fails if they do not.
Added fix to allow compiling mk4tcl.cpp with "pre-constified" Tcl
code, thanks to a tip by Don Porter (see "grep CONST84 mk4tcl.*").
2002-03-31 ############################################## MK 2.4.4
Various bug fixes and (blocked view) performance enhacements.
2002-03-28 More blocked optimizations, IRIX tweaks
Switched Slot() to binary search. This seems to slow down a few
percentage point for smaller views, but with 5 millions rows this is
reported to make a huge difference (from code by Zhang Dehua).
Added header "bool" fix by Erik Hofman so MK compiles on IRIX (SGI).
2002-03-27 Added definitions for AIX
Added six operators defs before c4_Cursor class, to avoid compile
errors on AIX. With apologies to Murat Berk for taking so long...
2002-03-26 Re-instated the c4_View::RelocateRows operation
Re-enabled code which supports efficient moves of rows from one view
to another - avoiding copying of subviews. Strings/memos are still
being copied for now. Also moved a slow test out into a new call
"c4_View::IsCompatibleWith", this must be checked to make sure that
RelocateRows can work. Passing incompatible views will still cause
an assertion in debug mode, but must be avoided in release builds.
This change ought to have a dramatic effect on inserts/deletes for
blocked views with large subviews. Added examples/blockdels.tcl to
thoroughly exercise this new code and all boundary conditions.
2002-03-22 Fixed a serious bug in serialization code
When serializing string/bytes columns with large strings using the
c4_Storage::SaveTo function, memo's would sometimes not be written,
leading to a *damaged* datafile (and incorrect free-space tracking).
2002-03-15 Better configure logic, "mk::view layout" fix