{"id":20428989,"url":"https://github.com/kuba--/cuckoo","last_synced_at":"2025-04-12T19:43:26.864Z","repository":{"id":18978689,"uuid":"85718512","full_name":"kuba--/cuckoo","owner":"kuba--","description":"Cuckoo Filter: Practically Better Than Bloom","archived":false,"fork":false,"pushed_at":"2023-02-21T22:33:33.000Z","size":16,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-26T14:01:45.391Z","etag":null,"topics":["bloom","cuckoo","cuckoo-filter","golang","hashing"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/kuba--.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-21T15:25:18.000Z","updated_at":"2022-03-16T02:32:38.000Z","dependencies_parsed_at":"2024-06-19T15:10:57.033Z","dependency_job_id":null,"html_url":"https://github.com/kuba--/cuckoo","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuba--%2Fcuckoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuba--%2Fcuckoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuba--%2Fcuckoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuba--%2Fcuckoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kuba--","download_url":"https://codeload.github.com/kuba--/cuckoo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625478,"owners_count":21135512,"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":["bloom","cuckoo","cuckoo-filter","golang","hashing"],"created_at":"2024-11-15T07:32:20.535Z","updated_at":"2025-04-12T19:43:26.834Z","avatar_url":"https://github.com/kuba--.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GoDoc](https://godoc.org/github.com/kuba--/cuckoo?status.svg)](http://godoc.org/github.com/kuba--/cuckoo)\n[![Go Report Card](https://goreportcard.com/badge/github.com/kuba--/cuckoo#)](https://goreportcard.com/report/github.com/kuba--/cuckoo)\n[![Build Status](https://github.com/kuba--/cuckoo/workflows/build/badge.svg)](https://github.com/kuba--/cuckoo/actions?query=workflow%3Abuild)\n\n# Cuckoo Filter: Practically Better Than Bloom\nPackage _cuckoo_ provides a Cuckoo Filter (Practically Better Than Bloom).\nCuckoo filters provide the ﬂexibility to add and remove items dynamically.\nA cuckoo filter is based on cuckoo hashing (and therefore named as cuckoo filter).\nIt is essentially a cuckoo hash table storing each key's fingerprint.\n\nImplementation is based heavily on whitepaper: \"Cuckoo Filter: Better Than Bloom\" by Bin Fan, Dave Andersen and Michael Kaminsky\n(https://www.cs.cmu.edu/~dga/papers/cuckoo-conext2014.pdf).\n\n### Example\n```go\n    var item []byte\n\n    // Create a new filter with 32MB capacity\n    f := cuckoo.NewFilter(32 * 1024 * 1024)\n\n    if f.Lookup(item) {\n        if !f.Delete(item) {\n            // Cannot delete the item\n            // ...\n        }\n    } else {\n        if err := f.Insert(item); err != nil {\n            // Hashtable is considered full\n            // ...\n        }\n    }\n```\n\n### Fuzzing - randomized testing\n- get go-fuzz\n```\n    $ go get github.com/dvyukov/go-fuzz/go-fuzz\n    $ go get github.com/dvyukov/go-fuzz/go-fuzz-build\n```\n\n- build the test program with necessary instrumentation\n```\n    $ go-fuzz-build github.com/kuba--/cuckoo/fuzz/cuckoo\n```\n\n- ready to go\n```\n    $ go-fuzz -bin=./cuckoo-fuzz.zip -workdir=/tmp/cuckoo\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuba--%2Fcuckoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuba--%2Fcuckoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuba--%2Fcuckoo/lists"}