{"id":28962472,"url":"https://github.com/fuzzyzilla/fzvk","last_synced_at":"2025-06-24T03:07:02.789Z","repository":{"id":299172502,"uuid":"998270255","full_name":"Fuzzyzilla/fzvk","owner":"Fuzzyzilla","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-15T04:46:14.000Z","size":78,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-15T05:38:57.646Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fuzzyzilla.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2025-06-08T08:40:15.000Z","updated_at":"2025-06-15T04:46:17.000Z","dependencies_parsed_at":"2025-06-15T05:39:04.760Z","dependency_job_id":null,"html_url":"https://github.com/Fuzzyzilla/fzvk","commit_stats":null,"previous_names":["fuzzyzilla/fzvk"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Fuzzyzilla/fzvk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuzzyzilla%2Ffzvk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuzzyzilla%2Ffzvk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuzzyzilla%2Ffzvk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuzzyzilla%2Ffzvk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fuzzyzilla","download_url":"https://codeload.github.com/Fuzzyzilla/fzvk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fuzzyzilla%2Ffzvk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261595751,"owners_count":23182245,"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":[],"created_at":"2025-06-24T03:06:59.920Z","updated_at":"2025-06-24T03:07:02.778Z","avatar_url":"https://github.com/Fuzzyzilla.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fuzzy's Funny Zero-cost Excessively-Typestate Vulkan Abstraction\nA thin wrapper around [`ash`](https://github.com/ash-rs/ash) providing\ncompile-time typestate validations.\n\n## Typestate\nThis crate makes extensive (perhaps excessive) use of the [typestate\npattern](https://en.wikipedia.org/wiki/Typestate_analysis) to validate *some*\noperations. Of course, the scope of what can be declared at compile time is\ninherently limited by the need for runtime flexibility, so it is mostly used in\nlocations where it is a common usage pattern that the \"shape\" of the data will\nnot be totally dynamic.\n\nFor example, an `Image` contains the following compile-time information:\n* Its dimensionality (1D, 2D, 3D)\n* Its array-ness\n* Its format and aspects.\n* Its vkImageUsageFlags\n* Whether multisampling is in use.\n\nAs such, a fully-named image type looks something like:\n```rust\nlet image : Image\u003c(Storage, TransferDst), D2Array, R8G8B8_SRGB, SingleSampled\u003e = todo!();\n```\nSince each of these facts are almost always known at compile time and have large\nimplications for valid usage of the resource, they are tracked at compile time\ntoo.\n\n## Why\nAfter [doing the same thing to OpenGL](https://github.com/Fuzzyzilla/glhf), the\nthoughts of which aspects of the vulkan API could likewise be validated using\ncompile-time information kept coming. I threw together the start of the crate\nexpecting some massive unforseen roadblock to materialize, but alas - none has.\n\n## Usage\nThis crate is experimental and not ready for production. The\n[examples](fzvk/examples/) folder contains the fullest view of what this crate\nlooks like in use. The examples and the crate are developed similtaneously to\nensure the library remains pleasant to use and to inform which areas need\nimplementing first.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuzzyzilla%2Ffzvk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuzzyzilla%2Ffzvk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuzzyzilla%2Ffzvk/lists"}