Releases: WANDEX/algorithms
0.1.0
Huge overhaul using wndx::sane lib cmake modules:
Much of the cmake project configuration code has been abstracted
and placed into appropriate reusable cmake modules of wndx::sane lib.
namespace wndx -> wndx::algo
dev build script heavily overhauled - build.sh -> wndx_cmake_build.sh:
- use of more flexible getopt approach instead of positional arguments.
- improved script structure, readability, more obvious project defaults.
- test existence of the script dependencies - git-bash shell/GNU utilities.
[cicd_cmake_multi_platform.yml]
- improve job strategy matrix.
- extract git tag annotation for release body text
- WNDX_ALGO_MEMCHECK_ENABLE=ON -> memcheck step cmake --target memcheck
default memcheck utility per platform:
- use Xcode leaks util on macOS
- use drmemory on Windows
- use valgrind on Linux
- use of drmemory tool can be forced on all platforms (drmemory is cross-platform).
cache memcheck dependencies in local dir with:
- install from source valgrind
- install libc6-dbg (valgrind dep)
- install drmemory from source or via winget
NOTES drmemory:
- drmemory install occupies to much space in cache - 434 Mb.
- drmemory require parent dirs with other DynamoRIO project dependencies.
- Whole drmemory install dir must be cached, not only bin64.
- Thus currently in CICD workflow, drmemory is installed via winget without local caching.
- Currently on win11/windows-2025 drmemory not works - Dr. Memory internal crash at PC *.
NOTES wndx::algo::gen:
fix: win10 drmemory errors related to std::random_device
"UNADDRESSABLE ACCESS: reading" & "WARNING: writing to readonly memory".
fixed via deterministic seeding without std::random_device specifically
on the MSC/WIN32 compiler/platform. -> WNDX_ALGO_FIXED_SEED=1
WNDX_MSC - non cryptographic randomness via chrono time_since_epoch() used by default.
drmemory complained because of the SH*TTY WIN random_* implementation:
BCryptGenRandom, CryptGenRandom, etc.
After wasting 20 days total on this issue! I conclude the following.
That the Windows & MSC should not be used for anything serious
and especially something related to cryptography and random numbers
generation.
Earlier those errors felt like a false positives.
Now I think that drmemory detected and points onto unsafe implementation
of cryptography related code in MSC implementation of the std
and specifically onto the proprietary system libraries (DLL).
Full Changelog: v0.0.1.1...0.1.0
v0.0.1.1
minor: added git hook scripts to automate repetative work (pre-push hook with: md tree & coverage upd).
Full Changelog: v0.0.1.0-rc1...v0.0.1.1
v0.0.1.0-rc1
initial release