chop-up
Micro-transactional compilation for deterministic concurrency
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
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
Metadata Files
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:
standardorcsv
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
- Repositories: 2
- Profile: https://github.com/arrangabriel
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
- 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