libmdbx 0.11.7 (MDBX) á á¬ááŒáá·áºááá¯ááºááᯠá áœááºážáá±á¬ááºáááºááŒáá·áº áá»á áºáá áºááááºáááºážá áœá¬ ááá·áºááœááºážáá¬ážáá±á¬ áá±á¬á·áááºááá¯ážáá±áá¬áá±á·á áºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááŒáá·áº áá¯ááºáá±áá²á·áááºá libmdbx áá¯ááºááᯠOpenLDAP Public License á¡á±á¬ááºááœáẠááá¯ááºá ááºááá¬ážáááºá áááºááŸááááºáááºááŸá¯á áá áºáá»á¬ážááŸáá·áº áááá¯áá¬áááºáá¬áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá¶á·ááá¯ážáá¬ážááŒá®áž áá¯ááŸá¬áž Elbrus 2000 ááá¯áááºáž áá¶á·ááá¯ážáá¬ážáááºá
15 áá¯ááŸá Ạá§ááŒá®á 2022 áááºá á§ááŒá®á 404 áááºáá±á· áá±á¬ááºááá¯ááºážááœáẠGitHub á¡á¯ááºáá»á¯ááºáá±ážá០ááá±á¬áá»ááºááᯠGitFlic áááºáá±á¬ááºááŸá¯ááá¯á· ááŒá±á¬ááºážááœáŸá±á·ááŒááºážá¡ááœáẠááááá±ážáá»áẠááá¯á·ááá¯áẠááŸááºážááŒáá»ááºáááŸááá² libmdbx ááᯠáá»ááºááá¯ááºáᬠá¡ááŒá¬ážááá±á¬áá»ááºáá»á¬ážá áœá¬ááŸáá·áºá¡áá° áááºá ááºáá±á¬á·ááºáá²áá±ážáá¬ážáá°á¡áá»á¬ážá¡ááŒá¬ážáᶠáááºáá±á¬ááºááœáá·áºááᯠáááŒáá¯ááºáááºáž ááááºááá¯á·áá¬ážá áẠáá¯áá¹ááá®áá»á¬ážááẠá¡áá±áááááºá áááºáááºááááºááá¯á·ááŸá¯ááᯠáá¶áá±ááŒááááºá á¡áá¯á¶ážááŒá¯áá°áá»á¬ážá ááŸá¯áá±á¬áá·áºááŸááŒáá·áºáá»áŸáẠá á¬áá»ááºááŸá¬áá»á¬ážá¡á¬ážáá¯á¶ážá ááá±á¬áá»ááºá ááá¯ááŸá±á¬ááºááŸá¯ááŸáá·áº áááºáááºážáá»á¬ážááẠáááºááœááºáá±ážááŸáá·áº á¡ááŒá±á¬ááºážáááºážáá»á¬ážááᯠááŸá¬ááœá±ááŒááºážáááŒá¯áá² XNUMX á á¬áá»ááºááŸá¬ááá¯á· áá¯ááºáááẠááŒá±á¬ááºážáá²ááœá¬ážáááºá
áá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá á¡áá±ážá áááºá¡ááŒá±áá»á¬ážáá«ááŸááá±á¬ áá±ážááœááºážáá»á¬ážá áœá¬ááŸááá²á·ááá·áº ááŒá¿áá¬á¡á¬ážáá¯á¶ážáá®ážáá«ážááŸá¬ áá¯á¶ážááŸá¯á¶ážááœá¬ážáá²á·áá«áááºá á€á¡áá»ááºá¡ááẠáá¯á¶ážááŸá¯á¶ážááŒááºážááẠGitHub á á®áá¶á¡á¯ááºáá»á¯ááºááŸá¯ ááá±á¬áá»ááºááᯠááááá¯ááºá á±ááá·áº áá áºáá¯áááºážáá±á¬ áááºááŸááºážáá»áẠáá»ááºá á®ážááŸá¯ááŒá áºáááºá ááœá±ážááœá±ážááŸá¯áá»á¬ážá áá áºá áááºáá áºááá¯ááºážáááá¹áá°áá»á¬ážááᯠarchive.org ááœáẠáááŸáááá¯ááºáá«áááºá
áááºáá±á¬ááºáá¬ážáá±á¬ CI á¡ááŒá±á¡áá±áá»á¬ážááŸáá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá»á¬áž áá¯á¶ážááŸá¯á¶ážááŒááºáž (OpenSource ááá±á¬áá»ááºáá»á¬ážá¡ááœáẠá¡ááá²á·áááŸáááá¯ááºáááº) ááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž ááŒááºáááºááŒááºáááºááŒááºážá áá±á«ááºážá ááºážááŒááºážááŸáá·áº áááºážááá¬ááá¯ááºáá¬ááŒáœá±ážááŒá®á¡áá±ážá á¬ážáá»á¬ážááᯠáááºááŸá¬ážááŒááºážááá¯á·ááᯠáá¯ááºáá±á¬ááºááẠááœááºážá¡á¬ážáá±ážáá²á·áááºá ááá¯á¡áá« BSD ááŸáá·áº Solaris áá»áá¯ážááœá²á¡á¬ážáá¯á¶ážá¡ááœáẠáááºáá±á¬ááºááŒá®áž á ááºážáááºááŸá¯áá»á¬ážááŸááœá²á CI ááẠáá°áá®áá±á¬á¡ááá¯ááºážá¡áá¬á¡áá ááŒááºáááºááá°áá¬ážáá«áááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŒá®ážáá±á¬ááºá GitHub ááẠááœá±áá±ážáá»á±ááŸá¯ááŸáá·áº ááœá±ááŸááºážááẠááŒáá¯ážáááºážááŸá¯áá»á¬ážá¡ááŒá±á¬ááºáž ááááá±ážáá»ááºáá»á¬ážááŸááœá²á áááºááá·áº ááŸááºážáááºážáá»áẠááá¯á·ááá¯áẠá¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬ážááá¯áá»áŸ ááááŸááá²á·áá«á
libmdbx v0.11.3 ááá±á¬ááºáá¯á¶ážááœááºááááºážááŒá áºááá·áº GitHub áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá០ááŒááºáááºááá°ááŒááºážá¡ááŒáẠá¡á±á¬ááºáá«ááá¯ážáááºááŸá¯áá»á¬ážááŸáá·áº ááŒááºáááºááŸá¯áá»á¬ážááᯠáááááŒá¯ááá·áºáá«áááºá
- áá±á«ááºážá
ááºá
á¬áá»ááºááŸá¬ááŸáá·áº Linux kernel ááŸá ááŒá¬ážáᶠáááºááŸáºááœáẠááœá±á·ááŸááá±á¬ áá®ááœááºááŸá¯áááŸááá±á¬ á¡áá»áá¯ážáááºáá±á¬ááºááŸá¯/áá»áá¯á·ááœááºážáá»ááºá¡ááœáẠááŒá±ááŸááºážáááºážáá
áºáá¯ááᯠáá±á«ááºážááá·áºáá¬ážáááºá á
á¬áá»ááºááŸá¬ááŸáá·áº ááŒá¬ážáá¶áááºááŸáºáá»á¬ážááᯠá¡ááŸááºáááẠáá±á«ááºážá
ááºáá¬ážááá·áº á
áá
áºáá»á¬ážááœááºá ááŸááºáá¬ááºááœáẠáá¯á¶áá±á¬áºááŒá®ážáá¬áž ááá¯ááºáá
áºáá¯ááá¯á· á
á¬áá±ážááá·áºá¡áá« áá±áá¬áááá¹áá°ááŸá
áºá
á±á¬ááºá¡ááœáẠkernel ááẠááŸááºáá¬ááºááᯠááŒá¯ááºážáá®ážáá±áááºááá¯ááºáá±á ááá¯á·ááŒá±á¬áá·áºá áá±áá¬ááᯠdisk ááá¯á·ááá±ážááá±ážááá·áºááá¯áẠwrite() á
áá
áºáá±á«áºááá¯ááŸá¯ áááŒá®ážáá®ááœáẠmemory mapping ááŒáá·áº áá±ážáá¬ážáá¬ážáá±á¬ áá±áá¬ááᯠááŒááºááá¯ááºáááºá
áá±áá¯áá»á¡á¬ážááŒáá·áºá á¡ááŒá¬ážá¡ááŒá¯á¡áá°áá»á¬ážááẠáá»áá¯ážááŒá±á¬ááºážáá®áá»á±á¬áºááŸá¯áááŸááá«á ááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ áá±á«ááºážá ááºážááŸá¯ááŸáá·áºá¡áá°á á á¬áá»ááºááŸá¬á á¬áááºážáá»á¬ážá¡ááœáẠáá±á¬á·áááºááŸá¯áá»á¬ážááá°áááºá áá±áá¬ááᯠáá°ážáá°ááẠááá¯á·ááá¯áẠPTE áá»áááºááŸáááẠááá¯á¡ááºáá±áá±ážáááºá ááá¯á·ááŒá±á¬áá·áºá SRV1989 ááœáẠáá±á«ááºážá ááºážáá¬ážáá±á¬ ááŒá¬ážáá¶áááºááŸáº áá±á«áºáá¬áá±á¬á¡áá« á áá¬ážáááŒá±á¬ááá¯ááºáá±á¬ áá±á«ááºážá ááºá ááºážáá»ááºážááẠ4 ááááºážá á¡áááºáááºáá²á·áááºá ááá¯á·ááŒá±á¬áá·áº loaded libmdbx exploitation scenarios ááœáẠáá°ážáááºážáá±á¬ crashes áá»á¬ážááᯠááŸá¬ááœá±ááœá±á·ááŸáááẠá¡áá¯ááºáá»á¬ážá áœá¬ ááá¯á¡ááºáá«áááºá ááááŠážá áœá¬ ááŒá¿áá¬ááᯠáá»áá¯ážááœá¬ážáááºá ááá¯á·áá±á¬áẠáá°ááá»ááºáá»á¬ážá¡á¬áž á¡áááºááŒá¯áááºááŸáá·áº ááá¯ážáááºááŸá¯áá»á¬ážááᯠá ááºážáááºáááºá
áá»áá¯ážááœá¬ážááŒááºážááá¯ááºáᬠáá¬ááºáááºážá ááŸá¯ááºááœá±ážááŸá¯ááŸáá·áº áááá»ááŸá¯ááá¯á·ááŸááá±áá±á¬áºáááºáž ááŒá¿áá¬ááᯠá áááºáá»áá¯á¶ááŒááºá áœá¬ áá±á¬áºáá¯ááºááá¯ááºáááºá áá±áá á¶ááœáŸááºážáááºááŸááºááŒá®áž á áááºáá»áá¯á¶ááŒááºá áœá¬ áááºááŸá¬ážááá¯ááºááŒá®ááŒá áºááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· áá¯á¶ááŒááºá áááºáá»á áœá¬ ááŒá±á¬ááá¯ááºáá«áááºá ááá¯á·á¡ááŒááºá Erigon (Ethereum) á developer áá»á¬ážáá²á០áá áºáŠážá០ááŸá±á¬ááºááœááºážááá¹ááá¬ážá áááºáááºááŸá¯ááᯠá¡áááºááŒá¯áá²á·áááºá áááºážáááá á¹á ááœááºá á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážááœááºá áááá¯á¡ááºáá±á¬ á¡ááá¯ááºá¡áá¬á á áºáá±ážááŸá¯ááŒá±á¬áá·áº á¡áá¬á¡ááœááºááẠáá¯ááºáá¯ááºááŸá¯á¡ááŒá Ạá¡á áá»áá¯ážáá²á·áááºá
áá¯ááºáá¯ááºááŸá¯ááá±á¬áá»ááºáá»á¬ážááœáẠlibmdbx ááᯠáá»ááºáá»ááºááŒáá·áºááŒáá·áºá¡áá¯á¶ážááŒá¯ááŸá¯á¡ááŒá±á¡áá±ááœááºá áá¯á¶ááŒááºá áááºáá»ááá±á¬áááºáááºááŸá¯ááá¯áá±áá»á¬á á±áááºááŸá¬ bug ááá¯á·ááá¯áẠá¡ááºá¹áá«áááºááŸááááŸáááŸá¬ááœá±ááŒááºážááẠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº ááá¯á¡áá±ážááŒá®ážááŒá±á¬ááºáž áááááŒá¯ááá·áºááŒá®áž ááá¯ááá¯á·áá±á¬áá±á«ááºážá ááºááŸá¯ááᯠá¡á¬ážááá¯ážááá¯ááºááá¬ážá ááŸá¬ááœá±ááŸá¯á¡ááœááºáááºážáá«áááºá Linux kernel á¡ááœááºáž ááá®ááœááºáááŒááºáž á¡ááŒá±á¬ááºážá¡áááºážá ááá¯á·ááŒá±á¬áá·áºá á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá¯á¶ážá áœá²áá°áá»á¬ážááᯠááááá¯ááºááá¯ááºááá·áº ááŒá¿áá¬ááᯠááŒá±ááŸááºážááŒááºážá¡ááŒá±á¬ááºáž ááŒá±á¬áá±áá«áááºá
- API ááŸáá áºááá·áº ááŸáá·áº mdbx_copy utility ááŸá áºáá¯áá¯á¶ážá០á¡ááŒá¬ážáá±á¬ ááá¯ááºá áá áºááá¯á· áá±áá¬áá±á·á áºááᯠá¡áá±ážá áááºáááá·áºáá² áá°ážáá°ááŸá¯ áá°ááŒááºážáá¬áá±á¬á¡áá« EXDEV (Cross-device link) á¡ááŸá¬ážá¡ááœááºážááᯠáááºááŸá¬ážááá¯ááºáá«áááºá
- Kris Zyp ááẠDeno ááœáẠlibmdbx áá¶á·ááá¯ážááŸá¯ááᯠáá¯ááºáá±á¬ááºáá²á·áááºá Kai Wetlesen ááẠFedora á¡ááœáẠRPM áá¯ááºááá¯ážááŸá¯ááᯠáá®ááá¯ááºážáá¯ááºáá²á·áááºá David Bouyssié ááẠScala á¡ááœáẠááŸá±á¬ááºááŒáá¯ážáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá
- MDBX_opt_rp_augment_limit option á០áááºááŸááºáá¬ážáá±á¬ áááºááá¯ážá áá¯ááºáá±á¬ááºáá»ááºááẠááŒá®ážáá¬ážáá±á¬áá±áá¬áá±á·á áºáá»á¬ážááœáẠááŒá®ážáá¬ážáá±á¬ ááœá±áá±ážááœá±áá°áá»á¬ážááᯠáá¯ááºáá±á¬ááºáá±á¬á¡áá«ááœáẠáá¯á¶áá±áá¯ááºáá±á¬ááºááŒááºážá ááááºá á¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááŒá±á¬áá·áº Ethereum á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬áž (Erigon/Akula/Silkworm) ááŸáá·áº Binance Chain ááá±á¬áá»ááºáá»á¬ážááœáẠá áœááºážáá±á¬ááºáááºááᯠááááá¯ááºá á±ááá·áº áááá¯á¡ááºáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºáá²á·áááºá
- C++ API á¡áá«á¡ááẠáá»áá¯á·ááœááºážáá»ááºáá»á¬ážá áœá¬ááᯠááŒááºáááºááŒá®ážááŒá áºáááºá ááŸá¬ážáá«ážááŒá®áž áá°ážááŒá¬ážáááºážááŒá¬ážáá±á¬ áá¯á¶á á¶áá»á¬ážááŒáá·áº áááºáá±á¬ááºáá¬ážáá±á¬ ááŒá¿áá¬áá»á¬ážá áœá¬ááᯠááŒá±ááŸááºážáá²á·áááºá áááá¬áááºááŸá¬ážáá±á¬ááá¯ážáááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážáá á¬áááºážá¡ááŒáá·áºá¡á á¯á¶ááᯠChangeLog ááœááºáááá¯ááºáááºá
- ááá¯áẠáá áá¯ááœáẠááŒá±á¬ááºážáá²ááŸá¯ ááá áá¯á â185 ááá¯ááºážáá»á¬ážááá·áºáá²á·ááŒá®áž â89 ááᯠáá»ááºáá²á·áááºá GitHub ááŸáá·áº ááŸá®ááá¯áá±áá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº áááºá ááºáá±ááŒá®áž á¡áá¯á¶ážááááºáá±á¬ áááºážááá¬ááá¯ááºáá»á¬ážááᯠááŸááºážáááºážááŒááºážááŒá±á¬áá·áº á¡áááá¡á¬ážááŒáá·áº áá±á¬ááºáááºáá»á¬ážááᯠáááºááŸá¬ážááá¯ááºáá«áááºá
áááá¯ááºážááŒá±á¬ááºážá¡áá libmdbx ááẠLMDB DBMS á áááºáá²áá±á¬ ááŒááºáááºááŒá¯ááŒááºááŸá¯áá áºáá¯ááŒá áºááŒá®áž áá¯á¶ááŒááºá áááºáá»áááŸá¯á á¡ááºá¹áá«áááºááŸáá·áº á áœááºážáá±á¬ááºáááºáá»á¬ážááœáẠáááºážáááá¯ážáá±ážáá»á¬ážááẠáá¬ááœááºáááºá LMDB ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á libmdbx ááẠáá¯ááºá¡áááºá¡ááœá±ážá API áááºááŒáááºááŸá¯á á ááºážáááºááŸá¯ááŸáá·áº á¡ááá¯á¡áá»á±á¬áẠá á áºáá±ážááŸá¯áá»á¬ážááᯠá¡áá±ážáá±ážáá¬ážáááºá ááŒááºáááºááá°ááŒááºážá áœááºážáááºá¡áá»áá¯á·ááŸáá·áºá¡áá° áá±áá¬áá±á·á áºááœá²á·á ááºážáá¯á¶á ááá¯ááºáá¬ááŸá¯ááᯠá á áºáá±ážáááºá¡ááœáẠá¡áá¯á¶ážáááºááŸá¯áá áºáá¯ááᯠáá¶á·ááá¯ážáá±ážáá¬ážáááºá
áááºážááá¬á¡áá libmdbx ááẠACIDá ááŒááºážáááºáá±á¬ááŒá±á¬ááºážáá²ááŸá¯ á¡ááŸááºá ááºááŒá¯áá¯ááºááŒááºážááŸáá·áº CPU cores áá»á¬ážáá áºáá»áŸá±á¬áẠlinear scaling ááŒáá·áº ááááºááá¯á·ááŒááºážááá¯ááºáá±á¬ reads áá»á¬ážááᯠáá±ážáá«áááºá á¡ááá¯á¡áá»á±á¬áẠá á¯á ááºážááŸá¯á á¡ááá¯á¡áá»á±á¬áẠáá±áá¬áá±á·á Ạá¡ááœááºá¡á á¬áž á á®áá¶ááá·áºááœá²ááŸá¯ááŸáá·áº á¡ááá¯ááºážá¡ááŒá¬áž áá±ážááŒááºážááŸá¯ ááá·áºááŸááºážáá»ááºááá¯á·ááᯠáá¶á·ááá¯ážáá¬ážáááºá ááá±á¬áá»ááºááᯠ2016 áá¯ááŸá áºááááºážá Positive Technologies á០áááºáá¯á¶ááœá±áá¶á·ááá¯ážáá¬ážááŒá®áž 2017 áá¯ááŸá áºááááºážá áááºážááá¯ááºáá¯ááºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯áá²á·áááºá
libmdbx ááẠááœá¶á·ááŒáá¯ážááŒá®áž C++ API á¡ááŒáẠRust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala á
ááá·áº áá¬áá¬á
áá¬ážáá»á¬ážááŸáá·áº á
áááºá¡á¬ážáááºáááºáá±á¬ áá»áááºáááºááŸá¯áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
source: opennet.ru