Paglabas ng naka-embed na DBMS libmdbx 0.13.2

Na-publish ang release ng libmdbx 0.13.2 (MDBX), na nagpapatupad ng high-performance na compact na naka-embed na key-value database. Ang libmdbx code ay ipinamahagi sa ilalim ng Apache 2.0 na lisensya. Sinusuportahan ang lahat ng kasalukuyang operating system at arkitektura, pati na rin ang Russian Elbrus 2000. Nag-aalok ang libmdbx ng binuong API para sa C++, pati na rin ang mga binding na sinusuportahan ng mahilig sa mga wikang Rust, Haskell, Python, NodeJS, Ruby, Go, Nim , Deno, Scala.

Sa kasaysayan, ang libmdbx ay isang malalim na reworking ng LMDB DBMS at mas mataas kaysa sa ninuno nito sa pagiging maaasahan, set ng tampok at pagganap. Kung ikukumpara sa LMDB, binibigyang-diin ng libmdbx ang kalidad ng code, katatagan ng API, pagsubok, at mga awtomatikong pagsusuri. Ang isang utility para sa pagsuri sa integridad ng istraktura ng database na may ilang mga kakayahan sa pagbawi ay ibinibigay. Marunong sa teknolohiya, nag-aalok ang libmdbx ng ACID, malakas na pagbabago ng serialization, at hindi nakaharang na mga pagbabasa na may linear scaling sa mga CPU core. Ang auto-compactification, awtomatikong pamamahala ng laki ng database, at pagtatantya ng query sa hanay ay sinusuportahan.

Pangunahing pagbabago:

  • Pabilisin ang pag-update ng GC kapag nagbabalik/naglalagay ng mga listahan ng page sa mga kumplikadong sitwasyon. Ang dating na-disable na experimental corrective feedback mode ay napabuti at na-activate. Sa panimula nitong pinabuting convergence (nabawasan ang bilang ng mga muling pagsubok), at inalis din ang isang depekto na humantong sa "pag-loop" kapag gumagawa ng mga transaksyon (kasama ang pagbabalik ng error sa MDBX_PROBLEM) sa mga bihirang partikular na kundisyon.
  • Kasama sa mga script ng build ng CMake ang pamantayang C23.
  • Nagdagdag ng mga T-macros para sa ipinares na char/wchar_t function.
  • Nagdagdag ng suporta para sa mga nested write transaction sa C++ API.
  • Ang paglipat sa ikalawang edisyon ng semantic versioning specification (“Semantic Versioning 2”) ay nakumpleto na at ang pag-export ng impormasyon ng bersyon sa VERSION.json ay natiyak.
  • Para sa muling paggawa ng build, nagdagdag ng suporta para sa variable ng kapaligiran ng SOURCE_DATE_EPOCH. Ang suporta sa MDBX_BUILD_TIMESTAMP ay pinananatili at ang variable na ito ay nangunguna.
  • Nagdagdag ng kakayahang tumukoy ng karagdagang impormasyon tungkol sa libmdbx build sa pamamagitan ng opsyong MDBX_BUILD_METADATA. Ngayon ang tinukoy na impormasyon ay isinama lang sa loob ng library bilang halaga ng mdbx_build.metadata, at sa hinaharap ay gagamitin din ito kapag lumilikha ng mga pakete, atbp.
  • Idinagdag ang pag-log ng mga error na ibinalik mula sa API. Ngayon, upang gawin ito, sapat na upang itakda ang antas ng pag-log MDBX_LOG_DEBUG (para sa mga error sa pag-log minus MDBX_NOTFOUND) o MDBX_LOG_TRACE (para sa pag-log ng lahat ng mga error, pati na rin ang MDBX_RESULT_TRUE).
  • Pagbabago sa Gawi:
    • Idinagdag ang paraan ng mdbx::cursor::get_multiple_samelength() at pinalitan ang pangalan ng mdbx::txn::put_multiple_samelength().
    • Para sa pagkakapare-pareho ng C++ API, ibinabalik na ngayon ng operasyon ng MDBX_GET_MULTIPLE ang halaga ng mismong susi.
    • Para sa mdbx::env::geometry size constants, ang base type ay binago mula sa unsigned size_t tungo sa signed intptr_t.
    • Ang pagpili na gumamit ng ntdll sa halip na CRT ay ginagawa lamang kapag tahasang hindi pinapagana ang C++ API.
    • Tinitiyak na ang memorya ng mga aborted/aborted read transactions na ipinasa sa mdbx_txn_commit() ay malaya. Ang API convention ay nangangailangan na ang mga naturang transaksyon ay i-release gamit ang mdbx_txn_abort(), na nagiging sanhi ng mdbx_txn_commit() na magbalik ng error sa mga ganitong kaso nang hindi ina-abort ang mga transaksyon mismo. Nagresulta ito sa mga pagtagas ng memory dahil sa mga bug sa mga application, na nag-udyok sa mga pagbabago sa pag-uugali.
    • Gamit ang __deprecated_enum macro kung tinukoy.
    • Kapag nagtatayo gamit ang CMake, ang pamantayan ng wikang C ay pinili na ngayon batay sa CMAKE_C_STANDARD.

Pinagmulan: opennet.ru

Magdagdag ng komento