reverie/reverie-examples
Robert Kelly d8c87ad6ce ethers.rs
Summary:
This is a pretty in depth third party library being added.  The main changes are...

**version bumping**:
dunce = "1.0.0" => "1.0.2"
once_cell = "1.8" => "1.12"
tracing = "0.1.32" => "0.1.35"

adding ethers-rs fork:
https://github.com/rlkelly/ethers-rs.git

this depends on forks of:
coins-bip32  = https://github.com/rlkelly/bitcoins-rs.git
coins-bip39  = https://github.com/rlkelly/bitcoins-rs.git
eth-keystore = https://github.com/rlkelly/eth-keystore-rs.git

this was necessary to remove the wasm target, which creates a cyclic dependency for "indexmap".  This was ran into previously here:

https://fb.workplace.com/groups/rust.language/permalink/8603206789727860/

also, some fixups were created for a few packages to facilitate build.  I'm not a fan of libraries creating a build step to generate documentation...
----

This still does not have the ethers-middleware crate or the ethers-solc crate because it has the external build dependency of solc, which would make this a bit more complex to add:
https://docs.soliditylang.org/en/latest/installing-solidity.html

adding the crates without solc makes the process of integrating this library much easier, but it would be beneficial in the future.

@public
update rust deps

Reviewed By: jsgf

Differential Revision: D37320246

fbshipit-source-id: 251bd1c3c0e51733347a534fa597dea33d1df74b
2022-06-23 20:03:16 -07:00
..
chrome-trace Appease the copyright linter 2022-06-02 11:51:06 -07:00
strace Appease the copyright linter 2022-06-02 11:51:06 -07:00
Cargo.toml ethers.rs 2022-06-23 20:03:16 -07:00
chaos.rs Appease the copyright linter 2022-06-02 11:51:06 -07:00
chunky_print.rs Appease the copyright linter 2022-06-02 11:51:06 -07:00
counter1.rs Appease the copyright linter 2022-06-02 11:51:06 -07:00
counter2.rs Appease the copyright linter 2022-06-02 11:51:06 -07:00
debug.rs Appease the copyright linter 2022-06-02 11:51:06 -07:00
noop.rs Appease the copyright linter 2022-06-02 11:51:06 -07:00
pedigree.rs Appease the copyright linter 2022-06-02 11:51:06 -07:00
README.md Initial commit 2021-12-29 16:14:27 -08:00
strace_minimal.rs Appease the copyright linter 2022-06-02 11:51:06 -07:00

Examples

Example tools built on top of Reverie.

Copying one of these examples is the recommended way to get started using Reverie.

chrome-trace: Generates a chrome trace file

This tool is like strace, but generates a trace file that can be loaded in chrome://tracing/.

counter1: Reverie Counter Tool (1)

This is a basic example of event counting. It counts the number of system calls and reports that single integer at exit.

This version of tool uses a single, centralized piece of global state.

counter2: Reverie Counter Tool (2)

This is a basic example of event counting. This tool counts the number of system calls and reports that single integer at exit.

This implementation of the tool uses a distributed notion of state, maintaining a per-thread, per-process, and global state. Basically, this is an example of "MapReduce" style tracing of a process tree.

noop: Identity Function Tool

This instrumentation tool intercepts events but does nothing with them. It is useful for observing the overhead of interception, and as a starting point.

chunky_print: Print-gating Tool

This example tool intercepts write events on stdout and stderr and manipulates either when those outputs are released, or the scheduling order that determines the order of printed output.

pedigree: Deterministic virtual process IDs

This tool monitors the spawning of new processes and maps each new PID to a deterministic virtual PID. The new virtual PID is reported after each process-spawning syscall.

This tool is a work-in-progress and is not yet functioning.

pedigree.rs is an implementation of pedigree / virtual PID generation using local state. virtual_process_tree.rs is an implementation which uses global state.

strace: Reverie Echo Tool

This instrumentation tool simply echos intercepted events, like strace.

chaos: Chaos Tool

This tool is meant to emulate a pathological kernel where:

  1. read and recvfrom calls return only one byte at a time. This is intended to catch errors in parsers that assume multiple bytes will be returned at a time.
  2. EINTR is returned instead of running the real syscall for every other read.