{"id":13477526,"url":"https://github.com/madsmtm/objc2","last_synced_at":"2025-05-13T21:10:10.451Z","repository":{"id":37616813,"uuid":"401079899","full_name":"madsmtm/objc2","owner":"madsmtm","description":"Bindings to Apple frameworks in Rust","archived":false,"fork":false,"pushed_at":"2025-05-11T22:50:57.000Z","size":11331,"stargazers_count":559,"open_issues_count":97,"forks_count":56,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-11T23:26:19.746Z","etag":null,"topics":["appkit","apple","cocoa","ffi-bindings","foundation","ios","macos","objc","objc2","objective-c","rust","rust-lang","tvos","uikit","visionos","watchos"],"latest_commit_sha":null,"homepage":"https://docs.rs/objc2/","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/madsmtm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-29T15:44:52.000Z","updated_at":"2025-05-11T22:51:01.000Z","dependencies_parsed_at":"2024-04-03T13:30:20.565Z","dependency_job_id":"10534116-610c-44b0-9b51-87b3640c9a7e","html_url":"https://github.com/madsmtm/objc2","commit_stats":{"total_commits":3056,"total_committers":28,"mean_commits":"109.14285714285714","dds":0.4319371727748691,"last_synced_commit":"893d0441b4132a4f01e7ca2e0007746ee7eb58bd"},"previous_names":[],"tags_count":283,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madsmtm%2Fobjc2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madsmtm%2Fobjc2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madsmtm%2Fobjc2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/madsmtm%2Fobjc2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/madsmtm","download_url":"https://codeload.github.com/madsmtm/objc2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253650795,"owners_count":21942217,"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":["appkit","apple","cocoa","ffi-bindings","foundation","ios","macos","objc","objc2","objective-c","rust","rust-lang","tvos","uikit","visionos","watchos"],"created_at":"2024-07-31T16:01:44.056Z","updated_at":"2025-05-13T21:10:05.366Z","avatar_url":"https://github.com/madsmtm.png","language":"Rust","readme":"# [![Rust + \\[Obj-C\\]](assets/logo-small.png)](https://github.com/madsmtm/objc2) \u003cbr\u003e Objective-C in Rust\n\n[![License](https://badgen.net/badge/license/Zlib%20OR%20Apache-2.0%20OR%20MIT/blue)](./LICENSE.md)\n[![Documentation](https://docs.rs/objc2/badge.svg)](https://docs.rs/objc2/)\n[![CI](https://github.com/madsmtm/objc2/actions/workflows/ci.yml/badge.svg)](https://github.com/madsmtm/objc2/actions/workflows/ci.yml)\n\n**See [`objc2`] for top-level documentation**, including [the documentation on framework crates].\n\nAlso check out [`block2`] and [`dispatch2`].\n\n[`objc2`]: https://docs.rs/objc2/\n[the documentation on framework crates]: https://docs.rs/objc2/latest/objc2/topics/about_generated/index.html\n[`block2`]: https://docs.rs/block2/\n[`dispatch2`]: https://docs.rs/dispatch2/\n\n\n## Contact\n\nAlways feel free to [open an issue on GitHub](https://github.com/madsmtm/objc2/issues/new/choose) if you find a problem or have any questions.\n\nIf you prefer to have a more synchronous and less \"formal\" discussion, there is [a Matrix workspace](https://matrix.to/#/#objc2:matrix.org), feel free to ask any questions in the \"Users\" room.\n\nAlso see [`CONTRIBUTING.md`](./CONTRIBUTING.md) if you would like to help out.\n\n\n## License\n\nThe licensing of the project is a bit complicated, see\n[`LICENSE.md`](./LICENSE.md) for details.\n\n\n## Acknowledgements / Prior art\n\nThis repository is a merge of the following projects, see reasoning for the\nfork [here](https://github.com/SSheldon/rust-objc/issues/101):\n- [`objc`](https://github.com/SSheldon/rust-objc), renamed to `objc2`.\n- [`objc-encode`](https://github.com/SSheldon/rust-objc-encode), renamed to `objc2-encode`.\n- [`objc_exception`](https://github.com/SSheldon/rust-objc-exception), moved to `objc2::exception`.\n- [`objc_id`](https://github.com/SSheldon/rust-objc-id), moved to `objc2::rc`.\n- [`objc-foundation`](https://github.com/SSheldon/rust-objc-foundation), renamed to `objc2-foundation`.\n- [`block`](https://github.com/SSheldon/rust-block), renamed to `block2`.\n\nThese were created almost solely by [@SSheldon](https://github.com/SSheldon),\nso a huge thanks for their fantastic work on these crates!\n\nAdditionally, the `dispatch2` crate originally lived [here](https://github.com/marysaka/dispatch2).\n\nThis project also draws inspiration from:\n- [`apple-sys`](https://github.com/youknowone/apple-sys)\n- [`cacao`](https://github.com/ryanmcgrath/cacao)\n- [the `core-foundation-rs` project](https://github.com/servo/core-foundation-rs)\n- [`fruity`](https://github.com/nvzqz/fruity)\n- [`metal`](https://github.com/gfx-rs/metal-rs)\n- [`objrs`](https://gitlab.com/objrs/objrs)\n- [`objr` and family](https://github.com/drewcrawford/objr#objr-expanded-universe)\n- [`rust-macios`](https://github.com/a-isaiahharvey/rust-macios)\n- [`uikit-sys`](https://github.com/simlay/uikit-sys) and `@simlay`'s [Objective-C work on `bindgen`](https://rust-lang.github.io/rust-bindgen/objc.html)\n- [`cidre`](https://github.com/yury/cidre)\n- [the `apple-media` project](https://github.com/rust-media/apple-media-rs)\n- [`dispatch`](https://github.com/SSheldon/rust-dispatch)\n\nFinally, this is by far not the only project that ever tried to interoperate with Objective-C; other languages have done so as well (to varying degrees of success):\n- Swift: Built from the beginning for Objective-C interop, and is what `objc2` aspires to have feature-parity with (though will probably never reach). Truly beautifully designed language!\n- C#: Xamarin, [Xamarin.Mac](https://www.mono-project.com/docs/tools+libraries/libraries/monomac/), a good source of inspiration for what \"should\" work.\n- Python: [PyObjC](https://pypi.org/project/pyobjc/) (previously?) official Apple project that worked with \"BridgeSupport\", nowadays they also [generate metadata by invoking Clang](https://github.com/ronaldoussoren/objective.metadata). Others include [`objp`](https://pypi.org/project/objp/) and [rubicon.objc](https://rubicon-objc.readthedocs.io/en/latest/index.html)\n- Ruby: [MacRuby](http://macruby.org/), RubyCocoa\n- Dart: [`ffigen`](https://github.com/dart-lang/ffigen/tree/master/example/objective_c)\n- Kotlin: [somewhat built-in support](https://kotlinlang.org/docs/native-objc-interop.html)\n- Nim: [somewhat built-in support](https://nim-lang.org/docs/backends.html), [`darwin`](https://github.com/yglukhov/darwin), [`objc`](https://github.com/jangko/objc)\n- D: [somewhat built-in support](https://dlang.org/spec/objc_interface.html), [`derelict`](https://github.com/AuburnSounds/Dplug/tree/v12.8.0/macos/derelict/cocoa)\n- Java: [Java-Objective-C-Bridge](https://github.com/shannah/Java-Objective-C-Bridge), [Multi-OS Engine: Nat/J](https://github.com/multi-os-engine/moe-natj) (also has a [generator](https://github.com/multi-os-engine/moe-natjgen)), Apple also has a very old official project.\n- Node.js: [NodObjC](https://github.com/TooTallNate/NodObjC), [`objc`](https://github.com/lukaskollmer/objc)\n- Zig: [zig-objcrt](https://github.com/hazeycode/zig-objcrt)\n- V: Not really existing, they just write and compile Objective-C code, and use manual C-bindings.\n- Go: [MacDriver](https://github.com/progrium/macdriver)\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadsmtm%2Fobjc2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmadsmtm%2Fobjc2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmadsmtm%2Fobjc2/lists"}