mdbx: release v0.9.2
Acknowledgements:
-----------------
- Jens Alfke (Mobile Architect at [Couchbase](https://www.couchbase.com/)) for [NimDBX](https://github.com/snej/nimdbx).
- Clément Renault (CTO at [MeiliSearch](https://www.meilisearch.com/)) for [mdbx-rs](https://github.com/Kerollmops/mdbx-rs).
- Alex Sharov (Go-Lang Teach Lead at [TurboGeth/Ethereum](https://ethereum.org/)) for an extreme test cases and bug reporting.
- George Hazan (CTO at [Miranda NG](https://www.miranda-ng.org/)) for bug reporting.
- [Positive Technologies](https://www.ptsecurity.com/) for funding and [The Standoff](https://standoff365.com/).
Added features:
---------------
- Provided package for [buildroot](https://buildroot.org/).
- Binding for Nim is [available](https://github.com/snej/nimdbx) now by Jens Alfke.
- Added `mdbx_env_delete()` for deletion an environment files in a proper and multiprocess-safe way.
- Added `mdbx_txn_commit_ex()` with collecting latency information.
- Fast completion pure nested transactions.
- Added `LIBMDBX_INLINE_API` macro and inline versions of some API functions.
- Added `mdbx_cursor_copy()` function.
- Extended tests for checking cursor tracking.
- Added `MDBX_SET_LOWERBOUND` operation for `mdbx_cursor_get()`.
Fixes:
------
- Fixed missing installation of `mdbx.h++`.
- Fixed use of obsolete `__noreturn`.
- Fixed use of `yield` instruction on ARM if unsupported.
- Added pthread workaround for buggy toolchain/cmake/buildroot.
- Fixed use of `pthread_yield()` for non-GLIBC.
- Fixed use of `RegGetValueA()` on Windows 2000/XP.
- Fixed use of `GetTickCount64()` on Windows 2000/XP.
- Fixed opening DB on a network shares (in the exclusive mode).
- Fixed copy&paste typos.
- Fixed minor false-positive GCC warning.
- Added workaround for broken `DEFINE_ENUM_FLAG_OPERATORS` from Windows SDK.
- Fixed cursor state after multimap/dupsort repeated deletes (https://github.com/erthink/libmdbx/issues/121).
- Added `SIGPIPE` suppression for internal thread during `mdbx_env_copy()`.
- Fixed extra-rare `MDBX_KEY_EXIST` error during `mdbx_commit()` (https://github.com/erthink/libmdbx/issues/131).
- Fixed spilled pages checking (https://github.com/erthink/libmdbx/issues/126).
- Fixed `mdbx_load` for 'plain text' and without `-s name` cases (https://github.com/erthink/libmdbx/issues/136).
- Fixed save/restore/commit of cursors for nested transactions.
- Fixed cursors state in rare/special cases (move next beyond end-of-data, after deletion and so on).
- Added workaround for MSVC 19.28 (Visual Studio 16.8) (but may still hang during compilation).
- Fixed paranoidal Clang C++ UB for bitwise operations with flags defined by enums.
- Fixed large pages checking (for compatibility and to avoid false-positive errors from `mdbx_chk`).
- Added workaround for Wine (https://github.com/miranda-ng/miranda-ng/issues/1209).
- Fixed `ERROR_NOT_SUPPORTED` while opening DB by UNC pathnames (https://github.com/miranda-ng/miranda-ng/issues/2627).
- Added handling `EXCEPTION_POSSIBLE_DEADLOCK` condition for Windows.
TODO for v0.9.3:
----------------
- Engage new terminology (https://github.com/erthink/libmdbx/issues/137).
- Rework/speedup the implementation of the dirty page list (lazy compactification, lazy sorting via merge).
- Resolve few TODOs (https://github.com/erthink/libmdbx/issues/123, https://github.com/erthink/libmdbx/issues/124, https://github.com/erthink/libmdbx/issues/127, https://github.com/erthink/libmdbx/issues/128, https://github.com/erthink/libmdbx/issues/132, https://github.com/erthink/libmdbx/issues/115).
- Finalize C++ API (few typos and trivia bugs are still likely for now).
- Packages for ROSA Linux, ALT Linux, Fedora/RHEL, Debian/Ubuntu.
Change-Id: I1f0ac4505052f169e36b326243e5d56497b9c037
Signed-off-by: Leonid Yuriev <leo@yuriev.ru>
2020-11-27 15:09:03 +08:00
|
|
|
version: 0.9.2.{build}
|
2017-04-04 20:42:30 +08:00
|
|
|
|
|
|
|
environment:
|
|
|
|
matrix:
|
2020-08-23 01:19:46 +08:00
|
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
|
|
|
CMAKE_GENERATOR: Visual Studio 14 2015
|
|
|
|
TOOLSET: 140
|
2019-08-31 22:13:02 +08:00
|
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
|
|
CMAKE_GENERATOR: Visual Studio 16 2019
|
|
|
|
TOOLSET: 142
|
2019-10-24 18:01:58 +08:00
|
|
|
MDBX_BUILD_SHARED_LIBRARY: OFF
|
|
|
|
MDBX_AVOID_CRT: OFF
|
|
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
|
|
CMAKE_GENERATOR: Visual Studio 16 2019
|
|
|
|
TOOLSET: 142
|
|
|
|
MDBX_BUILD_SHARED_LIBRARY: ON
|
|
|
|
MDBX_AVOID_CRT: ON
|
|
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
|
|
CMAKE_GENERATOR: Visual Studio 16 2019
|
|
|
|
TOOLSET: 142
|
|
|
|
MDBX_BUILD_SHARED_LIBRARY: OFF
|
|
|
|
MDBX_AVOID_CRT: ON
|
|
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
|
|
CMAKE_GENERATOR: Visual Studio 16 2019
|
|
|
|
TOOLSET: 142
|
|
|
|
MDBX_BUILD_SHARED_LIBRARY: ON
|
|
|
|
MDBX_AVOID_CRT: OFF
|
2017-07-06 02:40:18 +08:00
|
|
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
2019-08-31 22:13:02 +08:00
|
|
|
CMAKE_GENERATOR: Visual Studio 15 2017
|
|
|
|
TOOLSET: 141
|
2017-03-29 06:11:33 +08:00
|
|
|
|
2017-07-22 03:51:56 +08:00
|
|
|
branches:
|
|
|
|
except:
|
|
|
|
- coverity_scan
|
|
|
|
|
2017-03-29 06:11:33 +08:00
|
|
|
configuration:
|
2017-07-06 02:40:18 +08:00
|
|
|
- Debug
|
2020-09-14 08:48:59 +08:00
|
|
|
# MSVC-2019 hangs during code generation/optimization due to its own internal errors.
|
|
|
|
# I have found out that the problem occurs because of the /Ob2 option (see https://github.com/erthink/libmdbx/issues/116).
|
|
|
|
# So the simplest workaround is to using RelWithDebiInfo configuration for testing (cmake will uses /Ob1 option), instead of Release.
|
|
|
|
# - Release
|
|
|
|
- RelWithDebInfo
|
2017-07-06 02:40:18 +08:00
|
|
|
|
|
|
|
platform:
|
2019-08-31 22:13:02 +08:00
|
|
|
- Win32
|
2018-09-14 19:10:36 +08:00
|
|
|
- x64
|
2017-03-29 06:11:33 +08:00
|
|
|
|
2020-09-08 01:49:40 +08:00
|
|
|
# MSVC-2019 may hang up during code generation/optimization due to its own internal errors.
|
|
|
|
matrix:
|
|
|
|
allow_failures:
|
|
|
|
- image: Visual Studio 2019
|
|
|
|
configuration: Release
|
|
|
|
|
|
|
|
# Enable RDP for troubleshooting
|
|
|
|
init:
|
|
|
|
- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
|
|
|
|
2019-08-31 22:13:02 +08:00
|
|
|
before_build:
|
2019-10-24 18:01:58 +08:00
|
|
|
- git clean -x -f -d
|
2019-08-31 22:13:02 +08:00
|
|
|
- git submodule sync
|
|
|
|
- git fetch --tags --prune
|
|
|
|
- git submodule update --init --recursive
|
|
|
|
- git submodule foreach --recursive git fetch --tags --prune
|
|
|
|
- cmake --version
|
2017-03-29 06:11:33 +08:00
|
|
|
|
2019-08-31 22:13:02 +08:00
|
|
|
build_script:
|
2017-03-30 23:54:57 +08:00
|
|
|
- ps: |
|
2019-08-31 22:13:02 +08:00
|
|
|
Write-Output "*******************************************************************************"
|
|
|
|
Write-Output "Configuration: $env:CONFIGURATION"
|
|
|
|
Write-Output "Platform: $env:PLATFORM"
|
|
|
|
Write-Output "Toolchain: $env:CMAKE_GENERATOR v$env:TOOLSET"
|
2019-10-24 18:01:58 +08:00
|
|
|
Write-Output "Options: MDBX_AVOID_CRT=$env:MDBX_AVOID_CRT MDBX_BUILD_SHARED_LIBRARY=$env:MDBX_BUILD_SHARED_LIBRARY"
|
2019-08-31 22:13:02 +08:00
|
|
|
Write-Output "*******************************************************************************"
|
|
|
|
|
|
|
|
md _build -Force | Out-Null
|
|
|
|
cd _build
|
|
|
|
|
|
|
|
$generator = $env:CMAKE_GENERATOR
|
|
|
|
if ($env:TOOLSET -lt 142) {
|
|
|
|
if ($env:PLATFORM -eq "x64") {
|
|
|
|
$generator = "$generator Win64"
|
|
|
|
}
|
2020-09-14 08:48:59 +08:00
|
|
|
& cmake -G "$generator" -D CMAKE_CONFIGURATION_TYPES="Debug;Release;RelWithDebInfo" -D MDBX_AVOID_CRT:BOOL=$env:MDBX_AVOID_CRT -D MDBX_BUILD_SHARED_LIBRARY:BOOL=$env:MDBX_BUILD_SHARED_LIBRARY ..
|
2017-07-06 02:40:18 +08:00
|
|
|
} else {
|
2020-09-14 08:48:59 +08:00
|
|
|
& cmake -G "$generator" -A $env:PLATFORM -D CMAKE_CONFIGURATION_TYPES="Debug;Release;RelWithDebInfo" -DMDBX_AVOID_CRT:BOOL=$env:MDBX_AVOID_CRT -D MDBX_BUILD_SHARED_LIBRARY:BOOL=$env:MDBX_BUILD_SHARED_LIBRARY ..
|
2017-07-06 02:40:18 +08:00
|
|
|
}
|
2019-08-31 22:13:02 +08:00
|
|
|
if ($LastExitCode -ne 0) {
|
|
|
|
throw "Exec: $ErrorMessage"
|
|
|
|
}
|
|
|
|
Write-Output "*******************************************************************************"
|
|
|
|
|
|
|
|
& cmake --build . --config $env:CONFIGURATION
|
|
|
|
if ($LastExitCode -ne 0) {
|
|
|
|
throw "Exec: $ErrorMessage"
|
|
|
|
}
|
|
|
|
Write-Output "*******************************************************************************"
|
2017-07-06 02:40:18 +08:00
|
|
|
|
2019-08-31 22:13:02 +08:00
|
|
|
test_script:
|
|
|
|
- ps: |
|
|
|
|
if (($env:PLATFORM -ne "ARM") -and ($env:PLATFORM -ne "ARM64")) {
|
2019-10-02 06:21:41 +08:00
|
|
|
& ./$env:CONFIGURATION/mdbx_test.exe --progress --console=no --pathname=test.db --dont-cleanup-after basic > test.log
|
|
|
|
Get-Content test.log | Select-Object -last 42
|
2019-08-31 22:13:02 +08:00
|
|
|
if ($LastExitCode -ne 0) {
|
|
|
|
throw "Exec: $ErrorMessage"
|
|
|
|
} else {
|
2019-09-01 21:53:11 +08:00
|
|
|
& ./$env:CONFIGURATION/mdbx_chk.exe -nvv test.db | Tee-Object -file chk.log | Select-Object -last 42
|
2019-08-31 22:13:02 +08:00
|
|
|
}
|
2017-04-11 04:34:59 +08:00
|
|
|
}
|
2017-04-25 00:03:38 +08:00
|
|
|
|
2017-04-25 23:30:31 +08:00
|
|
|
on_failure:
|
2019-10-28 01:55:29 +08:00
|
|
|
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\test.log
|
|
|
|
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\test.db
|
|
|
|
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\chk.log
|