Ăshte publikuar versioni i bibliotekĂ«s libmdbx 0.13.2 (MDBX) me implementimin e njĂ« baze tĂ« dhĂ«nash tĂ« integruar tĂ« klasĂ«s çelĂ«s-vlerĂ« me performancĂ« tĂ« lartĂ«. Kodi i libmdbx shpĂ«rndahet nĂ«n licencĂ«n Apache 2.0. MbĂ«shteten tĂ« gjitha sistemet operative dhe arkitekturat aktuale, si dhe Elbrusi rus 2000. PĂ«r libmdbx ofrohet njĂ« API e 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ë ripunim i thellë i DBMS LMDB dhe tejkalon paraardhësin e tij në besueshmëri, gamën e mundësive dhe performancën. Krahasuar me LMDB, libmdbx i kushton vëmendje të madhe cilësisë së kodit, qëndrueshmërisë së API, testimit dhe verifikimeve automatike. Ofron një mjet për verifikimin e integritetit të strukturës së DB me disa mundësi rikuperimi. Teknologjikisht, libmdbx ofron ACID, serializim të rreptë të ndryshimeve dhe lexim jo bllokues me shkallëzim linear sipas njësive CPU. Mbështetet auto-kompaktifikimi, menaxhimi automatik i madhësisë së DB, dhe vlerësimi i volumit të kërkesave në intervale (range query estimation).
Ndryshimet kryesore:
- PĂ«rmirĂ«simi i GC Ă«shtĂ« pĂ«rshpejtuar gjatĂ« kthimit/jeshjes sĂ« listave tĂ« faqeve nĂ« skenarĂ« tĂ« ndĂ«rlikuar. ĂshtĂ« pĂ«rmirĂ«suar dhe aktivizuar njĂ« regjim eksperimental korrigjues qĂ« ishte deaktivizuar mĂ« parĂ«. Kjo ka pĂ«rmirĂ«suar ndjeshĂ«m konvergjencĂ«n (ka reduktuar numrin e pĂ«rpjekjeve tĂ« pĂ«rsĂ«ritura) dhe gjithashtu ka eliminuar njĂ« defekt qĂ« shkakton 'ngĂ«rç' gjatĂ« konvertimit tĂ« transaksioneve (me kthim tĂ« gabimit MDBX_PROBLEM) nĂ« kushte tĂ« rralla specifike.
- Në skenaret e ndërtimit CMake është përfshirë standardi C23.
- T-makro janë shtuar për funksionet çift char/wchar_t.
- Në API-në C++ është shtuar mbështetje për transaksionet shkruese të shumta të ngjashme.
- ĂshtĂ« realizuar kalimi nĂ« edicionin e dytĂ« tĂ« specifikimit tĂ« versionimit semantik ('Semantic Versioning 2') dhe Ă«shtĂ« siguruar eksporti i informacionit rreth versionit nĂ« VERSION.json.
- Për të siguruar riprodhueshmërinë e ndërtimeve, është shtuar mbështetje për variablën e mjedisit SOURCE_DATE_EPOCH. Mbështetja për MDBX_BUILD_TIMESTAMP është ruajtur dhe kjo variablë ka përparësi.
- ĂshtĂ« shtuar mundĂ«sia pĂ«r tĂ« specifikuar informacion tĂ« shtuar rreth ndĂ«rtimit tĂ« libmdbx nĂ«pĂ«rmjet opsionit MDBX_BUILD_METADATA. Tani informacioni i dhĂ«nĂ« thjesht pĂ«rfshihet brenda bibliotekĂ«s si vlera mdbx_build.metadata, dhe mĂ« vonĂ« do tĂ« pĂ«rdoret gjithashtu gjatĂ« formimit tĂ« paketave etj.
- ĂshtĂ« shtuar regjistrimi i gabimeve qĂ« kthehen nga API. Tani pĂ«r kĂ«tĂ« mjafton tĂ« caktoni nivelin e regjistrimit MDBX_LOG_DEBUG (pĂ«r regjistrimin e gabimeve pĂ«rveç MDBX_NOTFOUND) ose MDBX_LOG_TRACE (pĂ«r regjistrimin e tĂ« gjitha gabimeve, si dhe MDBX_RESULT_TRUE).
- Ndryshimi i sjelljes:
- Ăshte shtuar metoda mdbx::cursor::get_multiple_samelength() dhe e renomihet mdbx::txn::put_multiple_samelength().
- Për njëtrajtshmërinë e API-së C++ gjatë kryerjes së operacionit MDBX_GET_MULTIPLE tani gjithashtu kthehet vlera e vetë çelësit.
- Për konstantet dimensionale mdbx::env::geometry, tipi bazë është ndryshuar nga size_t pa shenjë në intptr_t me shenjë.
- Zgjedhja për përdorimin e ntdll në vend të CRT tani bëhet vetëm kur C++ API është shprehimisht çaktivizuar.
- Garantohet lirimi i memories nga transaksionet e leximit të anuluara / të ndërprera që dërgohen në mdbx_txn_commit(). Marrëveshja e API kërkon që këto transaksione të lirohen nëpërmjet mdbx_txn_abort(), duke shkaktuar që funksioni mdbx_txn_commit() të kthejë një gabim në këto raste, pa shkatërruar vetë transaksionet. Kjo çoi në rrjedhje memories për shkak të gabimeve në aplikacione, që nxitën ndryshimin e sjelljes.
- Përdorimi i makros __deprecated_enum, nëse është i përcaktuar.
- Gjatë ndërtimit përmes CMake, zgjedhja e standardit të gjuhës C tani bëhet në përputhje me CMAKE_C_STANDARD.
Burimi: opennet.ru
