Ukukhishwa kwe-DBMS eshumekiwe libmdbx 0.13.2

Ukukhishwa kwe-libmdbx 0.13.2 (MDBX) kushicilelwe, kusetshenziswa isizindalwazi senani lokhiye olusebenza ngokuhlangene oluqinile. Ikhodi ye-libmdbx isatshalaliswa ngaphansi kwelayisensi ye-Apache 2.0. Zonke izinhlelo zokusebenza zamanje nezakhiwo ziyasekelwa, kanye ne-Russian Elbrus 2000. i-libmdbx inikeza i-API ethuthukisiwe ye-C++, kanye nezibopho ezisekelwa umshisekeli ezilimini ezithi Rust, Haskell, Python, NodeJS, Ruby, Go, Nim , Deno, Scala.

Ngokomlando, i-libmdbx iwukusebenza kabusha okujulile kwe-LMDB DBMS futhi iphakeme kunokhokho wayo ngokwethembeka, ukusetha izici nokusebenza. Uma kuqhathaniswa ne-LMDB, i-libmdbx igcizelela kakhulu ikhwalithi yekhodi, ukuzinza kwe-API, ukuhlola, nokuhlola okuzenzakalelayo. Isisetshenziswa sokuhlola ubuqotho besakhiwo sesizindalwazi esinamakhono athile okubuyisela siyanikezwa. Ngokusebenzisa ubuchwepheshe, i-libmdbx inikeza i-ACID, ukuguqulwa okuqinile kwe-serialization, nokufunda okungavimbeli okunomugqa wokukala kuwo wonke ama-CPU cores. Ukuhlanganisa okuzenzakalelayo, ukuphathwa kosayizi wesizindalwazi okuzenzakalelayo, kanye nesilinganiso semibuzo yobubanzi kuyasekelwa.

Izinguquko eziyinhloko:

  • Sheshisa isibuyekezo se-GC lapho ubuyisela/ubeka uhlu lwamakhasi ezimeni eziyinkimbinkimbi. Imodi yempendulo yokulungisa yokuhlola eyayikhutshazwe ngaphambilini iye yathuthukiswa futhi yenziwa yasebenza. Lokhu kuhlangana okuthuthuke kakhulu (inani lokuzama futhi liyehliswa), futhi kuphinde kwasusa iphutha eliholele “ekungeneni” lapho kwenziwa izinkokhelo (ngokubuyiselwa kwephutha le-MDBX_PROBLEM) ezimeni ezithile ezingavamile.
  • Izikripthi zokwakha ze-CMake zihlanganisa izinga le-C23.
  • Kwengezwe ama-T-macros wemisebenzi ebhanqiwe ye-char/wchar_t.
  • Kungezwe usekelo lwemisebenzi yokubhala efakwe esidlekeni ku-C++ API.
  • Ukushintshela kuhlelo lwesibili lwencazelo ye-semantic (“Semantic Versioning 2”) kuqediwe futhi ukuthunyelwa kolwazi lwenguqulo ku-VERSION.json kuqinisekisiwe.
  • Ukuze ukhiqize kabusha ukwakha, usekelo olungeziwe lokuhlukahluka kwemvelo kwe-SOURCE_DATE_EPOCH. Usekelo lwe-MDBX_BUILD_TIMESTAMP lugciniwe futhi lokhu kuhluka kuza kuqala.
  • Kwengezwe amandla okucacisa ulwazi olwengeziwe mayelana nokwakhiwa kwe-libmdbx ngenketho ye-MDBX_BUILD_METADATA. Manje ulwazi olushiwo luvele lufakwe ngaphakathi kwelabhulali njengevelu ye-mdbx_build.metadata, futhi ngokuzayo luzophinda lusetshenziswe lapho kwakhiwa amaphakheji, njll.
  • Kungezwe amaphutha amaphutha abuyiswe kusukela ku-API. Manje, ukwenza lokhu, kwanele ukusetha izinga lokungena MDBX_LOG_DEBUG (kumaphutha okungena kukhishwe MDBX_NOTFOUND) noma MDBX_LOG_TRACE (yokungena kuwo wonke amaphutha, kanye ne-MDBX_RESULT_TRUE).
  • Ukushintsha ukuziphatha:
    • Kwengezwe indlela ye-mdbx::cursor::get_multiple_samelength() futhi iqanjwe kabusha ngokuthi mdbx::txn::put_multiple_samelength().
    • Ngokuvumelana kwe-C++ API, umsebenzi we-MDBX_GET_MULTIPLE manje futhi ubuyisela inani lokhiye ngokwawo.
    • Ku-mdbx::env::usayizi wejometri ongaguquki, uhlobo lwesisekelo lushintshiwe kusukela ku-size_t ongasayiniwe ukuya ku-intptr_t esayiniwe.
    • Ukukhetha ukusebenzisa i-ntdll esikhundleni se-CRT manje sekwenziwa kuphela lapho kukhutshazwa ngokucacile i-C++ API.
    • Iqinisekisa ukuthi inkumbulo yemisebenzi efundiwe ehoxisiwe/ehoxisiwe edluliselwe ku-mdbx_txn_commit() ikhululiwe. Isivumelwano se-API sidinga ukuthi imisebenzi enjalo ikhululwe kusetshenziswa mdbx_txn_abort(), okubangela ukuthi mdbx_txn_commit() ubuyisele iphutha ezimeni ezinjalo ngaphandle kokuhoxisa ukukhokha ngokwazo. Lokhu kubangele ukuvuza kwenkumbulo ngenxa yeziphazamisi kuzinhlelo zokusebenza, okudala izinguquko zokuziphatha.
    • Ukusebenzisa i-__deprecated_enum macro uma kuchaziwe.
    • Uma wakha nge-CMake, izinga lolimi C manje selikhethiwe ngokusekelwe ku-CMAKE_C_STANDARD.

Source: opennet.ru

Engeza amazwana