{"id":13688433,"url":"https://github.com/ctsrc/persistence","last_synced_at":"2025-04-23T02:47:50.227Z","repository":{"id":57654451,"uuid":"211035492","full_name":"ctsrc/persistence","owner":"ctsrc","description":"Rust library providing mutable resizable arrays built on top of mmap","archived":false,"fork":false,"pushed_at":"2023-12-15T08:49:37.000Z","size":40,"stargazers_count":24,"open_issues_count":1,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-23T02:47:42.020Z","etag":null,"topics":["data-oriented-design"],"latest_commit_sha":null,"homepage":"https://docs.rs/persistence/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctsrc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-09-26T08:10:01.000Z","updated_at":"2025-02-07T17:35:11.000Z","dependencies_parsed_at":"2022-09-01T01:21:37.591Z","dependency_job_id":"2890c1ea-2a9c-4288-9f91-74d6efd341b2","html_url":"https://github.com/ctsrc/persistence","commit_stats":{"total_commits":36,"total_committers":1,"mean_commits":36.0,"dds":0.0,"last_synced_commit":"8ddd31630478932df406e41d9cfdbdaf0e882736"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsrc%2Fpersistence","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsrc%2Fpersistence/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsrc%2Fpersistence/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsrc%2Fpersistence/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctsrc","download_url":"https://codeload.github.com/ctsrc/persistence/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250360251,"owners_count":21417717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-oriented-design"],"created_at":"2024-08-02T15:01:13.706Z","updated_at":"2025-04-23T02:47:50.208Z","avatar_url":"https://github.com/ctsrc.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# persistence – mutable resizable arrays built on top of mmap\n\n[![Crates.io](https://img.shields.io/crates/v/persistence.svg)](https://crates.io/crates/persistence) [![Docs.rs](https://docs.rs/persistence/badge.svg)](https://docs.rs/persistence/)\n\nThis Rust library provides [`MmapedVec`](https://docs.rs/persistence/latest/persistence/struct.MmapedVec.html);\na resizable, mutable array type implemented on top of\n[`mmap()`](https://pubs.opengroup.org/onlinepubs/7908799/xsh/mmap.html),\nproviding a [`Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html)-like data structure\nwith persistence to disk built into it.\n\n`MmapedVec` is aimed at developers who wish to write software utilizing\n[data-oriented design](https://en.wikipedia.org/wiki/Data-oriented_design)\ntechniques in run-time environments where all of the following hold true:\n\n  1. You have determined that a `Vec`-like data structure is appropriate for some\n     or all of your data, and\n  2. You require that the data in question be persisted to disk, and\n  3. You require that the data in question be synced to disk at certain times\n     or intervals, after said data has been mutated (added to, deleted from, or altered),\n     such that abnormal termination of your program (e.g. program crash, loss of power, etc.)\n     incurs minimal loss of data, and\n  4. You are confident that all processes which rely on the data on disk honor the\n     advisory locks that we apply to them, so that the integrity of the data is\n     ensured, and\n  5. You desire, or at least are fine with, having the on-disk representation of your data\n     be the same as that which it has in memory, and understand that this means that the files\n     are tied to the CPU architecture of the host that they were saved to disk on. If you need\n     to migrate your data to another computer with a different CPU architecture in the future,\n     you convert it then, rather than serializing and deserializing your data between some\n     other format and the in-memory representation all of the time.\n\n## Advisory locks\n\nThis library makes use of BSD `flock()` advisory locks on Unix platforms (Linux, macOS,\nFreeBSD, etc).\n\nProvided that your software runs in an environment where any process that attempts to open\nthe files you are persisting your data to honor the advisory locks, everything will be\nfine and dandy :)\n\n## Learn more and get started\n\n[Read the docs](https://docs.rs/persistence/) to learn more\nabout what this library is for and how you use it.\n\n## Star me on GitHub\n\nDon't forget to star [persistence on GitHub](https://github.com/ctsrc/persistence)\nif you find this library interesting or useful.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctsrc%2Fpersistence","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctsrc%2Fpersistence","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctsrc%2Fpersistence/lists"}