PMem Repositories

Here is a list of all the repositories in the pmem organization in GitHub under https://github.com/pmem.

PMDK Repositories

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:

Repo NameDescriptionMicrosite
pmdkPMDK Core C libraries and tools:
  • libpmem
  • libpmem2
  • libpmemobj
  • libpmempool
  • pmempool utility
  • Core PMDK C examples
  • Web content for pmem.io/pmdk (in gh-pages branch)
pmem.io/pmdk
valgrindEnhanced Valgrind containing the pmemcheck pluginpmem.io/valgrind
llplLow-Level Persistence Library for Javapmem.io/java/llpl
libpmemobj-jsJavaScript bindings for libpmemobj-
pmdk-testsExtended PMDK tests-

Components Focused on Volatile Usages of pmem:

Repo NameDescriptionMicrosite
memkindGeneral-purpose malloc/free-style library
(Actually lives outside the pmem GitHub org since it has a life outside of pmem as well)
-

Experimental PMDK components (not yet ready for production use):

Repo NameDescriptionMicrosite
pcjPersistent Collections for Java-

Other:

Repo NameDescriptionMicrosite
dev-utils-kitTools used for development of projects under pmem organization-
autoflushtestBasic data integrity test for platforms with flush-on-fail CPU caches-
ndctl

ndctl is the Linux utility for managing persistent memory.

Repo NameDescriptionMicrosite
ndctlndctl, daxctl, and related librariespmem.io/ndctl
Web Content

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).

Repo NameDescriptionMicrosite
docsPersistent Memory Docbook-
pmem.github.ioRepo containing the pmem.io website (including blogs)-
pmdk-examplesPMDK examples and tutorials-
bookExamples used in the pmem Programming Book-
pmem-aware Software

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.

Repo NameDescriptionMicrosite
pelikanWorking tree for development of pmem-related features for Twitter's Pelikan-
pmem-rocksdbRocksDB modified to use pmem-
pmem-redisRedis, enhanced to use pmem-
pmseMongoDB pmem Storage Engine Prototype-
kvdkReference code of key/value store design for pmem-
Inactive

These repos are no longer under active development or use. We archive them here for reference.

Components Focused on Persistence:

Repo NameDescriptionMicrosite
pmdkPMDK Core C libraries and tools:
pmem.io/pmdk
rpmaC library to simplify accessing persistent memory (PMem) on remote hosts over Remote Direct Memory Access (RDMA)pmem.io/rpma
libpmemobj-cppC++ bindings & containers for libpmemobj pmem.io/libpmemobj-cpp
miniasyncC low-level concurrency library for asynchronous functionspmem.io/miniasync
pmemstreamLogging data structure (with stream-like access to data)pmem.io/pmemstream
pmemkvTransactional Key-Value Store: Top-Level C & C++ API pmem.io/pmemkv
pmemkv-benchBenchmarks for pmemkv-
pmemkv-pythonPython bindings for pmemkvpmem.io/pmemkv-python
pmemkv-javaJava bindings for pmemkvpmem.io/pmemkv-java
pmemkv-nodejsNodeJS bindings for pmemkvpmem.io/pmemkv-nodejs
pmemkv-rubyRuby bindings for pmemkvpmem.io/pmemkv-ruby
pmdk-convertConversion tool for PMDK poolspmdk-convert

Components Focused on Volatile Usages of pmem:

Repo NameDescriptionMicrosite
vmemcacheA buffer based LRU cachepmem.io/vmemcache
vmemlibvmem, the predecessor to libmemkind.
Maintenance-only -- use libmemkind for all new development.
pmem.io/vmem/libvmem

Experimental PMDK components (not ready for production use):

Repo NameDescriptionMicrosite
pmemfileUserspace implementation of file APIs using pmem-
syscall_interceptSyscall intercepting library used by libpmemfile-
vltraceTool for tracing syscalls-
pynvmExperimental prototype Python bindings for libpmemobj-

Miscellaneous:

Repo NameDescriptionMicrosite
linux-examplesOriginal ideas-
redisInitial pmem enhancements to Redis-
rocksdbInitial pmem enhancements to RocksDB-
libcxxExperimental pmem-aware libcxx-
mpi-pmem-extMPI Extensions for pmem-
issuesArchive of some old issues. No longer in-use.-
pmemkv-jniJava bindings via JNI for pmemkv-
knowledge-baseKnowledge Base for pmem.iopmem.io/knowledgebase

The contents of this web site and the associated GitHub repositories are BSD-licensed open source.