Lanzamiento de la base de datos embebida libmdbx 0.13.2

Se ha publicado la versión de la biblioteca libmdbx 0.13.2 (MDBX) con la implementación de una base de datos incrustada de alto rendimiento y compacta de tipo clave-valor. El código de libmdbx se distribuye bajo la licencia Apache 2.0. Se admiten todos los sistemas operativos y arquitecturas actuales, así como el ruso Elbrus 2000. Para libmdbx se ofrece una API avanzada para C++, además de enlaces soportados por entusiastas a los lenguajes Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, y Scala.

Históricamente, libmdbx es una profunda reestructuración de la base de datos LMDB y supera a su predecesor en fiabilidad, conjunto de funciones y rendimiento. En comparación con LMDB, libmdbx presta especial atención a la calidad del código, al funcionamiento estable de la API, a las pruebas y a las verificaciones automáticas. Se incluye una utilidad de verificación de la integridad de la estructura de la base de datos con algunas capacidades de recuperación. Tecnológicamente, libmdbx ofrece ACID, estricta serialización de cambios y lectura no bloqueante con escalabilidad lineal en núcleos de CPU. Soporta la autocompactación, la gestión automática del tamaño de la base de datos y la estimación del volumen de las muestras por rangos (estimación de consultas de rango).

Principales cambios:

  • Se ha acelerado la actualización del GC al devolver/o insertar listas de páginas en escenarios complejos. Se ha mejorado y activado un modo experimental de retroalimentación correctiva previamente deshabilitado. Esto ha mejorado fundamentalmente la convergencia (reduciendo el número de reintentos), y se ha eliminado un defecto que provocaba un 'bucle' al fijar transacciones (con retorno del error MDBX_PROBLEM) en condiciones específicas raras.
  • Se ha incluido el estándar C23 en los scripts de construcción CMake.
  • Se han añadido macros T para funciones pareadas char/wchar_t.
  • Se ha añadido el soporte para transacciones de escritura anidadas en la API de C++.
  • Se ha realizado la transición a la segunda edición de la especificación de versionado semántico ('Semantic Versioning 2') y se ha asegurado la exportación de información sobre la versión en VERSION.json.
  • Para la reproducibilidad de las construcciones se ha añadido el soporte para la variable de entorno SOURCE_DATE_EPOCH. Se ha mantenido el soporte para MDBX_BUILD_TIMESTAMP y esta variable tiene prioridad.
  • Se ha añadido la posibilidad de especificar información adicional sobre la construcción de libmdbx a través de la opción MDBX_BUILD_METADATA. Actualmente, la información proporcionada se incluye dentro de la biblioteca como valor de mdbx_build.metadata, y más adelante también se usará al formar paquetes, etc.
  • Se ha añadido registro de errores devueltos de la API. Ahora, para ello, es suficiente establecer el nivel de registro MDBX_LOG_DEBUG (para registrar errores excepto MDBX_NOTFOUND) o MDBX_LOG_TRACE (para registrar todos los errores, así como MDBX_RESULT_TRUE).
  • Cambio de comportamiento:
    • Se ha añadido el método mdbx::cursor::get_multiple_samelength() y se ha renombrado mdbx::txn::put_multiple_samelength().
    • Para uniformidad de la API de C++, al realizar la operación MDBX_GET_MULTIPLE, también se devuelve el valor de la clave misma.
    • Para las constantes de tamaño, el tipo base de mdbx::env::geometry se ha cambiado de size_t sin signo a intptr_t con signo.
    • La elección de usar ntdll en lugar de CRT ahora se realiza solo al deshabilitar explícitamente la API de C++.
    • Se aseguró la liberación de memoria de las transacciones de lectura que fueron canceladas/interrumpidas, que se pasan a mdbx_txn_commit(). El acuerdo de API requiere que tales transacciones se liberen mediante mdbx_txn_abort(), lo que causaba que la función mdbx_txn_commit() devolviera un error en tales casos sin destruir las transacciones mismas. Esto conducía a fugas de memoria debido a errores en aplicaciones, lo que llevó a cambiar el comportamiento.
    • Uso del macro __deprecated_enum, si está definido.
    • Al compilar con CMake, ahora se selecciona el estándar del lenguaje C teniendo en cuenta CMAKE_C_STANDARD.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster