{"id":28434195,"url":"https://github.com/1password/zeroizing-alloc","last_synced_at":"2026-03-09T08:02:55.781Z","repository":{"id":264290704,"uuid":"892812766","full_name":"1Password/zeroizing-alloc","owner":"1Password","description":"A minimal secure heap zero-on-free implementation for Rust","archived":false,"fork":false,"pushed_at":"2025-12-01T13:13:26.000Z","size":12,"stargazers_count":38,"open_issues_count":2,"forks_count":3,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-02-11T01:36:33.025Z","etag":null,"topics":[],"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/1Password.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2024-11-22T20:37:09.000Z","updated_at":"2025-12-01T13:13:31.000Z","dependencies_parsed_at":"2024-11-23T06:37:42.716Z","dependency_job_id":"ee4b4554-bda4-4d65-a454-ae804b28b06a","html_url":"https://github.com/1Password/zeroizing-alloc","commit_stats":null,"previous_names":["1password/zeroizing-alloc"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/1Password/zeroizing-alloc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1Password%2Fzeroizing-alloc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1Password%2Fzeroizing-alloc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1Password%2Fzeroizing-alloc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1Password%2Fzeroizing-alloc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1Password","download_url":"https://codeload.github.com/1Password/zeroizing-alloc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1Password%2Fzeroizing-alloc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30287448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2025-06-05T19:08:05.502Z","updated_at":"2026-03-09T08:02:55.773Z","avatar_url":"https://github.com/1Password.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## About\n\n[![crates.io version](https://img.shields.io/crates/v/zeroizing-alloc.svg)](https://crates.io/crates/zeroizing-alloc)\n[![crates.io downloads](https://img.shields.io/crates/d/zeroizing-alloc.svg)](https://crates.io/crates/zeroizing-alloc)\n\n`zeroizing-alloc` is a proof-of-concept crate for a [Global Allocator](https://doc.rust-lang.org/std/alloc/trait.GlobalAlloc.html) in Rust that securely zeroizes all objects\nupon deallocation, with a very low performance impact. It otherwise wraps the provided allocator and keeps its behavior.\n\n### Example\n\nTo use this, you must define an allocator in your top-level binary or shared library. This looks like the following:\n```rust\nuse zeroizing_alloc::ZeroAlloc;\n\n#[global_allocator]\nstatic ALLOC: ZeroAlloc\u003cstd::alloc::System\u003e = ZeroAlloc(std::alloc::System);\n```\n\n### Contributions\nWe believe this crate to be feature-complete for its intended use cases. While PRs are always welcome, please keep in mind that the effort to verify the \ncorrectness and performance of changes made may not be worthwhile when weighed against the changeset itself.\n\n### Research\n\nOn semi-recent Apple platforms (macOS 13+, iOS/tvOS 16.1+), the default allocator in `libSystem` [started zeroizing on free() by default.](https://mjtsai.com/blog/2022/09/20/zeroing-freed-memory/). \nThis functionality is better optimized and more reliable than this wrapper, so it may be preferred. However, it is possible to [disable the behavior](https://github.com/apple-oss-distributions/libmalloc/blob/ac949e88b5b5fb90bf2e051c8a73754136ff1b43/private/malloc_private.h#L99)\nin a few ways depending on your threat model.\n\n## Credits\n\nMade with ❤️ by the [1Password](https://1password.com/) data security team.\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1password%2Fzeroizing-alloc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1password%2Fzeroizing-alloc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1password%2Fzeroizing-alloc/lists"}