11<!-- Required extensions: pymdownx.betterem, pymdownx.tilde, pymdownx.emoji, pymdownx.tasklist, pymdownx.superfences -->
22
3+ > Please refer to the online [ official libmdbx documentation site] ( https://libmdbx.dqdkfa.ru )
4+ > with [ ` C ` API description] ( https://libmdbx.dqdkfa.ru/group__c__api.html )
5+ > and pay attention to the [ ` C++ ` API] ( https://gitflic.ru/project/erthink/libmdbx/blob?file=mdbx.h%2B%2B#line-num-1 ) .
6+
7+ > Questions, feedback and suggestions are welcome to the [ Telegram' group] ( https://t.me/libmdbx ) (archive [ 1] ( https://libmdbx.dqdkfa.ru/tg-archive/messages1.html ) ,
8+ > [ 2] ( https://libmdbx.dqdkfa.ru/tg-archive/messages2.html ) , [ 3] ( https://libmdbx.dqdkfa.ru/tg-archive/messages3.html ) , [ 4] ( https://libmdbx.dqdkfa.ru/tg-archive/messages4.html ) ,
9+ > [ 5] ( https://libmdbx.dqdkfa.ru/tg-archive/messages5.html ) , [ 6] ( https://libmdbx.dqdkfa.ru/tg-archive/messages6.html ) , [ 7] ( https://libmdbx.dqdkfa.ru/tg-archive/messages7.html ) ).
10+ > See the [ ChangeLog] ( https://gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md ) for ` NEWS ` and latest updates.
11+
12+ > Donations are welcome to the Ethereum/ERC-20 ` 0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A ` .
13+ > Всё будет хорошо!
14+
315libmdbx
416========
517
@@ -26,44 +38,32 @@ tree](https://en.wikipedia.org/wiki/B%2B_tree).
2638[ WAL] ( https://en.wikipedia.org/wiki/Write-ahead_logging ) , but that might
2739be a caveat for write-intensive workloads with durability requirements.
2840
29- 4 . Enforces [ serializability] ( https://en.wikipedia.org/wiki/Serializability ) for
41+ 4 . ** Compact and friendly for fully embedding** . Only ≈25KLOC of ` C11 ` ,
42+ ≈64K x86 binary code of core, no internal threads neither server process(es),
43+ but implements a simplified variant of the [ Berkeley
44+ DB] ( https://en.wikipedia.org/wiki/Berkeley_DB ) and
45+ [ dbm] ( https://en.wikipedia.org/wiki/DBM_(computing) ) API.
46+
47+ 5 . Enforces [ serializability] ( https://en.wikipedia.org/wiki/Serializability ) for
3048writers just by single
3149[ mutex] ( https://en.wikipedia.org/wiki/Mutual_exclusion ) and affords
3250[ wait-free] ( https://en.wikipedia.org/wiki/Non-blocking_algorithm#Wait-freedom )
3351for parallel readers without atomic/interlocked operations, while
3452** writing and reading transactions do not block each other** .
3553
36- 5 . ** Guarantee data integrity** after crash unless this was explicitly
54+ 6 . ** Guarantee data integrity** after crash unless this was explicitly
3755neglected in favour of write performance.
3856
39- 6 . Supports Linux, Windows, MacOS, Android, iOS, FreeBSD, DragonFly, Solaris,
57+ 7 . Supports Linux, Windows, MacOS, Android, iOS, FreeBSD, DragonFly, Solaris,
4058OpenSolaris, OpenIndiana, NetBSD, OpenBSD and other systems compliant with
4159** POSIX.1-2008** .
4260
43- 7 . ** Compact and friendly for fully embedding** . Only ≈25KLOC of ` C11 ` ,
44- ≈64K x86 binary code of core, no internal threads neither server process(es),
45- but implements a simplified variant of the [ Berkeley
46- DB] ( https://en.wikipedia.org/wiki/Berkeley_DB ) and
47- [ dbm] ( https://en.wikipedia.org/wiki/DBM_(computing) ) API.
48-
4961<!-- section-end -->
5062
51- Historically, _ libmdbx_ is a deeply revised and extended descendant of the legendary
63+ Historically, _ libmdbx_ is a deeply revised and extended descendant of the amazing
5264[ Lightning Memory-Mapped Database] ( https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database ) .
5365_ libmdbx_ inherits all benefits from _ LMDB_ , but resolves some issues and adds [ a set of improvements] ( #improvements-beyond-lmdb ) .
5466
55- [ ![ Telergam: Support | Discussions | News] ( https://img.shields.io/endpoint?color=scarlet&logo=telegram&label=Support%20%7C%20Discussions%20%7C%20News&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Flibmdbx )] ( https://t.me/libmdbx )
56-
57- > Please refer to the online [ documentation] ( https://libmdbx.dqdkfa.ru )
58- > with [ ` C ` API description] ( https://libmdbx.dqdkfa.ru/group__c__api.html )
59- > and pay attention to the [ ` C++ ` API] ( https://gitflic.ru/project/erthink/libmdbx/blob?file=mdbx.h%2B%2B#line-num-1 ) .
60- > Donations are welcome to the Ethereum/ERC-20 ` 0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A ` .
61- > Всё будет хорошо!
62-
63- Telegram Group archive: [ 1] ( https://libmdbx.dqdkfa.ru/tg-archive/messages1.html ) ,
64- [ 2] ( https://libmdbx.dqdkfa.ru/tg-archive/messages2.html ) , [ 3] ( https://libmdbx.dqdkfa.ru/tg-archive/messages3.html ) , [ 4] ( https://libmdbx.dqdkfa.ru/tg-archive/messages4.html ) ,
65- [ 5] ( https://libmdbx.dqdkfa.ru/tg-archive/messages5.html ) , [ 6] ( https://libmdbx.dqdkfa.ru/tg-archive/messages6.html ) , [ 7] ( https://libmdbx.dqdkfa.ru/tg-archive/messages7.html ) .
66-
6767## Github
6868
6969### на Русском (мой родной язык)
@@ -125,7 +125,8 @@ of the database. All fundamental architectural problems of libmdbx/LMDB
125125have been solved there, but now the active development has been
126126suspended for top-three reasons:
127127
128- 1 . For now _ libmdbx_ mostly enough and I’m busy for scalability.
128+ 1 . For now _ libmdbx_ «mostly» enough for all [ our products] ( https://www.ptsecurity.com/ww-en/products/ ) ,
129+ and I’m busy in development of replication for scalability.
1291302 . Waiting for fresh [ Elbrus CPU] ( https://wiki.elbrus.ru/ ) of [ e2k architecture] ( https://en.wikipedia.org/wiki/Elbrus_2000 ) ,
130131especially with hardware acceleration of [ Streebog] ( https://en.wikipedia.org/wiki/Streebog ) and
131132[ Kuznyechik] ( https://en.wikipedia.org/wiki/Kuznyechik ) , which are required for Merkle tree, etc.
@@ -550,9 +551,9 @@ Of course, in addition to this, your toolchain must ensure the reproducibility o
550551For more information please refer to [ reproducible-builds.org] ( https://reproducible-builds.org/ ) .
551552
552553#### Containers
553- There are no special traits nor quirks if you use _ libmdbx _ ONLY inside
554- the single container. But in a cross-container(s) or with a host-container(s)
555- interoperability cases the three major things MUST be guaranteed:
554+ There are no special traits nor quirks if you use libmdbx ONLY inside the single container.
555+ But in a cross-container cases or with a host-container(s) mix the two major things MUST be
556+ guaranteed:
556557
5575581 . Coherence of memory mapping content and unified page cache inside OS
558559kernel for host and all container(s) operated with a DB. Basically this
@@ -568,12 +569,6 @@ in the system memory.
568569 including ` ERROR_ACCESS_DENIED ` ,
569570 but not the ` ERROR_INVALID_PARAMETER ` as for an invalid/non-existent PID.
570571
571- 3 . The versions/builds of _ libmdbx_ and ` libc ` /` pthreads ` (` glibc ` , ` musl ` , etc) must be be compatible.
572- - Basically, the ` options: ` string in the output of ` mdbx_chk -V ` must be the same for host and container(s).
573- See ` MDBX_LOCKING ` , ` MDBX_USE_OFDLOCKS ` and other build options for details.
574- - Avoid using different versions of ` libc ` , especially mixing different implementations, i.e. ` glibc ` with ` musl ` , etc.
575- Prefer to use the same LTS version, or switch to full virtualization/isolation if in doubt.
576-
577572#### DSO/DLL unloading and destructors of Thread-Local-Storage objects
578573When building _ libmdbx_ as a shared library or use static _ libmdbx_ as a
579574part of another dynamic library, it is advisable to make sure that your
0 commit comments