diff options
Diffstat (limited to 'src/pmdk/ChangeLog')
-rw-r--r-- | src/pmdk/ChangeLog | 866 |
1 files changed, 866 insertions, 0 deletions
diff --git a/src/pmdk/ChangeLog b/src/pmdk/ChangeLog new file mode 100644 index 000000000..a56648424 --- /dev/null +++ b/src/pmdk/ChangeLog @@ -0,0 +1,866 @@ +Wed Oct 28 2020 Piotr Balcer <piotr.balcer@intel.com> + + * Version 1.10 + + This release introduces a new stable PMDK library, libpmem2, which + is the next major release of libpmem. + This library has an entirely new, but familiar, API that addresses many + shortcomings of the previous version, while retaining all of its + functionality. To learn more, see https://pmem.io/pmdk/libpmem2/ or + libpmem2(7). + The old library, libpmem, is still going to be maintained for the + foreseeable future, but we'd like to encourage any new applications to + leverage libpmem2. + +Wed Sep 16 2020 Piotr Balcer <piotr.balcer@intel.com> + + * Version 1.9.1 + + Detailed list of bug fixes: + - common: fix LIBFABRIC flags + - common: Add runtime SDS check and disable + - pool: disable SDS check if not supported + - obj: fix failure atomicity bug in huge allocs + - obj: add missing drain after ulog processing + +Fri Jul 3 2020 Piotr Balcer <piotr.balcer@intel.com> + + * Version 1.9 + + This release: + - Switches the default instruction set for memcpy, memmove and memset + implementations on x86 to AVX512, and introduces numerous performance + improvements for those operations on AVX and SSE2 fallback paths. + - Optimizes transactional allocations in libpmemobj by avoiding one + extraneous cache miss and reducing the amount of work required to perform + a reservation. + - Introduces a new API in libpmemobj, pmemobj_tx_set_failure_behavior, + that enables the application to control the behavior of aborting + transactions. + - Improves performance of pool creation on Windows by avoiding expensive + physical page allocation during file allocation. + - Stabilizes support for ppc64. + + Other changes: + - pmem: mem[cpy|set] optimization when eADR is available + - obj: detect msync failures in non-pmem variants of mem[cpy|move|set] + + Notable bug fixes: + - core: fix Last_errormsg_get when NO_LIBPTHREAD is defined + - pmem: read Unsafe Shutdown Count from region instead of interleave set + - common: fix deep_flushes failing on platforms that don't need them + - pmem: fix data cache flush on ppc64 + - obj: fix run allocated recalculation + +Fri Jan 31 2020 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.8 + + This release: + - Introduces new API in libpmemobj for user-assisted defragmentation + (see pmemobj_defrag man page for details). + - Introduces experimental support for PPC64LE architecture. + - Introduces new flag in libpmemobj for opting-out of transaction aborts + on failure (POBJ_TX_NO_ABORT), along with new variants of existing APIs + that didn't accept flags (pmemobj_tx_xfree, pmemobj_tx_xpublish, + pmemobj_tx_xlock, pmemobj_tx_xlog_append_buffer, pmemobj_tx_xstrdup, + pmemobj_tx_xwcsdup). + - Moves out libvmem and libvmmalloc to the new repository + (https://github.com/pmem/vmem). + + Other changes: + - obj: introduce new statistics useful for defrag + - obj: introduce transient/persistent statistics enabling + - obj: introduce pmemobj_tx_(set/get)_user_data funcs + - obj: introduce pmemobj_(set/get)_user_data funcs + - obj: disable workaround for offsetof() since VS 15.5 in public header + - common: drop support for libndctl < 63 on Linux + - pool: rename -N --no-exec to -d --dry-run + + Notable bug fixes: + - obj: fix zone size calculations + - obj: fix potential NULL-dereference in ulog_store + - obj: fix unintended recursive locking during palloc + - obj: fix lock release order in palloc publish + - obj: fix transient redo log of more than 64 entries + - obj: fix capacity ulog calculation + - obj: fix check of unaligned capacity size + - rpmem: add a missing case for GPSPM + FLUSH_STRICT + - pmem: fix pmemcheck support on platforms with eADR + - pool: fix possible memory leak + - rpmem: fix possible memory leak in rpmemd_config_read + - rpmem: fix possible memory leak in rpmemd_log_init + - rpmem: fix possible use-after-free + +Mon Sep 30 2019 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.7 + + This release: + - Introduces new APIs in libpmemobj for managing space used by transactions. + (see pmemobj_tx_log_append_buffer man page for details) + - Introduces new APIs in librpmem, splitting rpmem_persist into rpmem_flush + and rpmem_drain, allowing applications to use the flush + drain model + already known from libpmem. (libpmemobj does not use this feature yet) + - Optimizes large libpmemobj transactions by significantly reducing + the amount of memory modified at the commit phase. + - Optimizes tracking of libpmemobj reservations. + - Adds new flags for libpmemobj's pmemobj_tx_xadd_range[_direct] API: + POBJ_XADD_NO_SNAPSHOT and POBJ_XADD_ASSUME_INITIALIZED, allowing + applications to optimize how memory is tracked by the library. + + To support some of the above changes the libpmemobj on-media layout had + to be changed, which means that old pools have to be converted using + pmdk-convert >= 1.7. + + Other changes: + - obj: fix merging of ranges when NOFLUSH flag is used (pmem/issues#1100) + - rpmem: fix closing of ssh connection (pmem/issues#995, pmem/issues#1060) + - obj: abort transaction on pmemobj_tx_publish failure + + Internal changes: + - test: fault injection tests for pmemblk, pmemlog, and pmemobj + - test: improved Python testing framework + - test: support real pmem in bad blocks tests + - common: allow not building examples and benchmarks + +Tue Aug 27 2019 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.6.1 + + This release fixes possible pool corruptions on Windows + (see https://github.com/pmem/pmdk/pull/3728 for details), + improves compatibility with newer Linux kernels with + respect to Device DAX detection, fixes pmemobj space management + for large pools, improves compatibility with newer toolchains, + incorporates build fixes for FreeBSD and fixes a number of + smaller bugs. + + Detailed list of bug fixes: + - common: (win) fix possible pool file coruption (pmem/issues#972, + pmem/issues#715, pmem/issues#603) + - common: implement correct / robust device_dax_alignment + (pmem/issues#1071) + - obj: fix recycler not locating unused chunks + - doc: update pmemobj_tx_lock documentation wrt behavior on fail + - common: fix persistent domain detection (pmem/issues#1093) + - common: vecq: fix a pointer-to-struct aliasing violation + (crash on arm64) + - common: fix minor issues related to ndctl linking + - obj: drop recursion from pmemobj_next + - common: fix bug in badblock file error handling + - obj: fix handling of malloc failures + - common: fix handling of malloc failures (ctl) + - jemalloc: fix build with gcc 9 + - obj: don't overwrite errno when palloc_heap_check_remote fails + - doc: fix pmreorder emit log macro + - rpmem: change order of rpmem init (pmem/issues#1043) + - common: Fix build failure due to unused macro PAGE_SIZE + - common: support older versions of pkg-config + - tools: link with release variant of pmemcommon + - common: add PMDK prefix to local copy of queue.h (pmem/issues#990) + - rpmem: switch to using an open coded basename (FreeBSD) + - common: posix_fallocate: guard against integer underflow in + check (FreeBSD) + - test: support Valgrind 3.15 + - test: skip if fi_info is missing + - test: (win) fix sparsefile error handling + - test: fix libpmempool_feature tests that match logs + - test: remove vmem_delete test (pmem/issues#1074) + - test: adjust matchfiles in vmem_valgrind_region test (pmem/issues#1087) + - test: remove old log files for windows (pmem/issues#1013) + - test: remove invalid expect_normal_exit (pmem/issues#1092) + - test: suppress ld leak (pmem/issues#1098) + - test: Expose necessary symbols in libvmmalloc_dummy_funcs + (FreeBSD) + - test: fix tests failing because `tput` fails (FreeBSD) + - test: avoid obj_critnib_mt taking very long on many-core machines + - test: deal with libndctl's path without build system + - test: overwrite old log in pmempool_create/TEST14.PS1 + - test: fix match files in tests which use dax devices + - test: fix match file in rpmem_addr_ext test + - test: fix pmempool_check test + +Wed Aug 28 2019 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.5.2 + + This release fixes possible pool corruptions on Windows + (see https://github.com/pmem/pmdk/pull/3728 for details), + improves compatibility with newer Linux kernels with + respect to Device DAX detection, fixes pmemobj space management + for large pools, improves compatibility with newer toolchains + and fixes a number of smaller bugs. + + Detailed list of bug fixes: + - common: (win) fix possible pool file coruption (pmem/issues#972, + pmem/issues#715, pmem/issues#603) + - common: implement correct / robust device_dax_alignment + (pmem/issues#1071) + - obj: fix crash after large undo log recovery + - obj: fix recycler not locating unused chunks + - doc: update pmemobj_tx_lock documentation wrt behavior on fail + - common: fix build of rpm packages on suse (pmem/issues#1023) + - common: fix persistent domain detection (pmem/issues#1093) + - common: vecq: fix a pointer-to-struct aliasing violation + (crash on arm64) + - rpmem: lock file prior to unlink (pmem/issues#833) + - common: fix for pool_set error handling (pmem/issues#1036) + - pmreorder: fix handling of store drain flush drain pattern + - obj: fix possible memory leak in tx_add_lock + - pool: free bad_block vector + - common: fix bug in badblock file error handling + - obj: fix handling of malloc failures + - common: fix handling of malloc failures (ctl) + - jemalloc: fix build with gcc 9 + - obj: don't overwrite errno when palloc_heap_check_remote fails + - doc: fix typos in pmreorder configuration + - doc: fix pmreorder emit log macro + - tools: link with release variant of pmemcommon + - test: support Valgrind 3.15 + - test: skip if fi_info is missing + - test: split test obj_tx_lock into two test cases (pmem/issues#1027) + - test: (win) fix sparsefile error handling + - test: fix libpmempool_feature tests that match logs + - test: remove vmem_delete test (pmem/issues#1074) + - test: adjust matchfiles in vmem_valgrind_region test (pmem/issues#1087) + - test: remove old log files for windows (pmem/issues#1013) + - test: remove invalid expect_normal_exit (pmem/issues#1092) + - test: suppress ld leak (pmem/issues#1098) + - test: fix failing pmemdetect on Windows + - test: fix match files in tests which use dax devices + - test: fix pmempool_check test + +Fri Aug 30 2019 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.4.3 + + This release fixes possible pool corruptions on Windows + (see https://github.com/pmem/pmdk/pull/3728 for details) + and improves compatibility with newer Linux kernels with + respect to Device DAX detection. + + Bug fixes: + - common: (win) fix possible pool file coruption (pmem/issues#972, + pmem/issues#715, pmem/issues#603) + - common: implement correct / robust device_dax_alignment + (pmem/issues#1071) + - common: fix device dax detection + - obj: fix pmemobj_check for pools with some sizes (pmem/issues#975) + - obj: fix type numbers for pmemobj_list_insert_new + - obj: fix pmemobj_tx_lock error handling + - obj: fix possible memory leak in tx_add_lock + - common: fix ctl_load_config during libpmemobj initialization + (pmem/issues#917) + - common: win: fix getopt returning "option is ambiguous" + - common: fix persistent domain detection (pmem/issues#1093) + - pool: do not copy same regions in update_uuids + - test: split test obj_tx_lock into two test cases + - test: remove checking errno in obj_tx_add_range_direct + - test: remove invalid expect_normal_exit + - test: fix int overflow in pmem_deep_persist test + - test: fix pmempool_check test + - test: (win) fix a few issues related to long paths + +Tue Aug 27 2019 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.3.3 + Bug fixes: + - pmem: fix clflush bit position + - common: implement correct / robust device_dax_alignment + - common: fix device dax detection + - common: fix library dependencies (pmem/issues#767) + - common: use rpm-config CFLAGS/LDFLAGS when building packages + (pmem/issues#768) + - test: fix vmmalloc_malloc_hooks (pmem/issues#773) + - test: fix compilation with clang-5.0 (pmem/issues#783) + - pool: fix set convert of v3 -> v4 + - common: generate pkg-config files on make install + (pmem/issues#610) + - common: fix dependencies for Debian's dev packages + - test: add missing include in unittest.h + - common: (win) fix timed locks + - common: provide src version in GitHub tarballs + - common: fix free function in tls + +Tue Aug 27 2019 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.2.4 + Bug fixes: + - common: fix device dax detection (compatibility with newer kernels) + +Tue Mar 26 2019 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.6 + + This release: + - Enables unsafe shutdown and bad block detection on Linux + on systems with libndctl >= 63. It is expected that systems with + libndctl >= 63 has necessary kernel support (Linux >= 4.20). + However, due to bugs in libndctl = 63 and Linux = 4.20, it is + recommended to use libndctl >= 64.1 and Linux >= 5.0.4. + On systems with libndctl < 63, PMDK uses old superuser-only + interfaces. Support for old or new interfaces is chosen at BUILD + time. + - Introduces arena control interface in pmemobj, allowing applications + to tweak performance and scalability of heap operations. See + pmemobj_ctl_get man page ("heap" namespace) for details. + - Introduces copy_on_write mode, which allows testing applications + using pmemobj with pmreorder. See pmemobj_ctl_get man page + ("copy_on_write" namespace) for details. + + Other changes: + - allocate file space when creating a pool on existing file + (pmem/issues#167) + - initial support for testing using fault injection + - initial Python test framework + - improve performance of pmemobj_pool_by_ptr + + Bug fixes: + - common: work around tmpfs bug during pool creation + (pmem/issues#1018) + - pool: race-free pmempool create --max-size + - obj: don't modify remote pools in pmemobj_check + +Tue Feb 19 2019 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.5.1 + + This release fixes minor bugs and improves compatibility with newer + tool chains. + + Notable bug fixes: + - common: make detection of device-dax instances more robust + - obj: fix pmemobj_check for pools with some sizes + - obj: don't use anon struct in an union (public header) + - obj: fix pmemobj_tx_lock error handling + - obj: don't use braces in an expression with clang (public header) + - obj: suppress pmemcheck warnings for statistics + - pmreorder: fix markers nontype issue + +Fri Oct 26 2018 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.5 + + This release has had two major focus areas - performance and RAS + (Reliability, Availability and Serviceability). Beyond that, it introduces + new APIs, new tools and many other improvements. As a side effect + of performance optimizations, the libpmemobj on-media layout had to be + changed, which means that old pools have to be converted using pmdk-convert. + libpmemcto experiment has been finished and removed from the tree. + + For more details, please see https://pmem.io/2018/10/22/release-1-5.html. + + New features: + - common: unsafe shutdown detection (SDS) + - common: detection and repair of uncorrectable memory errors (bad blocks) + - pool: new "feature" subcommand for enabling and disabling detection of + unsafe shutdown and uncorrectable memory errors + - common: auto flush detection on Windows (on Linux since 1.4) + - pmreorder: new tool for verification of persistent memory algorithms + - obj: new on media layout + - pmem/obj: new flexible memcpy|memmove|memset API + - obj: new flushing APIs: pmemobj_xpersist, pmemobj_xflush + (PMEMOBJ_F_RELAXED) + - rpmem: new flag RPMEM_PERSIST_RELAXED for rpmem_persist + - obj: lazily initialized volatile variables (pmemobj_volatile) + (EXPERIMENTAL) + - obj: allocation classes with alignment + - obj: new action APIs: pmemobj_defer_free, POBJ_XRESERVE_NEW, + POBJ_XRESERVE_ALLOC + - blk/log: new "ctl" API + + Optimizations: + - obj: major performance improvements for AEP NVDIMMs + - obj: better space utilization for small allocations + - common: call msync only on one page for deep drain + + Other changes: + - cto: removed + - obj: remove actions limit + - common: new dependency on libndctl on Linux + - pmempool: "convert" subcommand is now a wrapper around pmdk-convert + (please see https://github.com/pmem/pmdk-convert) + - obj: C++ bindings have been moved to a new repository + (please see https://github.com/pmem/libpmemobj-cpp) + + Bug fixes: + - obj: fix type numbers for pmemobj_list_insert_new + - pmem: fix inconsistency in pmem_is_pmem + - common: fix windows mmap destruction + - daxio: fix checking and adjusting length + - common: fix long paths support on Windows + +Thu Aug 16 2018 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.4.2 + + This release fixes the way PMDK reports its version via + pkg-config files. + + Bug fixes: + - common: fix reported version + - doc: use single "-" in NAME section (pmem/issues#914) + +Fri Jun 29 2018 Marcin Ślusarz <marcin.slusarz@intel.com> + + * Version 1.4.1 + + In 1.4 development cycle, we created new daxio utility + (command line tool for performing I/O on Device-DAX), but due + to some complications we had to disable it just before + the 1.4 release. + In 1.4.1 we finally enable it. Daxio depends on ndctl v60.1. + + Bug fixes: + - pmem: fix clflush bit position + - obj: fix invalid OOMs when zones are fully packed + - obj: don't register undo logs twice in memcheck + - pool: fix bash completion script + - pool: fix incorrect errno after transform + - obj: fix clang-7 compilation + - obj: test for msync failures in non-pmem path + - doc: add missing field to alloc class entry point + - common: (win) fix timed locks + - common: provide src version in GitHub tarballs + - common: fix free function in tls + - common: fix double close + - test: allow testing installed libraries + - test: fix Valgrind vs stripped libraries issue + - test: fix dependencies between tests and tools + - test: fix races on make pcheck -jN + - test: use libvmmalloc.so.1 + - test: fix incorrect number of required dax devices + - test: add suppression for leak in ld.so + - test: fail if memcheck detects overlapping chunks + - test: simplify time measurements in obj_sync + - benchmark: check lseek() return value + - examples: catch exceptions in map_cli + +Thu Mar 29 2018 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.4 + This is the first release of PMDK under a new name. + The NVML project has been renamed to PMDK (Persistent Memory + Development Kit). This is only the project/repo name change + and it does not affect the names of the PMDK packages. + See this blog article for more details on the reasons and + impact of the name change: + https://pmem.io/2017/12/11/NVML-is-now-PMDK.html + + New features: + - common: support for concatenated Device-DAX devices + with 2M/1G alignment + - common: add support for MAP_SYNC flag + - common: always enable Valgrind instrumentation (pmem/issues#292) + - common: pool set options / headerless pools + - pmem: add support for "deep flush" operation + - rpmem: add rpmem_deep_persist + - doc: split man pages and add per-function aliases (pmem/issues#385) + + Optimizations: + - pmem: skip CPU cache flushing when eADR is available + (no Windows support yet) + - pmem: add AVX512F support in pmem_memcpy/memset (pmem/issues#656) + + Bug fixes: + - common: fix library dependencies (pmem/issues#767, RHBZ #1539564) + - common: use rpm-config CFLAGS/LDFLAGS when building packages + (pmem/issues#768, RHBZ #1539564) + - common: do not unload librpmem on close (pmem/issues#776) + - common: fix NULL check in os_fopen (pmem/issues#813) + - common: fix missing version in .pc files + - obj: fix cancel of huge allocations (pmem/issues#726) + - obj: fix error handling in pmemobj_open (pmem/issues#750) + - obj: validate pe_offset in pmemobj_list_* APIs (pmem/issues#772) + - obj: fix add_range with size == 0 (pmem/issues#781) + - log: add check for negative iovcnt (pmem/issues#690) + - rpmem: limit maximum number of lanes (pmem/issues#609) + - rpmem: change order of memory registration (pmem/issues#655) + - rpmem: fix removing remote pools (pmem/issues#721) + - pool: fix error handling (pmem/issues#643) + - pool: fix sync with switched parts (pmem/issues#730) + - pool: fix sync with missing replica (pmem/issues#731) + - pool: fix detection of Device DAX size (pmem/issues#805) + - pool: fail pmempool_sync if there are no replicas (pmem/issues#816) + - benchmark: fix calculating standard deviation (pmem/issues#318) + - doc: clarify pmem_is_pmem behavior (pmem/issues#719) + - doc: clarify pmemobj_root behavior (pmem/issues#733) + + Experimental features: + - common: port PMDK to FreeBSD + - common: add experimental support for aarch64 + - obj: introduce allocation classes + - obj: introduce two-phase heap ops (reserve/publish) + (pmem/issues#380, pmem/issues#415) + - obj: provide basic heap statistics (pmem/issues#676) + - obj: implement run-time pool extending (pmem/issues#382) + - cto: add close-to-open persistence library (pmem/issues#192) + + The following features are disabled by default, until + ndctl v60.0 is available: + - daxio: add utility to perform I/O on Device-DAX + - RAS: unsafe shutdown detection/handling + +Wed Dec 20 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.3.1 + Bug fixes: + - rpmem: fix issues reported by Coverity + - rpmem: fix read error handling + - rpmem: add fip monitor (pmem/issues#597) + - test: add rpmemd termination handling test + - cpp: fix pop.persist function in obj_cpp_ptr + - rpmem: return failure for a failed allocation + - rpmem: fix potential memory leak + - common: fix available rm options msg (pmem/issues#651) + - pool: fix pmempool_get_max_size + - obj: fix potential deadlock during realloc + (pmem/issues#635, pmem/issues#636, pmem/issues#637) + - obj: initialize TLS data + - rpmem: fix cleanup if fork() failed (pmem/issues#634) + - obj: fix bogus OOM after exhausting first zone + +Thu Jul 13 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.3 + This release introduces some useful features and optimizations + in libpmemobj. Most of them are experimental and controlled by + the new pmemobj_ctl APIs. For details, please check the feature + requests identified by the issue numbers listed next to the items below. + + Other important changes are related to performance tuning and + stabilization of librpmem library, which is used by libpmemobj to get + remote access to persistent memory and to provide basic data replication + over RDMA. The librpmem is still considered experimental. + + NVML for Windows is feature complete (except for libvmmalloc). + This release includes the support for Unicode, long paths and + the NVML installer. + + New features: + - common: add support for concatenated DAX Devices + - common: add Unicode support on Windows + - common: add long path support on Windows + - common: add NVML installer for Windows + - pmem: make pmem_is_pmem() true for Device DAX only + - obj: add pmemobj_wcsdup()/pmemobj_tx_wcsdup() APIs + - obj: export non-inlined pmemobj_direct() + - obj: add PMEMOBJ_NLANES env variable + - cpp: introduce the allocator + - cpp: add wstring version of C++ entry points + - vmem: add vmem_wcsdup() API entry + - pool: add pmempool_rm() function (pmem/issues#307) + - pool: add --force flag for create command (pmem/issues#529) + - benchmark: add a minimal execution time option + - benchmark: add thread affinity option + - benchmark: print 99% and 99.9% percentiles + - doc: separate Linux/Windows version of web-based man pages + + Optimizations: + - obj: cache _pobj_cached_pool in pmemobj_direct() + - obj: optimize thread utilization of buckets + - obj: stop grabbing a lock when querying pool ptr + - rpmem: use multiple endpoints + + Bug fixes: + - common: fix issues reported by static code analyzers + - pmem: fix mmap() implementation on Windows + - pmem: fix mapping addr/length alignment on Windows + - pmem: fix PMEM_MMAP_HINT implementation on Windows + - pmem: fix pmem_is_pmem() on invalid memory ranges + - pmem: fix wrong is_pmem returned by pmem_map_file() + - pmem: fix mprotect() for private mappings on Windows + - pmem: modify pmem_is_pmem() behavior for len==0 + - obj: add failsafe to prevent allocs in constructor + - cpp: fix swap implementation + - cpp: fix sync primitives' constructors + - cpp: fix wrong pointer type in the allocator + - cpp: return persistent_ptr::swap to being public + - pool: treat invalid answer as 'n' + - pool: unify flags value for dry run + - pool: transform for remote replicas + - rpmem: persistency method detection + - benchmark: fix time measurement + + Experimental features/optimizations: + - obj: pmemobjctl - statistics and control submodule + (pmem/issues#194, pmem/issues#211) + - obj: zero-overhead allocations - customizable alloc header + (pmem/issues#347) + - obj: flexible run size index (pmem/issues#377) + - obj: dynamic range cache (pmem/issues#378) + - obj: asynchronous post-commit (pmem/issues#381) + - obj: configurable object cache (pmem/issues#515) + - obj: add cache size and threshold tx params + - obj: add CTL var for suppressing expensive checks + - rpmem: add rpmem_set_attr() API entry + - rpmem: switch to libfabric v1.4.2 + +Thu May 18 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.2.3 + Bug fixes: + - test: extend timeout for selected tests + - test: reduce number of operations in obj_tx_mt + - test: define cfree() as free() in vmmalloc_calloc + + Other changes: + - common: move Docker images to new repo + +Sat Apr 15 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.2.2 + Bug fixes: + - pmempool: fix mapping type in pool_params_parse + - test: limit number of arenas in vmem_stats + - test: do not run pool_lock test as root + - common: fix pkg-config files + - common: fix building packages for Debian + +Tue Feb 21 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.2.1 + This NVML release changes the behavior of pmem_is_pmem() on Linux. + The pmem_is_pmem() function will now return true only if the entire + range is mapped directly from Device DAX (/dev/daxX.Y) without an + intervening file system, and only if the corresponding file mapping + was created with pmem_map_file(). See libpmem(7) for details. + + Bug fixes: + - jemalloc: fix test compilation on Fedora 26 (rawhide) + - test: fix cpp test compilation on Fedora 26 (rawhide) + - common: use same queue.h on linux and windows + - common: queue.h clang static analyzer fix + - common: fix path handling in build-dpkg.sh + - test: fix match files in pmempool_transform/TEST8 + +Fri Dec 30 2016 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.2 - Windows Technical Preview #1 + This is the first Technical Preview release of NVML for Windows. + It is based on NVML 1.2 version, but not all the 1.2 features + are ported to Windows. In particular, Device DAX and remote access + to persistent memory (librpmem) are not supported by design. + + NOTE: This release has not gone through the full validation cycle, + but only through some basic tests on Travis and AppVeyor. + Thus, it cannot be assumed "Production quality" and should not + be used in production environments. + + Besides several minor improvements and bug fixes, all the other + changes since NVML 1.2 release were related to Windows support: + - win: port libvmem (and jemalloc) + - win: benchmarks Windows port + - win: fix mapping files of unaligned length + - win: clean up possible race condition in mmap_init() + - win: enable QueryVirtualMemoryInformation() in pmem_is_pmem() + - test: check open handles at START/DONE + - test: port all the remaining unit tests + (scope, pmem_map, obj_debug, util_poolset, pmempool_*) + - win: add resource files for versioning + + Known issues and limitations of Windows version of NVML: + - Unicode support is missing. The UTF/USC-encoded file paths + or pool set files may not be handled correctly. + - The libvmmalloc library is not ported yet. + - The on-media format of pmem pools is not portable at the moment. + The pmem pools created using Windows version of NVM libraries + cannot be open on Linux and vice versa. + - Despite the fact the current version of NVML would work + with any recent version of Windows OS, to take full + advantage of PMEM and NVML features and to benefit from + the PMEM performance, the recommended platforms needs be + equipped with the real NVDIMMs hardware and should support + the native, Microsoft's implementation of DAX-enabled file + system (i.e. Windows Server 2016 or later). + In case of using NVML with older versions of Windows or with + the custom implementation of PMEM/DAX drivers, the performance + might not be satisfactory. Please, contact the provider + of PMEM/DAX drivers for your platform to get the customized + version of NVML in such case. + +Thu Dec 15 2016 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.2 + This NVML release causes a "flag day" for libpmemobj. + The pmemobj pools built under NVML 1.1 are incompatible with pools built + under NVML 1.2 and later. This is because an issue was discovered with + the alignment of locks (pmem/issues#358) and, although rare, the issue potentially + impacts program correctness, making the fix mandatory. + The major version number of the pmemobj pool layout and the version + of the libpmemobj API is changed to prevent the use of the potentially + incorrect layout. + + Other key changes introduced in this release: + - Add Device DAX support, providing that "optimized flush" mechanism + defined in SNIA NVM Programming Model can safely be used, even + if PMEM-aware file system supporting that model is not available, + or if the user does not want to use the file system for some reason. + - Add a package for libpmemobj C++ bindings. + C++ API is no longer considered experimental. + Web-based documentation for C++ API is available on https://pmem.io. + - Add "sync" and "transform" commands to pmempool utility. + The "sync" command allows one to recover missing or corrupted part(s) + of a pool set from a healthy replica, while the "transform" command + is a convenient way for modifying the structure of an existing + pool set, i.e. by adding or removing replicas. + - Add experimental support for remote access to persistent memory and + basic remote data replication over RDMA (librpmem). Experimental + support for remote replicas is also provided by libpmemobj library. + + New features: + - common: add Device DAX support (pmem/issues#197) + - obj: add C++ bindings package (libpmemobj++-devel) + - obj: add TOID_OFFSETOF macro + - pmempool: add "sync" and "transform" commands + (pmem/issues#172, pmem/issues#196) + + Bug fixes: + - obj: force alignment of pmem lock structures (pmem/issues#358) + - blk: cast translation entry to uint64_t when calculating data offset + - obj: fix Valgrind instrumentation of chunk headers and cancelled + allocations + - obj: set error message when user called pmemobj_tx_abort() + - obj: fix status returned by pmemobj_list_insert() (pmem/issues#226) + - obj: defer allocation of global structures + + Optimizations: + - obj: fast path for pmemobj_pool_by_ptr() when inside a transaction + - obj: simplify and optimize allocation class generation + + Experimental features: + - rpmem: add support for remote access to persistent memory and basic + remote data replication over RDMA + - libpmempool: add pmempool_sync() and pmempool_transform() (pmem/issues#196) + - obj: introduce pmemobj_oid() + - obj: add pmemobj_tx_xalloc()/pmemobj_tx_xadd_range() APIs and + the corresponding macros + - obj: add transaction stage transition callbacks + +Thu Jun 23 2016 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.1 + This NVML release introduces a new version of libpmemobj pool layout. + Internal undo log structure has been modified to improve performance + of pmemobj transactions. Memory pools created with older versions + of the libpmemobj library must be converted to the new format using + "pmempool convert" command. See pmempool-convert(1) for details. + + A new "libpmempool" library is available, providing support for + off-line pool management and diagnostics. Initially it provides only + "check" and "repair" operations for log and blk memory pools, and for + BTT devices. + + Other changes: + - pmem: deprecate PCOMMIT + - blk: match BTT Flog initialization with Linux NVDIMM BTT + - pmem: defer pmem_is_pmem() initialization (pmem/issues#158) + - obj: add TOID_TYPEOF macro + + Bug fixes: + - doc: update description of valid file size units (pmem/issues#133) + - pmempool: fix --version short option in man page (pmem/issues#135) + - pmempool: print usage when running rm without arg (pmem/issues#136) + - cpp: clarify polymorphism in persistent_ptr (pmem/issues#150) + - obj: let the before flag be any non-zero value (pmem/issues#151) + - obj: fix compare array pptr to nullptr (pmem/issues#152) + - obj: cpp pool.get_root() fix (pmem/issues#156) + - log/blk: set errno if replica section is specified (pmem/issues#161) + - cpp: change exception message (pmem/issues#163) + - doc: remove duplicated words in man page (pmem/issues#164) + - common: always append EXTRA_CFLAGS after our CFLAGS + + Experimental features: + - Implementation of C++ bindings for libpmempobj is complete. + Web-based documentation for C++ API is available on https://pmem.io. + Note that C++ API is still considered experimental. Do not use it + in production environments. + - Porting NVML to Windows is in progress. There are MS Visual Studio + solution/projects available, allowing to compile libpmem, libpmemlog, + libpmemblk and libpmemobj on Windows, but the libraries are not fully + functional and most of the test are not enabled yet. + +Thu Apr 07 2016 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 1.0 + The API of six libraries (libpmem, libpmemblk, libpmemlog, + libpmemobj, libvmem, libvmmalloc) is complete and stable. + The on-media layout of persistent memory pools will be maintained + from this point, and if changed it will be backward compatible. + Man pages are all complete. + This release has been validated to "Production quality". + + For the purpose of new features planned for next releases of NVML + there have been some API modifications made: + - pmem: pmem_map replaced with pmem_map_file + - log/blk: 'off_t' substituted with 'long long' + - obj: type numbers extended to 64-bit + - obj: new entry points and macros added: + pmemobj_tx_errno, pmemobj_tx_lock, pmemobj_mutex_timedlock, + TX_ADD_DIRECT, TX_ADD_FIELD_DIRECT, TX_SET_DIRECT + + Other key changes since version 0.4 include: + - common: updated/fixed installation scripts + - common: eliminated dependency on libuuid + - pmem: CPU features/ISA detection using CPUID + - obj: improved error handling + - obj: atomic allocation fails if constructor returns error + - obj: multiple performance optimizations + - obj: object store refactoring + - obj: additional examples and benchmarks + + This release also introduces a prototype implementation + of C++ bindings for libpmemobj. Note that C++ API is still + experimental and should not be used in production environments. + +Fri Dec 04 2015 Krzysztof Czurylo <krzysztof.czurylo@intel.com> + + * Version 0.4 + This NVML version primarily focuses on improving code quality + and reliability. In addition to a couple of bug fixes, + the changes include: + - benchmarks for libpmemobj, libpmemblk and libvmem + - additional pmemobj tests and examples + - pool mapping address randomization + - added pmempool "rm" command + - eliminated libpmem dependency on libpthread + - enabled extra warnings + - minor performance improvements + Man pages are all complete. + This release is considered "Beta quality" by the team, having + been thoroughly validated, including significant performance analysis. + The pmempool command does not yet support "check" and "repair" + operations for pmemobj type pools. + +Sun Sep 13 2015 Andy Rudoff <andy.rudoff@intel.com> + + * Version 0.3 + NVML is now feature complete, adding support for: + - pool sets + - pmemobj local replication (active/passive) + - experimental valgrind support + - pmempool support for all pool types + Man pages are all complete. + This release is considered "Alpha quality" by the team, having + gone through significant validation but only some performance + analysis at this point. + +Tue Jun 30 2015 Andy Rudoff <andy.rudoff@intel.com> + + * Version 0.2 + NVML now consists of six libraries: + - libpmem (basic flushing, etc) + - libpmemblk, libpmemlog, libpmemobj (transactions) + - libvmem, libvmmalloc (volatile use of pmem) + The "pmempool" command is available for managing pmem files. + Man pages for all the above are complete. + The only things documented in man pages but not implemented are: + - pmem sets (ability to spread a pool over a set of files) + - replication (coming for libpmemobj) + The pmempool command does not yet support pmemobj type pools. + +Thu Sep 11 2014 Andy Rudoff <andy.rudoff@intel.com> + + * Version 0.1 + Initial development done in 0.1 builds |