Here is a list of all the repositories in the pmem organization in GitHub under https://github.com/pmem.
Some projects will be discontinued, they are crossed out below (in the table). You will find more information here.
The Persistent Memory Development Kit is a collection of libraries and tools. The source is spread across many repositories. Components are separated like this to help with the logistics of parallel development and asynchronous delivery.
Components Focused on Persistence:
|pmdk||PMDK Core C libraries and tools:||pmem.io/pmdk|
|valgrind||Enhanced Valgrind containing the pmemcheck plugin||pmem.io/valgrind|
|rpma||C library to simplify accessing persistent memory (PMem) on remote hosts over Remote Direct Memory Access (RDMA)||pmem.io/rpma|
|C++ bindings & containers for libpmemobj||pmem.io/libpmemobj-cpp|
|llpl||Low-Level Persistence Library for Java||pmem.io/java/llpl|
|C low-level concurrency library for asynchronous functions||pmem.io/miniasync|
|Logging data structure (with stream-like access to data)||pmem.io/pmemstream|
|Transactional Key-Value Store: Top-Level C & C++ API||pmem.io/pmemkv|
|Benchmarks for pmemkv||-|
|Python bindings for pmemkv||pmem.io/pmemkv-python|
|Java bindings for pmemkv||pmem.io/pmemkv-java|
|NodeJS bindings for pmemkv||pmem.io/pmemkv-nodejs|
|Ruby bindings for pmemkv||pmem.io/pmemkv-ruby|
|Conversion tool for PMDK pools||pmdk-convert|
Components Focused on Volatile Usages of pmem:
|memkind||General-purpose malloc/free-style library|
(Actually lives outside the pmem GitHub org since it has a life outside of pmem as well)
|A buffer based LRU cache||pmem.io/vmemcache|
|libvmem, the predecessor to libmemkind.|
Maintenance-only -- use libmemkind for all new development.
Experimental PMDK components (not yet ready for production use):
|pcj||Persistent Collections for Java||-|
|Userspace implementation of file APIs using pmem||-|
|Syscall intercepting library used by libpmemfile||-|
|Tool for tracing syscalls||-|
|Experimental prototype Python bindings for libpmemobj||-|
|dev-utils-kit||Tools used for development of projects under pmem organization||-|
|autoflushtest||Basic data integrity test for platforms with flush-on-fail CPU caches||-|
ndctl is the Linux utility for managing persistent memory.
|ndctl||ndctl, daxctl, and related libraries||pmem.io/ndctl|
The pmem.io website is implemented as static content on GitHub using Jekyll, GitHub-flavored MarkDown, and some tool-generated HTML here and there. Some sub-areas of the website live in the gh-pages branch of the corresponding repo (for example, pmdk and ndctl).
|docs||Persistent Memory Docbook||-|
|pmem.github.io||Repo containing the pmem.io website (including blogs)||-|
|pmdk-examples||PMDK examples and tutorials||-|
|book||Examples used in the pmem Programming Book||-|
|Knowledge Base for pmem.io||pmem.io/knowledgebase|
These repos contain experimental versions of software modified to leverage persistent memory. Typically, when the features are mature and tested they become part of the upstream repo.
|pelikan||Working tree for development of pmem-related features for Twitter's Pelikan||-|
|pmem-rocksdb||RocksDB modified to use pmem||-|
|pmem-redis||Redis, enhanced to use pmem||-|
|pmse||MongoDB pmem Storage Engine Prototype||-|
|kvdk||Reference code of key/value store design for pmem||-|
These repos are no longer under active development or use. We archive them here for reference.
|redis||Initial pmem enhancements to Redis||-|
|rocksdb||Initial pmem enhancements to RocksDB||-|
|libcxx||Experimental pmem-aware libcxx||-|
|mpi-pmem-ext||MPI Extensions for pmem||-|
|issues||Archive of some old issues. No longer in-use.||-|
|pmemkv-jni||Java bindings via JNI for pmemkv||-|
|pmdk-tests||Extended PMDK tests||-|
The contents of this web site and the associated GitHub repositories are BSD-licensed open source.