head	1.1;
access;
symbols
	RELEASE_0_0_16:1.1
	RELEASE_0_0_15:1.1
	RELEASE_0_0_14:1.1
	RELEASE_0_0_13:1.1
	RELEASE_0_0_12:1.1
	RELEASE_0_0_11:1.1;
locks; strict;
comment	@# @;


1.1
date	2000.05.26.23.12.54;	author curt;	state Exp;
branches;
next	;


desc
@@


1.1
log
@Initial revision of metakit-2.01
@
text
@2000-03-17  MK 2.01     Maintenance release, it's solid

    Updated MK version number to 2.01, this maintenance release
    represents a very stable version.

    Small change to b07 test to avoid evaluation order problems.

    Added unix/metakit.spec file for RPM, thanks to Sean Summers.

2000-03-16              Drop Store, fix deep copy, drop segments

    c4_Storage::Store never worked properly under all conditions.
    It's been deprecated for some time and has now been removed.
    Made a handful of changes to test- and demo code to drop it.

    Duplicating a view with deep copy never worked, because it
    used the buggy Store call as well.  Changed to use recursion.

    Dropped support for segmented tree-walk storage, which hasn't
    been used since 1.5 (use a commit with 2.0 to convert files).
    This is necessary to prepare for some file format changes.

2000-03-15              Modifiable custom viewers, other tweaks

    A start has been made with making custom viewers updatable.
    The new methods are Set, InsertAt, RemoveAt, and Move, but
    the number of viewers which implement this is still limited.
    Mk4py has been adjusted to allow "set" on wrapped views.

    Removed c4_Strategy::DataLoad, it was only used in one place.
    Small optimization of the 2 calls to c4_Streamer::NextByte.
    Get rid of / disallow read calls on memory mapped files.

2000-03-14              Makefile tweaks, non-commits smarter

    Changed from --enable-tcl to --with-tcl=DIR, because the old
    approach only worked with Tcl installed in a standard place.

    Commits of a R/O file now fail.  Also, if no changes have
    been made, a commit will no longer write anything to file.

2000-03-13              Several new commands added to Mk4py

    Several changes were submitted by Gordon McMillan, which add
    better support for his upcoming SQL engine.

2000-03-12              Allow embedding MK datafile at end of EXE

    Mk4tcl was changed to look for an optional trailer for quick
    access to the start offset.  This makes it possible to append
    datafiles to executables, even if they are larger than 4 Kb.

2000-02-29              Fixed rare bug with lots of memo fields

    There was a bug in free space management (persist.cpp), which
    can only occur when exactly 7500 free space gaps are present,
    and a commit crosses the threshold.  There was also a small
    mistake in that same code causing a bit of free space waste.

2000-02-24              Added proxy support to Tequila

    Tequila can now be used as basic client/server setup for Tcl
    scripts.  See tcl/tequila/README for details and an example.

2000-02-04              Fixed mk::views (Mk4tcl)

    The mk::views command failed to list the first view in the file
    (this bug was introduced by changes in MK 1.99).

2000-01-02              Adjusted y2k

    Copyright and license dates adjusted.

1999-12-26              More Mk4py changes

    Added sortrev, and fixed "select(low,high)".  Docs updated.

1999-12-23              New view operators in Mk4py

    Added rename, project, groupby, and counts operators to Mk4py.
    These were already part of the C++ core.
    
1999-12-22              Avoid GetId inline warning

    Reordered GetId in "mk4.inl" to avoid (harmless) inline warning.

1999-12-21              Checked-in CatFish and KitViewer sources

    Added win/catfish and win/kitviewer areas.  CatFish was built
    with MSVC 1.52, so the win/msvc152 area has also been added.

    KitViewer requires Borland C++ Builder 4.0 to build (using VCL),
    it has been adjusted to now also recognize scripted documents.

1999-12-20              Bug fix in set-after-get situations

    A bug has surfaced when setting string/byte/memo values which
    span a 4 Kb block boundary.  The bug can only happen if data
    is first fetched and subsequently changed.  The affected code
    is in src/format.cpp (3x).  Added Tcl test 5.5 to catch this.

