Vendored libmdbx moves from v0.14.2 (530d0265, 2026-05-14) to the v0.14.3 "Китов" (Kitov) release (2026-08-09). No Go API changes — the only source edits are one constant remapping and Godoc.
Data-loss and hang fixes
- Copy without compaction produced a copy without payload. In v0.14.2 a non-compacting
mdbx_env_copybuilt the destination meta-pages from the empty model — the source tree roots and geometry were never carried over — so the copy opened cleanly and read as an empty database. Verified fixed here: a fill/copy/re-read probe overMDBX_CP_DEFAULTSandMDBX_CP_FORCE_DYNAMIC_SIZEround-trips the full payload, where the same probe read an empty database against v0.14.2. - Lost table content after aborting a nested transaction that dropped the table.
- Infinite loop in
mdbx_txn_abort()from amemcmp()/memcpy()typo. env_owned_wrtxn()bypassed locking underMDBX_NOSTICKYTHREADS— the mode mdbx-go always sets.- Major typo in
latch_maindb_locked(); missingreturnon an error path inmdbx_cursor_bind().
Spilling and cursors
Fixes concentrated in large write transactions: committing a pure nested transaction that has spilled pages; leak of the spilled-pages list on nested-transaction abort; tracking and invalidation of the inner part of sibling cursors; the cursor stack reworked around a page stash; spilling and accounting corrected for MDBX_AVOID_MSYNC=ON.
Leaks
mach_port_t in mdbx_get_sysraminfo(), Windows section handle in osal_mresize(), table name in dbi_open_locked(), cond_pair in copy_with_compacting().
Windows
ERROR_LOCK_VIOLATION during defrag in overlapped-I/O modes; lost global init and TLS destructors in MinGW static builds; /experimental:c11atomics workaround plus a compile-time guard against wrong MSVC codegen for C11 atomics on non-x86.
Go side
NoTLSnow maps toMDBX_NOSTICKYTHREADS. libmdbx removed the deprecatedMDBX_NOTLSalias, superseded byMDBX_NOSTICKYTHREADSsince 0.13. The constant staysDeprecated, keeps the same value and keeps existing callers compiling — preferNoStickyThreads.Env.Opennow documents a deadlock risk. As of libmdbx 0.14.x the env functions that need the writer lock but take no txn —SetFlags,SetOption,SetGeometry,Sync/SyncForce/SyncPoll,Stat/Info(nil),Close— acquire that lock when the calling goroutine does not own the in-flight write transaction. mdbx-go always setsNoStickyThreads, so calling one of them from a goroutine the writer is waiting on can deadlock. Make such calls from the writer's own goroutine, or while no write transaction is running.Env.SyncGodoc no longer namesMapAsync, an upstream-removed alias mdbx-go never exposed.
mdbx_replace_ex() changed upstream to return only previous data, never new — mdbx-go does not bind it.
Full changelog: v0.42.0...v0.43.0