Lëshimi i libmdbx 0.13.2 (MDBX) është publikuar, duke zbatuar një bazë të dhënash me vlera kyçe të ngulitura kompakte me performancë të lartë. Kodi libmdbx shpërndahet nën licencën Apache 2.0. Mbështeten të gjitha sistemet operative dhe arkitekturat aktuale, si dhe rusishtja Elbrus 2000. libmdbx ofron një API të zhvilluar për C++, si dhe lidhje të mbështetura nga entuziastët për gjuhët Rust, Haskell, Python, NodeJS, Ruby, Go, Nim , Deno, Scala.
Historikisht, libmdbx është një ripërpunim i thellë i LMDB DBMS dhe është superior ndaj paraardhësit të tij në besueshmërinë, grupin e veçorive dhe performancën. Krahasuar me LMDB, libmdbx i kushton shumë theks cilësisë së kodit, stabilitetit të API, testimit dhe kontrolleve të automatizuara. Ofrohet një mjet për kontrollimin e integritetit të strukturës së bazës së të dhënave me disa aftësi rikuperimi. Për sa i përket teknologjisë, libmdbx ofron ACID, serializimin e fortë të ndryshimeve dhe lexime pa bllokim me shkallëzim linear nëpër bërthamat e CPU. Mbështetet kompaktimi automatik, menaxhimi automatik i madhësisë së bazës së të dhënave dhe vlerësimi i pyetjeve të gamës.
Ndryshimet kryesore:
- Përshpejtoni përditësimin e GC kur kthehen/vendosni listat e faqeve në skenarë komplekse. Modaliteti i komenteve korrigjuese eksperimentale të çaktivizuar më parë është përmirësuar dhe aktivizuar. Kjo ka përmirësuar thelbësisht konvergjencën (reduktuar numrin e riprovave) dhe gjithashtu ka eliminuar një defekt që çon në "looping" gjatë kryerjes së transaksioneve (me kthimin e gabimit MDBX_PROBLEM) në kushte të rralla specifike.
- Skriptet e ndërtimit të CMake përfshijnë standardin C23.
- U shtuan makro T për funksionet e çiftuara char/wchar_t.
- Mbështetje e shtuar për transaksionet e shkrimit të mbivendosur në API të C++.
- Ka përfunduar kalimi në edicionin e dytë të specifikimit të versionit semantik ("Versioni Semantik 2") dhe është siguruar eksportimi i informacionit të versionit në VERSION.json.
- Për riprodhueshmërinë e ndërtimit, shtoi mbështetje për variablin e mjedisit SOURCE_DATE_EPOCH. Mbështetja MDBX_BUILD_TIMESTAMP ruhet dhe kjo variabël ka përparësi.
- U shtua aftësia për të specifikuar informacion shtesë në lidhje me ndërtimin e libmdbx nëpërmjet opsionit MDBX_BUILD_METADATA. Tani informacioni i specifikuar thjesht përfshihet brenda bibliotekës si vlera mdbx_build.metadata, dhe në të ardhmen do të përdoret gjithashtu gjatë krijimit të paketave, etj.
- Regjistrimi i shtuar i gabimeve të kthyera nga API. Tani, për ta bërë këtë, mjafton të vendosni nivelin e regjistrimit MDBX_LOG_DEBUG (për gabimet e regjistrimit minus MDBX_NOTFOUND) ose MDBX_LOG_TRACE (për regjistrimin e të gjitha gabimeve, si dhe MDBX_RESULT_TRUE).
- Ndryshimi i Sjelljes:
- U shtua metoda mdbx::cursor::get_multiple_samelength() dhe u riemërua mdbx::txn::put_multiple_samelength().
- Për konsistencën e API-së në C++, operacioni MDBX_GET_MULTIPLE tani kthen gjithashtu vlerën e vetë çelësit.
- Për konstantat e madhësisë mdbx::env::gjeometri, lloji bazë është ndryshuar nga size_t i panënshkruar në intptr_t i nënshkruar.
- Zgjedhja për të përdorur ntdll në vend të CRT bëhet tani vetëm kur çaktivizon në mënyrë të qartë API-në C++.
- Siguron që kujtesa e transaksioneve të leximit të ndërprera/të ndërprera të kaluara te mdbx_txn_commit() të lirohet. Konventa API kërkon që transaksione të tilla të lëshohen duke përdorur mdbx_txn_abort(), gjë që bën që mdbx_txn_commit() të kthejë një gabim në raste të tilla pa ndërprerë vetë transaksionet. Kjo rezultoi në rrjedhje të kujtesës për shkak të gabimeve në aplikacione, duke shkaktuar ndryshime në sjellje.
- Përdorimi i makros __deprecated_enum nëse përcaktohet.
- Kur ndërtohet me CMake, standardi i gjuhës C tani zgjidhet bazuar në CMAKE_C_STANDARD.
Burimi: opennet.ru