1999-12-19              Mac tweaks

    Changes to make the Mac versions build from the CVS repository.
    The Mac can also cross-compile Windows libraries using MWCW 5.

1999-12-17              Add the Tequila example

    Added the Tequila global Tcl array data server, see tcl/tequila/.

1999-12-15  MK 2.0      Official Open Source release

    Removed a bad assertion from FormatX::Compare.

    Several new services set up on the excellent SourceForge.com site.

1999-12-14              Documentation added

    The C++ API documentation has been added to the distribution, as
    well as a document describing the file format details of MetaKit.

1999-12-13              Bug fix affecting c4_View::Description

    There was a problem with c4_ViewScanner::Describe, due to a change
    from c4_String to (const char*).  Now c4_View::Store works again.

1999-12-12  MK 1.99     New release, as open source software

    The major change is that MetaKit has been released as open source
    software, based on the liberal X/MIT-style license.  Commercial
    support remains unchanged for all recent commercial customers,
    and for those who purchase the Enterprise License.  The Universal
    Source license has been terminated, because full source code is
    now freely downloadable by anyone from the website.

    Sources and documentation files have been adjusted accordingly.

1999-12-08  MK 1.9h     Bool support for gcc/egcs, minor fix

    Clear _field after delete in c4_HandlerSeq::DefineRoot.  This
    triggered an assertion on Linux, when compiled in debug mode.

    Added pre-processor logic to detect whether gcc supports bools.

    Removed all indentation from #define's, #ifdef's, etc.  This was
    done after a report that some compilers can get confused by this.

1999-12-06              Derived view row copy fix

    There was a problem when using SetAt with derived views as source,
    due to a remapping problem.  Fixed viewx.cpp, added new test b25.

1999-11-25  MK 1.9g     Makefile changes, thread-safe Mk4tcl

    Renamed options to --enable-python and --enable-tcl, both now off
    by default, since most people probably don't want to enable both.

    The new "-shared" changes to make Mk4tcl thread-safe have been
    folded into the main source code.

1999-11-22              Channel improvements Mk4tcl

    There was a close conflict in mk::channel, also several changes to
    improve mk::channel fileevent handling.

1999-11-19              Bug fix in Mk4tcl

    There was an array overrun when mk::get was called without fields.
    Added code to avoid this.

1999-11-11              Mk4tcl exit handling

    Simplified Mk4tcl exit handling, fixes "interp delete" crash.
    Added new mk5fixed.4 test to catch this case.

1999-11-10              Mk4tcl shared and multi-threaded access

    Made a first experimental version of Mk4tcl (1.2.1, not announced)
    which allows sharing a database between interpreters and threads.

1999-11-09              STL, MkWrap, compare caching

    Tweaked the makefile to support STL builds (also adjusted README).

    Fixed bug in MkWrap, calling storage.description() without args.

    Yet more fixes in comparisons, this is all one problem, caused by
    changes in caching for ints, floats, and doubles.  Added B24 test.
    These (last?) problems occured in custom / compound views.

1999-11-08  MK 1.9f     Fixed sort comparisons

    There was a cache problem with comparisons of int / float / double
    sorts.  Fixed, also added new B23 regression test to check for it.

1999-11-07              Little nasty details

    Tweaked some make/project files.  All regress tests and Tcl tests
    now reported to really work on Solaris, Linux, Windows, and Mac.
    Regression tests required more memory on Mac to get past L03 case.

1999-11-06  MK 1.9e     Big oops: Mk4tcl and MkWrap were broken!

    Fixed a c4_Strategy / c4_FileStrategy mixup in Mk4tcl and MkWrap.

1999-11-05              Simplify c4_Storage

    Moved state out of c4_Storage and into c4_Persist, to prepare for
    multi-thread wrappers.  Made a new, simpler design to achieve that.

