-
Notifications
You must be signed in to change notification settings - Fork 63
Description
There is a bunch of Rust tools out there that ease access to (parts of) Xcode:
- Create a new Xcode project:
cargo-xcode - Create new Xcode project and launch it in the simulator / on device:
- Create application bundles:
- Launch Instruments:
cargo-instruments - Create fat binaries:
cargo-lipo - Make Rust packages available to Objective-C/Swift:
cargo-cocoapods - Create and launch a .app bundle automatically:
fruitbasket - Lower-level tools for Apple-specific stuff:
apple-platform-rs,apple-bundle
But all of them currently feel quite clunky, or are missing a lot of functionality.
If we actually desire at least somewhat competitiveness with Swift (#429), it needs to be easy to:
- Use storyboards/nib files.
- Use assets.
- Configure application information (
Info.plist). - Use advanced debugging utilities (main thread checker, UI hierarchy viewer, metal shader debugger, ...).
- Bundle, sign and publish to the app store.
All of these are certainly possible to do outside of Xcode, and we should strive towards that eventually, but it's going to take a lot of time for the ecosystem to get there! So instead, we should start by making it easier to work with Rust projects inside Xcode!
Perhaps a path forward would be some combination of rust-xcode-plugin / rust-xcode-langspec, a Source Editor Extension and cargo-xcode? Ideally, we'd want full LSP-like support, and probably eventually some kind of IBAction/IBOutlet support, but having a solid way to run Rust applications from inside Xcode would be a huge step!
Let's also remember that Rust is not the only ecosystem that has this problem, perhaps we can learn from what others are doing? Mentioning XcodeGen here.