chop-up

Micro-transactional compilation for deterministic concurrency

https://github.com/arrangabriel/chop-up

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.3%) to scientific vocabulary

Keywords

compiler transaction-processing
Last synced: 6 months ago · JSON representation ·

Repository

Micro-transactional compilation for deterministic concurrency

Basic Info
  • Host: GitHub
  • Owner: arrangabriel
  • License: bsd-3-clause
  • Language: Rust
  • Default Branch: main
  • Homepage: https://dcl.epfl.ch/site/
  • Size: 169 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
compiler transaction-processing
Created over 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation

README.md

chop-up

The function of this tool is to split up code representing transactions into so called microtransactions. A transaction on a high level is simply a procedure that operates on a global state, reading and/or writing to it. In a system multiple transactions may be executing concurrently, and must therefore be scheduled so as appear serial in their execution. To aid in scheduling it would be of great help to know exactly which addresses a transaction will operate on. In some cases the addresses can be calculated a priori, but this is not possible if the address of one access is derived from the result of another. I.e. reading a value, interpreting it as an address and subsequently reading or writing to said address.

To solve this a microtransactional runtime has been proposed wherein a larger transaction in a sense is suspended at each memory access, yielding the address it intends to access to the runtime. With this information the runtime can make informed scheduling decisions when interleaving the set of microtransactions. Performing this yield is not a trivial task, as it requires transforming the code itself to conform to the syntax and semantics of such a system, while preserving the semantics of the original transaction. This tool performs the transformation on transactions in the WebAssembly text-format.

Usage

Build using cargo shell $ cargo build

Alternatively build and run with single command shell $ cargo run [subcommand] [opts...]

Run tests shell $ cargo test

Transformation

Run on .wat file shell $ chop_up split [input] [state size] [opts...] > [output]

Optional flags: - --skip-safe - attempt to make optimized split decisions - --explain - add explanatory comments to output

Analysis

Run on .wat file shell $ chop_up analyze [input] [output format]

output format is one of: standard or csv

Build and run examples

To build the examples a wasi-enabled compiler is needed.

shell $ cd wasm/runtime

Run without transformation shell $ make check-{payment|auction}

Run with transformation shell $ make check-{payment|auction}-split

Owner

  • Name: Arran Øystein Kostveit Gabriel
  • Login: arrangabriel
  • Kind: user
  • Location: Trondheim, Norway

MSc in computer science @ NTNU | Developer @ Secunor

Citation (CITATION.cff)

cff-version: 1.2.0
title: chop-up
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Arran Øystein Kostveit
    family-names: Gabriel
    email: arrankg@gmail.com
    affiliation: NTNU/EPFL
repository-code: 'https://github.com/arrangabriel/chop-up'
license: BSD-3-Clause
commit: e46935ac45c72a910dd3d76fd521054e87c19e3c
version: 0.1.0
date-released: '2024-01-05'

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

Cargo.lock cargo
  • anyhow 1.0.75
  • equivalent 1.0.1
  • hashbrown 0.14.0
  • indexmap 2.0.0
  • leb128 0.2.5
  • memchr 2.6.3
  • semver 1.0.18
  • unicode-width 0.1.11
  • wasm-encoder 0.33.2
  • wasmparser 0.113.1
  • wasmprinter 0.2.66
  • wast 65.0.2
Cargo.toml cargo