Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Software Transactional Objects

License

NotificationsYou must be signed in to change notification settings

readablesystems/sto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,172 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

STO: Software Transactional Objects

STO (/stō/, pronounced the same as "stow") is a software transactionalmemory (STM) library and experimentalplatform written in C++. STO distinguishes itself from other STMlibraries in that it uses data type information derived from theprogramming language, thus drastically reducing footprint oftransactions and false conflicts when compared to an untyped STM system.Please check out ourEuroSys '16paperfor more information.

STO was created by Nathaniel Herman as a Harvard undergrad.

Installation

We tested our build on Linux (Ubuntu 16.04 LTS and later) only. Building on other platformsshould technically be possible, because we use standard C++/POSIX calls and avoidhacks as much as we can.There is aknown issuewith Win32 object file format, so building under Windows (Cygwin or the Windows Subsystem forLinux in Windows 10) is not recommended.

Dependencies

  • Modern C++ compiler with C++14 support
    • If you use GNU C Compiler (g++), version 7.2+ is recommended.
  • GNU build system (autoreconf andmake in particular)
  • cmake 3.8+ (Optional)
  • jemalloc
  • libnuma
  • ninja build system
  • masstree and third-party libraries (as git submodules)

Please refer to your own system documentation on how to install thesedependencies prior to building STO. On Ubuntu 16.04 LTS or later, youcan install all dependencies by using:

$ sudo apt update$ sudo apt install build-essential cmake libjemalloc-dev libnuma-dev ninja-build

If you wish to installg++ version 7 on Ubuntu 16.04 or older systems, you canuse the following PPA package:

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test$ sudo apt update$ sudo apt install g++-7

Build

  1. Clone the git repository
$ git clone https://github.com/readablesystems/sto.git$cd sto
  1. Initialize submodules
$ git submodule update --init --recursive
  1. Execute configuration scripts
$ ./bootstrap.sh$ ./configure

Theconfigure script lets you specify the compiler to use when building STO.For example, ifg++-7 is not the default compiler in your system, you canenable it for STO by running./configure CC=gcc-7 CXX=g++-7.

(Note: if you use macOS you should probably run./configure CXX='clang++ -stdlib=libc++')

  1. Build
$ make -jN# launch N parallel build jobs

This builds all targets, which include all tests and benchmarks. If youdon't want all of those, you can build selected targets as well.

Here are some targets you may find useful:

  • make check: Build and run all unit tests. This is the target usedby continuous integration.
  • make tpcc_bench: Build the TPC-C benchmark.
  • make ycsb_bench: Build the YCSB-like benchmark.
  • make micro_bench: Build the array-based microbenchmark.
  • make clean: You know what it does.

SeeWiki for advanced buid options.

IDE Support & cmake

STO containscmake configuration files that can be used by IDEs likeJetBrains CLion. You can potentiallyalso usecmake to configure and build STO, but it is not recommended.

Full support forcmake will come soon.

Develop New Data Types

You can implement your own data type in STO to extend the transactionaldata type library. Please see theWiki on how to implement a STOdata type.

You can also take a look atdatatype/TBox.hh for a simple example.

Bug Reporting

You can report bugs by opening issues or contactingYiheHuang.


[8]ページ先頭

©2009-2026 Movatter.jp