1999-11-04  MK 1.9d     Factor out stdio dependencies

    Moved all stdio dependencies out of core into new "fileio.cpp" src.
    The mk4.h header no longer includes <stdio.h>, added new "mk4io.h"
    header with a c4_FileStrategy class, derived from c4_Strategy.

    Also factored c4_Stream/c4_FileStream out of the c4_Strategy class.
    This alters the API slightly, but makes it 100% portable/embeddable.

    Added "tcl/iohan.tcl", a simple wrapper for generic storage access:
    locally, on a FTP server, in a local MK datafile, or using a remote
    Tequila server (see http://www.equi4.com/tclkit/tequila.html).

1999-11-03              Improved detach/restructure handling

    Changed detach to drop all persistent formathandlers, but leave the
    number of rows intact.  It will be much faster to destroy columns
    than to delete (and propagate) rows.  The result is that a pointer
    to a view of which the underlying storage object goes away will end
    up with the same number of rows as before, but no properties at all.

    Fixed a problem which would have occured when properties are being
    "restructured away" and then committed.  The solution is to check
    for this and delete all such properties at commit time.

    Moved Buffer() out of c4_HandlerSeq and c4_CustomSeq, and made the
    new version in c4_Sequence allocate the c4_Bytes object lazily.
    Faster, and decreases sequence object size (for lots of subviews).

    Mk4tcl, mk::layout now returns the proper layout even if the views
    are empty.  Solved by adding extra arg to c4_Storage::Description,
    to return structure of a single top-level view.  Fixes "mk8basic.1",
    and the returned string now has one bogus list layer stripped off.

    MkWrap also adjusted with optional arg for storage.description().

1999-11-02              New Wrap code in MkWrap

    MkWrap, added new Wrap(seq,props,byPos) member, a c4_CustomViewer
    which wraps any Python sequence as MK view (for use in joins, etc).

1999-11-01  MK 1.9c     Mk4tcl changes

    Mk4tcl, several changes: added "-size" option to mk::get to return
    the size of prop value without fetching it (see new basic.9 test).
    Added "-globnc" for case-insensitive globbing (for regexp, this is
    available through the new (?i) metasytnax of Tcl 8.2 (see basic.10).

1999-10-31  MK 1.9b     Solved shared lib unload with Tcl 8.2

    Changed property symbol table setup to avoid static initializers,
    to work around a problem with shared library cleanup from Tcl 8.2.
    Added new c4_Property::CleanupInternalData call to clean up 100%
    (this code need not usually be called, only if memory is tracked).
    This fixes the crash-on-exit bug in Mk4tcl (Linux and Solaris).

1999-10-29              Make support for MkWrap and Mk4tcl

    Both MSVC and MWCW now also build Mk4tcl and MkWrap extensions.
    The MWCW project compiles for Win and Mac *on* either Win or Mac.
    Makefile extended to build Mk4tcl and MkWrap, added dist target.
    Updated to latest Perceps 3.5 beta, started generating docs again.

1999-10-27  MK 1.9a     New build / directory structure

    Completely reworked the directory structure to simplify all builds.
    Created new "builds/" area for all intermediate and output files.
    New MSVC 6.0 project structure created in "win/msvc60/".

    Moved Mk4tcl to the "tcl/" top-level directory, and MkWrap to the
    "python/" dir.  The MkWrap code has been removed from the project.

    Removed c4_View::Match and the regular expression package, since it
    can just as efficiently be done with a wrapper around MK, now that
    string results no longer allocate a temporary copy.

    Started writing a Tcl-based test suite for use with Mk4tcl.

MAJOR CHANGE SINCE 1.8.6

    Merge handler.cpp and format.cpp classes to get rid of special-cased
    in-memory version of handlers.  This has major effects on how data is
    kept for unattached views (they still exist, but no longer special).
    The code is leaner and meaner, it passes all regression tests.

ALSO LISTED IN THE RELEASE HISTORY

    Added c4_MemoRef::Access and c4_Memoref::Modify for partial access to
    memo fields.  Avoids copying, and allows insertion/deletion anywhere.
    MkWrap and Mk4tcl have both been extended to allow using Memo fields
    for simulated file I/O (mk::channel for Tcl, MkMemoIO.py for Python).

    Added c4_Reference::GetSize to determine the size of a value without
    accessing it.  For ints, returns the negated bit width if 1/2/4 bits.

    Added experimental c4_View::RelocateRows to move rows from one view
    to another (both must be in same storage, with the same structure).
    The moves do not involve any data copying w.r.t. subviews and memo's.

For the old release history, see http://www.equi4.com/metakit/history.html
@
