{"id":13672367,"url":"https://github.com/zowens/commitlog","last_synced_at":"2026-04-06T06:04:15.657Z","repository":{"id":13575268,"uuid":"74789623","full_name":"zowens/commitlog","owner":"zowens","description":"Append-only commit log library for Rust","archived":false,"fork":false,"pushed_at":"2024-06-19T07:25:34.000Z","size":258,"stargazers_count":102,"open_issues_count":12,"forks_count":14,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-10T09:05:48.547Z","etag":null,"topics":["database","log","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zowens.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2016-11-25T21:39:58.000Z","updated_at":"2024-07-04T07:52:38.000Z","dependencies_parsed_at":"2024-03-09T05:29:38.297Z","dependency_job_id":"d4813539-c889-446c-b53f-fc5a682ac6f3","html_url":"https://github.com/zowens/commitlog","commit_stats":{"total_commits":155,"total_committers":8,"mean_commits":19.375,"dds":0.08387096774193548,"last_synced_commit":"d1c1e51b1b08af1f91aefc1804fe36294b5b056a"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zowens%2Fcommitlog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zowens%2Fcommitlog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zowens%2Fcommitlog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zowens%2Fcommitlog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zowens","download_url":"https://codeload.github.com/zowens/commitlog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224087261,"owners_count":17253525,"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":["database","log","rust"],"created_at":"2024-08-02T09:01:33.577Z","updated_at":"2025-12-12T14:44:12.216Z","avatar_url":"https://github.com/zowens.png","language":"Rust","readme":"# Commit Log\n\nSequential, disk-backed commit log library for Rust. The library can be used in various higher-level distributed abstractions on top of a distributed log such as [Paxos](https://github.com/zowens/paxos-rs), [Chain Replication](https://github.com/zowens/chain-replication) or Raft.\n\n[![Crates.io](https://img.shields.io/crates/v/commitlog.svg?maxAge=2592000)](https://crates.io/crates/commitlog)\n[![Docs.rs](https://docs.rs/commitlog/badge.svg)](https://docs.rs/commitlog/)\n[![Travis](https://travis-ci.org/zowens/commitlog.svg?branch=master)](https://travis-ci.org/zowens/commitlog/)\n\n[Documentation](https://docs.rs/commitlog/)\n\n## Usage\n\nFirst, add this to your `Cargo.toml`:\n\n```toml\n[dependencies]\ncommitlog = \"0.2\"\n```\n\n```rust\nuse commitlog::*;\nuse commitlog::message::*;\n\nfn main() {\n    // open a directory called 'log' for segment and index storage\n    let opts = LogOptions::new(\"log\");\n    let mut log = CommitLog::new(opts).unwrap();\n\n    // append to the log\n    log.append_msg(\"hello world\").unwrap(); // offset 0\n    log.append_msg(\"second message\").unwrap(); // offset 1\n\n    // read the messages\n    let messages = log.read(0, ReadLimit::default()).unwrap();\n    for msg in messages.iter() {\n        println!(\"{} - {}\", msg.offset(), String::from_utf8_lossy(msg.payload()));\n    }\n\n    // prints:\n    //    0 - hello world\n    //    1 - second message\n}\n\n```\n\n## Prior Art\n\n- [Apache Kafka](https://kafka.apache.org/)\n- [Jocko](https://github.com/travisjeffery/jocko) + [EXCELLENT Blog Post](https://medium.com/the-hoard/how-kafkas-storage-internals-work-3a29b02e026)\n","funding_links":[],"categories":["Rust","rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzowens%2Fcommitlog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzowens%2Fcommitlog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzowens%2Fcommitlog/lists"}