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 project and launch simulator:
- 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, ...).
- 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
, 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.
Activity