/go-pmem-transaction

Golang library for using persistent memory

Primary LanguageGoOtherNOASSERTION

go-pmem-transaction

Warning

VMware has ended active development of this project, this repository will no longer be updated.

Overview

A library to make persistent memory accessible to developers of Go language. More details about Persistent memory can be found here. This repostiory has two Go packages (pmem & transaction).

Prerequisites

To use these packages, you need new extensions to the Go language. These changes are maintained in a separate repository here.

Build & Run

  1. Download Go source code by cloning the modified Go source code.
  2. Build the Go distribution by running (For linux):
$ cd src
$ ./all.bash

You can also follow the general instructions for building Go from its source code found here.

  1. go get -u github.com/vmware/go-pmem-transaction/...
  2. Make sure to build these packages (and applications using these packages) using the Go binary built in step 2.

Documentation

This repository provides two packages:

  1. pmem package that provides access to persistent memory. The pmem package allows users to create data structures that reside in persistent memory and get pointers to these data structures that reside in persistent memory as well.

  2. The transaction package provides undo and redo transaction logging APIs to allow for crash-consistent updates.

Individual READMEs for these packages can be found in the package directories or here:

  1. pmem README
  2. transaction README

Contributing

The go-pmem-transaction project team welcomes contributions from the community. Before you start working with go-pmem-transaction, please read our Developer Certificate of Origin. All contributions to this repository must be signed as described on that page. Your signature certifies that you wrote the patch or have the right to pass it on as an open-source patch. For more detailed information, refer to CONTRIBUTING.md.

License

go-pmem-transaction is availabe under BSD-3 license.