PMem Repositories

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

Discontinuation of the projects

Some projects will be discontinued, they are crossed out below (in the table). You will find more information here.

    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
    • libpmemblk
    • libpmemlog
    • libpmempool
    • libpmemset
    • librpmem
    • 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
    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
    llplLow-Level Persistence Library for Javapmem.io/java/llpl
    libpmemobj-jsJavaScript bindings for libpmemobj-
    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
    memkindGeneral-purpose malloc/free-style library
    (Actually lives outside the pmem GitHub org since it has a life outside of pmem as well)
    -
    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 yet ready for production use):

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

    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-
    knowledge-baseKnowledge Base for pmem.iopmem.io/knowledgebase
    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.

    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-
    pmdk-testsExtended PMDK tests-

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