{"id":22430688,"url":"https://github.com/drewcrawford/quartzcorer","last_synced_at":"2025-03-27T07:15:30.127Z","repository":{"id":136803551,"uuid":"427819520","full_name":"drewcrawford/quartzcorer","owner":"drewcrawford","description":"Drew's very fast Core Animation bindings","archived":false,"fork":false,"pushed_at":"2024-10-23T21:09:22.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T11:02:07.702Z","etag":null,"topics":["core-animation","coreanimation","quartz","quartzcore","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drewcrawford.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,"publiccode":null,"codemeta":null}},"created_at":"2021-11-14T02:29:27.000Z","updated_at":"2024-10-23T21:09:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"36c542a9-c4a4-4ae0-869b-dbd7834c0282","html_url":"https://github.com/drewcrawford/quartzcorer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drewcrawford%2Fquartzcorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drewcrawford%2Fquartzcorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drewcrawford%2Fquartzcorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drewcrawford%2Fquartzcorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drewcrawford","download_url":"https://codeload.github.com/drewcrawford/quartzcorer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245798354,"owners_count":20673902,"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":["core-animation","coreanimation","quartz","quartzcore","rust"],"created_at":"2024-12-05T21:09:10.211Z","updated_at":"2025-03-27T07:15:30.091Z","avatar_url":"https://github.com/drewcrawford.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Drew's fast Rust QuartzCore bindings\n\nProvides select Rust bindings for Apple [QuartzCore](https://developer.apple.com/documentation/quartzcore) framework, also known as Core Animation.  As far as I know,\nthis is the only crate to use this framework from Rust.\n\n\nPart of the [objr expanded universe](https://github.com/drewcrawford/objr#objr-expanded-universe), distinctive features of this library:\n\n* Fast.  This crate is *significantly* faster than other crates.  If you're struggling to get 60fps or ProMotion/adaptive refresh rate speeds, this\n  is the solution for you.\n    * The full set of optimization is far too many to list, but the big idea is to either do what native ObjC/Swift applications do, or do something faster.\n    * Compile-time selectors.  Most Rust crates do a runtime lookup for ObjC methods, which involves acquiring a lock and other yucky stuff, either on the first call or every call.  Instead, we do what real ObjC compilers do, which is way faster.  For more details, see [objr](https://github.com/drewcrawford/objr)\n    * Smart pointers that provide global ARC inference.  Like ARC, you don't need to write manual retain/release calls.  Unlike ARC, the compiler\n      usually doesn't need to write them either, meaning lower runtime memory management cost than even native code.  For more details, see [objr](https://github.com/drewcrawford/objr).\n    * Runtime autorelease eliding, which keeps your objects out of autoreleasepools.  For more details, see [objr](https://github.com/drewcrawford/objr).\n    * Pointer packing for optional types so they fit in a `u64`.  For more details, see [objr](https://github.com/drewcrawford/objr)\n* Safe APIs.  Where possible APIs are designed with safe abstractions to provide familiar guarantees to Rust developers\n* Low-level.  These bindings assume familiarity with bound APIs and are not documented separately.  For details on how they work, see the native documentation.\n* Free for noncommercial or \"small commercial\" use.\n\n# Implementation status\nThe following APIs are at least partially implemented.  These implementations are incomplete but contain common functions or \"the ones I use\".\n\nThe [objr](https://github.com/drewcrawford/objr) macro system makes it very ergonomic to add new bindings for specific missing features\nor new Metal APIs.\n\n* CAMetalLayer - many APIs\n* CAMetalDrawable - a few APIs\n* CALayer - type only\n* CALayerDelegate - type only\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrewcrawford%2Fquartzcorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrewcrawford%2Fquartzcorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrewcrawford%2Fquartzcorer/lists"}