hamsterdb 2.0.0.rc2 - Release Notes
This version is UNSTABLE!!
This release stabilizes the 2.0.0 branch. It fixes several bugs and improves
the performance. Also, all new features and fixes of the 1.1.14-branch were
merged.
Additionally, there were hundreds of internal changes, code cleanups and
refactorings. A C++ compiler is now required to compile hamsterdb (although
the interface is still ANSI-C). In previous versions some source files also
required a C++ compiler, but these files were all optional.
This release is not stable and not ready for production.
Version 2.0.0 allows to start an arbitrary number of Transactions that run
in parallel. All modified keys are stored in RAM and are flushed to disk when
the Transaction is committed. If the Transaction is aborted then the
information in RAM is simply discarded. For recovery a journal is written; the
journal does not write the physical page information, but a logical
meta-information about the operations in this Transaction. (This version of
2.0.0rc1 still uses the physical log in combination with the new journal; the
old log will be removed in the next versions).
At runtime, the information in RAM and in the btree index is then consolidated.
Users who do not use Transactions should not notice any difference between
1.x and this version.
Compared to 1.x, a few functions were disabled if Transactions are enabled:
- sorting duplicate keys (HAM_SORT_DUPLICATES)
- approximate matching
- direct access (HAM_DIRECT_ACCESS)
- partial read/write (HAM_PARTIAL)
See below for known issues and bugs.
New Features
- added a new function ham_cursor_get_record_size; retrieves the record
size of the current item
- the cache size is now 64bit, allowing caches > 4 GB
- enabled large file support for 32bit linux (thanks, liheyuan)
Bugfixes
- all bugfixes of 1.1.14 were merged
Other Changes
- A lot of code was refactored
- hamsterdb is still an ANSI C library, but the implementation is now mostly
C++
Known Issues
The following tests fail because of bugs in hamsterdb when using cursors to
move over duplicate keys.
./test --use-transactions=200 --fullcheck-backwards ../../testfiles/1/220.tst
./test --use-transactions=200 --fullcheck-backwards ../../testfiles/2/102.tst
For more information, read the README and the ChangeLog.