{"id":13672139,"url":"https://github.com/vertexclique/lever","last_synced_at":"2025-10-05T20:25:28.060Z","repository":{"id":40584555,"uuid":"263056767","full_name":"vertexclique/lever","owner":"vertexclique","description":"Pillars for Transactional Systems and Data Grids","archived":false,"fork":false,"pushed_at":"2024-04-15T07:19:26.000Z","size":224,"stargazers_count":132,"open_issues_count":6,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-07T12:43:28.783Z","etag":null,"topics":["imdg","inmemory-cache","mvcc","synchronization-primitives","transactional","transactional-systems"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vertexclique.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"vertexclique","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-05-11T13:52:47.000Z","updated_at":"2025-04-03T07:22:40.000Z","dependencies_parsed_at":"2024-11-23T04:03:32.719Z","dependency_job_id":null,"html_url":"https://github.com/vertexclique/lever","commit_stats":{"total_commits":84,"total_committers":4,"mean_commits":21.0,"dds":0.08333333333333337,"last_synced_commit":"719625d33e79e3766a9313e62be79491b4f1a84d"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/vertexclique/lever","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertexclique%2Flever","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertexclique%2Flever/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertexclique%2Flever/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertexclique%2Flever/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vertexclique","download_url":"https://codeload.github.com/vertexclique/lever/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertexclique%2Flever/sbom","scorecard":{"id":919095,"data":{"date":"2025-08-11","repo":{"name":"github.com/vertexclique/lever","commit":"690d85eb4790caed0bb2c11faf2b2e3e526bbf09"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":3,"reason":"Found 4/12 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/vertexclique/lever/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/vertexclique/lever/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/vertexclique/lever/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/vertexclique/lever/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/vertexclique/lever/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/vertexclique/lever/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/vertexclique/lever/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/vertexclique/lever/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/vertexclique/lever/ci.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE-APACHE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE-APACHE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-24T23:45:30.959Z","repository_id":40584555,"created_at":"2025-08-24T23:45:30.959Z","updated_at":"2025-08-24T23:45:30.959Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278512482,"owners_count":25999311,"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","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["imdg","inmemory-cache","mvcc","synchronization-primitives","transactional","transactional-systems"],"created_at":"2024-08-02T09:01:27.655Z","updated_at":"2025-10-05T20:25:28.028Z","avatar_url":"https://github.com/vertexclique.png","language":"Rust","readme":"\u003ch1 align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/vertexclique/lever/raw/master/img/lever-logo.png\"/\u003e\n\u003c/h1\u003e\n\u003cdiv align=\"center\"\u003e\n \u003cstrong\u003e\n   Pillars for Transactional Systems and Data Grids\n \u003c/strong\u003e\n\u003chr\u003e\n\n[![Build Status](https://github.com/vertexclique/lever/workflows/CI/badge.svg)](https://github.com/vertexclique/lever/actions)\n[![Latest Version](https://img.shields.io/crates/v/lever.svg)](https://crates.io/crates/lever)\n[![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/lever/)\n\u003c/div\u003e\n\nLever is a library for writing transactional systems (esp. for in-memory data). It consists of various parts:\n* `index`: Indexes and lookup structures\n* `stats`: Statistics structures\n* `sync`: Synchronization primitives for transactional systems\n* `table`: Various KV table kinds backed by transactional algorithms\n* `txn`: Transactional primitives and management\n\nLever is using MVCC model to manage concurrency. It supplies building blocks for in-memory data stores for\ntransactional endpoints, databases and systems. Unblocked execution path is main aim for lever while \nnot sacrificing failover mechanisms.\n\nLever provides STM, lock-free, wait-free synchronization primitives and various other tools to facilitate writing\ntransactional in-memory systems.\n\n# Sync\nSynchronization primitives which can allow users to write concurrent task structures. Lever don't have runtime or async code.\nWhole library is based on top of POSIX threads and agnostic IO. That said, these are the few structures which can be used in sync package:\n\n* Lock-free ReentrantRwLock\n* Spinlocks\n* Fair locks\n\n# Tables\n\nLever's table system can be can be used like this:\n```rust\nuse lever::prelude::*;\nuse std::sync::Arc;\n\nfn main() {\n    let lotable: Arc\u003cLOTable\u003cString, u64\u003e\u003e = Arc::new(LOTable::new());\n\n    // RW from 1_000 threads concurrently.\n    let thread_count = 1_000;\n    let mut threads = vec![];\n\n    for thread_no in 0..thread_count {\n        let lotable = lotable.clone();\n\n        let t = std::thread::Builder::new()\n            .name(format!(\"t_{}\", thread_no))\n            .spawn(move || {\n                let key = format!(\"{}\", thread_no);\n                lotable.insert(key.clone(), thread_no);\n                let _ = lotable.get(\u0026key).unwrap();\n            })\n            .unwrap();\n\n        threads.push(t);\n    }\n\n    for t in threads.into_iter() {\n        t.join().unwrap();\n    }\n}\n```\n\nMind that Lever comes with MVCC. MVCC is fully implemented with BOCC style for optimistic locking.\nLever is under heavy work, other txn resolution algos and concurrency control mechanisms are under active development.\n\n# Transaction System\n\nTransaction system has couple of primitives. Which are `begin`, `commit` and various methods for management of the\ntransaction over the course of execution.\n\nExample transaction would be like:\n```rust\nuse lever::prelude::*;\n\nlet mut customers = TVar::new(123_456);\n\ntxn.begin(|t| {\n    let mut churned = t.read(\u0026customers);\n    churned += 1;\n    t.write(\u0026mut customers, churned);\n});\n\nprintln!(\"I have {} customers right now. I gained 1.\", customers.get_data());\n```\n\nFor more examples please visit [examples](https://github.com/vertexclique/lever) directory.\n\n## Performance\n\nInitial benchmarks show very high throughput for varying workloads.\n\nWorkloads are separated in benchmarks like:\n* Pure reads from concurrent 8 threads\n* 80-20 R/RW mixed from concurrent 8 threads\n* Pure writes from concurrent 8 threads\n\nLever is performant. E.g. Lever's table implementations are doing 25+ million operations under 1,9 seconds.\nWhole thing is used in production and continuously improved. This crate consolidates plenty of primitives, tools, structures and such.\nYou can try benchmarking yourself. Benchmarking code is included.\n\n## Notes for the user\n\nNote that transactions never and ever inherit heavy work in their code path since they are mostly intended for accessing\nto shared memory and concurrency enabled by their code paths success.\n\nIsolation separated to threads not onto a global memory. That's why it is extremely fast.\n\nRollbacks are automatic, it won't interfere with your program, or bail. There will be system which incorporates fatal aborts. That work is ongoing.\n\n## TODO\n\n- [ ] Fatal aborts\n- [ ] Other concurrency schemes\n- [ ] Various conflict resolution strategies.\n- [ ] Grid communication\n- [ ] ...\n\n#### License\n\n\u003csup\u003e\nLicensed under either of \u003ca href=\"LICENSE-APACHE\"\u003eApache License, Version\n2.0\u003c/a\u003e or \u003ca href=\"LICENSE-MIT\"\u003eMIT license\u003c/a\u003e at your option.\n\u003c/sup\u003e\n\n\u003cbr\u003e\n\n\u003csub\u003e\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in this crate by you, as defined in the Apache-2.0 license, shall\nbe dual licensed as above, without any additional terms or conditions.\n\u003c/sub\u003e\n","funding_links":["https://github.com/sponsors/vertexclique"],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvertexclique%2Flever","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvertexclique%2Flever","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvertexclique%2Flever/lists"}