diff --git a/crumbles/README.md b/crumbles/README.md new file mode 100644 index 00000000..2b78f0d5 --- /dev/null +++ b/crumbles/README.md @@ -0,0 +1,54 @@ +# Crumbles + +[![Repository](https://img.shields.io/badge/github-crumbles-blueviolet?logo=github)](https://github.com/dusk-network/piecrust/tree/main/crumbles) +![Build Status](https://github.com/dusk-network/piecrust/workflows/build/badge.svg) +[![Documentation](https://img.shields.io/badge/docs-crumbles-blue?logo=rust)](https://docs.rs/crumbles) + +Crumbles is a Rust library designed for creating and managing copy-on-write memory-mapped regions. This allows for efficient memory handling by tracking changes at page level. It's particularly suitable for scenarios where memory snapshots and reverting to previous states are required. + +## Usage + +The core fuctionality of Crumbles is provided by the `Mmap` struct. This struct offers methods to manage memory regions, create snapshots and revert/apply changes. + +Example use: + +```rust +use crumbles::Mmap; +use std::io; + +fn main() -> io::Result<()> { + let mut mmap = Mmap::new(65536, 65536)?; + + // When first created, the mmap is not dirty. + assert_eq!(mmap.dirty_pages().count(), 0); + + mmap[24] = 42; + + // After writing a single byte, the page it's on is dirty. + assert_eq!(mmap.dirty_pages().count(), 1); + + Ok(()) +} + +``` + +## Build and Test + +To build and test the crate you will need a +[Rust](https://www.rust-lang.org/tools/install) toolchain. Use the following commands to run the tests: + +```sh +cargo test +``` + +## Release History + +To see the release history for this crate, please see the [CHANGELOG](./CHANGELOG.md) file. + +## License + +This code is licensed under the Mozilla Public License Version 2.0 (MPL-2.0). Please see the [LICENSE](./LICENSE) for further details. + +## Contribute + +If you want to contribute to this project, please check the [CONTRIBUTING](https://github.com/dusk-network/.github/blob/main/.github/CONTRIBUTING.md) file. diff --git a/piecrust-uplink/README.md b/piecrust-uplink/README.md index d84a2ce9..70be6f84 100644 --- a/piecrust-uplink/README.md +++ b/piecrust-uplink/README.md @@ -1,8 +1,8 @@ # π-crust Uplink -[![Repository](https://img.shields.io/badge/github-piecrust-blueviolet?logo=github)](https://github.com/dusk-network/piecrust) +[![Repository](https://img.shields.io/badge/github-piecrust-blueviolet?logo=github)](https://github.com/dusk-network/piecrust/tree/main/piecrust-uplink) ![Build Status](https://github.com/dusk-network/piecrust/workflows/build/badge.svg) -[![Documentation](https://img.shields.io/badge/docs-piecrust-blue?logo=rust)](https://docs.rs/piecrust-uplink/) +[![Documentation](https://img.shields.io/badge/docs-piecrust%20uplink-blue?logo=rust)](https://docs.rs/piecrust-uplink/) Piecrust Uplink is the library that allows you to build smart contracts directly on top of Dusk's Piecrust virtual machine.