Releases: erthink/libmdbx
Release 0.5.0
- Fix returning MDBX_RESULT_TRUE from page_alloc().
- Fix false-positive ASAN issue.
- Fix assertion for
MDBX_NOTLS
option. - Rework MADV_DONTNEED threshold.
- Fix
mdbx_chk
utility for don't checking some numbers if walking of B-tree was disabled. - Use page's mp_txnid for basic integrity checking.
- Add MDBX_FORCE_ASSERTIONS built-time option.
- Rework MDBX_DBG_DUMP to avoid performance degradation.
- Rename MDBX_NOSYNC to MDBX_SAFE_NOSYNC for clarity.
- Interpret
ERROR_ACCESS_DENIED
fromOpenProcess()
as 'process exists'. - Avoid using FILE_FLAG_NO_BUFFERING for compatibility with small database pages.
- Added install section for CMake.
Release 0.4.0
- Support for Mac OSX, FreeBSD, NetBSD, OpenBSD, DragonFly BSD, OpenSolaris, OpenIndiana (AIX and HP-UX pending).
- Use bootid for decisions of rollback.
- Counting retired pages and extended transaction info.
- MDBX_ACCEDE flag for database opening.
- Using OFD-locks and tracking for in-process multi-opening.
- Hot backup into pipe.
- cmake & amalgamated sources.
- Fastest internal sort implementation.
- New internal dirty-list implementation with lazy sorting.
- Support for lazy-sync-to-disk with polling.
- Extended key length.
- Last update transaction number for each sub-database.
- Automatic read ahead enabling/disabling.
- More auto-compactification.
- -fsanitize=undefined and -Wpedantic.
- Rework page merging.
- Nested transactions.
- API description.
- Checking for non-local filesystems to avoid DB corruption.
0.2.0 2018-09-25
New features and Compatibility breaking:
- Compatible with v0.1.x (
stable/1.0
branch). - Identical database format for 32- and 64-bit builds.
- Dynamically DB file size (growth/shrink) and custom page size via
mdbx_env_set_geometry()
. - Support for Elbrus architecture.
- Support for Windows XP and later (building by MSVC 2013 and later, but not by MinGW).
- Support for
MDBX_EXCLUSIVE
mode, include network shares. - Support for large write transactions.
- Extending
mdbx_chk
to verifing a inplaced sub-pages and accounting/statistics. - Incompatible with v0.0.x (
stable/0.0
branch) and with original/obsolete LMDB.
Fixes since v0.1.x releases (stable/1.0
branch):
- major: fix corruption due LMDB-inherited rebalance bugs.
- major: fix accounting for sorted-duplicates tables.
- major: fix internal (LMDB-inherited and broken) audit.
Fixes since 0.1.5 2018-06-14
:
- fix LMDB-inherited empty and unneeded large/overflow pages.
- fix LMDB-inherited cursor tracking bugs.
- fix
MDBX_CORRUPTED
due concurrent open/shrink collision. - fix concurrent opening with custom pagesize.
- fix
MDBX_EKEYMISMATCH
while update multi-value withMDBX_CURRENT
. - linux: fix fallback2shared for
mdbx_lck_exclusive()
. - windows: fix truncation race while
unmap()
. - windows: fix nasty
suspend_and_append()
bug. - tools: fix wrong 'bad sequence' messages from
mdbx_stat
. - minor: doc fixes (ITS#8908 and ITS#8857).
Fixes since 0.1.4 2018-05-04
:
- MAJOR: force steady-sync when shrinking DB.
- windows: disable non-blocking DB-close.
- minor: skip meta if usedbytes beyond EOF.
- minor: return
MDBX_CORRUPTED
instead of crash ifMDBX_DUPSORT
mismatch.
Fixes since 0.1.3 2018-04-03
:
- MAJOR: fix wrong
freeDB
search. - windows: fix
lck_reader_alive_check()
.
Fixes since 0.1.2 2018-03-22
:
- MAJOR: fix/rework
rthc
to avoid GNU libc ntpl bug. - minor: fix cursor tracking inside
mdbx_rebalance()
. - minor: fix
mdbx_cursor_put(MDBX_APPEND+MDBX_NOOVERWRITE)
returnMDBX_KEYEXIST
instead ofMDBX_EKEYMISMATCH
.
Fixes since 0.1.1 2018-03-14
:
- minor: fix/rework cache-line alignment.
- minor: fix unaligned access to
mp_ptrs[]
on fake-page. - minor: lookup suitable
txnid
for rollback to avoid meta-pages clashes. - tool: rework/fix read-write mode inside
mdbx_chk
. - minor: fix minor memleak (Coverity).
- minor: add workaround for Elbrus's libc bug.
Fixes since 0.1.0 2018-03-07
:
- minor: fix missing
MDBX_DEVEL=1
.
0.1.6 2018-09-23
New features and Compatibility breaking since stable/0.0
:
- Incompatible with v0.0.x (
stable/0.0
branch) and with original/obsolete LMDB. - Identical database format for 32- and 64-bit builds.
- Dynamically DB file size (growth/shrink) and
mdbx_env_set_geometry()
. - Support for Elbrus architecture.
- Support for Windows (2008 and later, MSVC 2013 and later).
Fixes since 0.1.5 2018-06-14
:
- fix LMDB-inherited empty and unneeded large/overflow pages.
- fix LMDB-inherited cursor tracking bugs.
- fix
MDBX_CORRUPTED
due concurrent open/shrink collision. - fix concurrent opening with custom pagesize.
- fix
MDBX_EKEYMISMATCH
while update multi-value withMDBX_CURRENT
. - linux: fix fallback2shared for
mdbx_lck_exclusive()
. - windows: fix truncation race while
unmap()
. - windows: fix nasty
suspend_and_append()
bug. - tools: fix wrong 'bad sequence' messages from
mdbx_stat
. - minor: doc fixes (ITS#8908 and ITS#8857).
Fixes since 0.1.4 2018-05-04
:
- MAJOR: force steady-sync when shrinking DB.
- windows: disable non-blocking DB-close.
- minor: skip meta if usedbytes beyond EOF.
- minor: return
MDBX_CORRUPTED
instead of crash ifMDBX_DUPSORT
mismatch.
Fixes since 0.1.3 2018-04-03
:
- MAJOR: fix wrong
freeDB
search. - windows: fix
lck_reader_alive_check()
.
Fixes since 0.1.2 2018-03-22
:
- MAJOR: fix/rework
rthc
to avoid GNU libc ntpl bug. - minor: fix cursor tracking inside
mdbx_rebalance()
. - minor: fix
mdbx_cursor_put(MDBX_APPEND+MDBX_NOOVERWRITE)
returnMDBX_KEYEXIST
instead ofMDBX_EKEYMISMATCH
.
Fixes since 0.1.1 2018-03-14
:
- minor: fix/rework cache-line alignment.
- minor: fix unaligned access to
mp_ptrs[]
on fake-page. - minor: lookup suitable
txnid
for rollback to avoid meta-pages clashes. - tool: rework/fix read-write mode inside
mdbx_chk
. - minor: fix minor memleak (Coverity).
- minor: add workaround for Elbrus's libc bug.
Fixes since 0.1.0 2018-03-07
:
- minor: fix missing
MDBX_DEVEL=1
.
0.0.4 (Оbsolete, LMDB compatible) 2018-09-21
Release of the stable/0.0
branch, which contains legacy code that compatible to original LMDB API.
Corresponds to LMDB v0.9.22, but NOT includes all fixes from libmdbx mainstream, for instance this fix for cursor state after a deletion.
Changes since 0.0.2 2018-07-15
:
- prevent DB corruption due LMDB-inherited rebalance bug (fixed in the
master
branch and 0.2.x). - minor doc fixes (ITS#8908 and ITS#8857).
Changes since 0.0.2 2018-05-04
:
- add
fallthrough
for modern GCC and CLang. - add include
<sys/sysmacros.h>
for modern GNU libc. - migrate to Circle-CI 2.0
- update Project Status in the README.
Fixes since 0.0.1 2017-08-12
(corresponds to LMDB v0.9.21):
- fix wrong
freeDB
search (LMDB still flawed). - fix directly usage fakepage
mp_ptrs[]
(ITS#8819). - fix regression (ITS#8760).
- fix
FIRST_DUP
/LAST_DUP
cursor bounds check (ITS#8722).
Fixes since 0.0.0 2017-07-04
:
0.0.3 (Оbsolete, LMDB compatible) 2018-07-15
Release of the stable/0.0 branch, which contains legacy code that compatible to original LMDB API.
Corresponds to LMDB v0.9.22, but NOT includes all fixes from libmdbx mainstream, for instance this fix for cursor state after a deletion.
Changes since 0.0.2 2018-05-04
:
- add
fallthrough
for modern GCC and CLang. - add include
<sys/sysmacros.h>
for modern GNU libc. - migrate to Circle-CI 2.0
- update Project Status in the README.
Fixes since 0.0.1 2017-08-12
(corresponds to LMDB v0.9.21):
- fix wrong
freeDB
search (LMDB still flawed). - fix directly usage fakepage
mp_ptrs[]
(ITS#8819). - fix regression (ITS#8760).
- fix
FIRST_DUP
/LAST_DUP
cursor bounds check (ITS#8722).
Fixes since 0.0.0 2017-07-04
:
0.1.5 2018-06-14
New features and Compatibility breaking since stable0.0
:
- Incompatible with v0.0.x (
stable/0.0
branch) and with original/obsolete LMDB. - Identical database format for 32- and 64-bit builds.
- Dynamically DB file size (growth/shrink) and
mdbx_env_set_geometry()
. - Support for Elbrus architecture.
- Support for Windows (2008 and later, MSVC 2013 and later).
Fixes since 0.1.4 2018-05-04
:
- MAJOR: force steady-sync when shrinking DB.
- windows: disable non-blocking DB-close.
- minor: skip meta if usedbytes beyond EOF.
- minor: return
MDBX_CORRUPTED
instead of crash ifMDBX_DUPSORT
mismatch.
Fixes since 0.1.3 2018-04-03
:
- MAJOR: fix wrong
freeDB
search. - windows: fix
lck_reader_alive_check()
.
Fixes since 0.1.2 2018-03-22
:
- MAJOR: fix/rework
rthc
to avoid GNU libc ntpl bug. - minor: fix cursor tracking inside
mdbx_rebalance()
. - minor: fix
mdbx_cursor_put(MDBX_APPEND+MDBX_NOOVERWRITE)
returnMDBX_KEYEXIST
instead ofMDBX_EKEYMISMATCH
.
Fixes since 0.1.1 2018-03-14
:
- minor: fix/rework cache-line alignment.
- minor: fix unaligned access to
mp_ptrs[]
on fake-page. - minor: lookup suitable
txnid
for rollback to avoid meta-pages clashes. - tool: rework/fix read-write mode inside
mdbx_chk
. - minor: fix minor memleak (Coverity).
- minor: add workaround for Elbrus's libc bug.
Fixes since 0.1.0 2018-03-07
:
- minor: fix missing
MDBX_DEVEL=1
.
0.1.4 2018-05-04
New features and Compatibility breaking since stable0.0
:
- Incompatible with v0.0.x (
stable/0.0
branch) and with original/obsolete LMDB. - Identical database format for 32- and 64-bit builds.
- Dynamically DB file size (growth/shrink) and
mdbx_env_set_geometry()
. - Support for Elbrus architecture.
- Support for Windows (2008 and later, MSVC 2013 and later).
Fixes since 0.1.3 2018-04-03
:
- MAJOR: fix wrong
freeDB
search. - windows: fix
lck_reader_alive_check()
.
Fixes since 0.1.2 2018-03-22
:
- MAJOR: fix/rework
rthc
to avoid GNU libc ntpl bug. - minor: fix cursor tracking inside
mdbx_rebalance()
. - minor: fix
mdbx_cursor_put(MDBX_APPEND+MDBX_NOOVERWRITE)
returnMDBX_KEYEXIST
instead ofMDBX_EKEYMISMATCH
.
Fixes since 0.1.1 2018-03-14
:
- minor: fix/rework cache-line alignment.
- minor: fix unaligned access to
mp_ptrs[]
on fake-page. - minor: lookup suitable
txnid
for rollback to avoid meta-pages clashes. - tool: rework/fix read-write mode inside
mdbx_chk
. - minor: fix minor memleak (Coverity).
- minor: add workaround for Elbrus's libc bug.
Fixes since 0.1.0 2018-03-07
:
- minor: fix missing
MDBX_DEVEL=1
.
0.0.2 2018-05-04
Release of the stable/0.0 branch, which contains legacy code that compatible to original LMDB API.
Corresponds to LMDB v0.9.22, but NOT includes all fixes from libmdbx mainstream, for instance this fix for cursor state after a deletion.
Fixes since 0.0.1 2017-08-12
(corresponds to LMDB v0.9.21):
- fix wrong
freeDB
search (LMDB still flawed). - fix directly usage fakepage
mp_ptrs[]
(ITS#8819). - fix regression (ITS#8760).
- fix
FIRST_DUP
/LAST_DUP
cursor bounds check (ITS#8722).
Fixes since 0.0.0 2017-07-04
:
0.1.3 2018-04-03
New features and Compatibility breaking since stable0.0
:
- Incompatible with v0.0.x (
stable/0.0
branch) and with original/obsolete LMDB. - Identical database format for 32- and 64-bit builds.
- Dynamically DB file size (growth/shrink) and
mdbx_env_set_geometry()
. - Support for Elbrus architecture.
- Support for Windows (2008 and later, MSVC 2013 and later).
Fixes since 0.1.2 2018-03-22
:
- MAJOR: fix/rework
rthc
to avoid GNU libc ntpl bug. - minor: fix cursor tracking inside
mdbx_rebalance()
. - minor: fix
mdbx_cursor_put(MDBX_APPEND+MDBX_NOOVERWRITE)
returnMDBX_KEYEXIST
instead ofMDBX_EKEYMISMATCH
.
Fixes since 0.1.1 2018-03-14
:
- minor: fix/rework cache-line alignment.
- minor: fix unaligned access to
mp_ptrs[]
on fake-page. - minor: lookup suitable
txnid
for rollback to avoid meta-pages clashes. - tool: rework/fix read-write mode inside
mdbx_chk
. - minor: fix minor memleak (Coverity).
- minor: add workaround for Elbrus's libc bug.
Fixes since 0.1.0 2018-03-07
:
- minor: fix missing
MDBX_DEVEL=1
.