Skip to content

Improve Xcode support #459

Open
Open

Description

@madsmtm

There is a bunch of Rust tools out there that ease access to (parts of) Xcode:

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.

Activity

  1. madsmtm commented on Jun 15, 2023

    @madsmtm
    OwnerAuthor

    Whether or not we (as in, the objc2 project) end up solving these problems, we need to curate and link users to the current best solutions.

  2. madsmtm commented on Sep 13, 2023

    @madsmtm
    OwnerAuthor
  3. madsmtm commented on Dec 7, 2023

    @madsmtm
    OwnerAuthor

    Swift has something called Package Plugins, specifically the "build tool plugin" may allow us to easily invoke Cargo from Xcode

  4. madsmtm commented on Dec 12, 2023

    @madsmtm
    OwnerAuthor

    For interface builder support, this removed document detailing the legacy IB plug-ins might reveal some more information on how these links work?

    Maybe it utilizes NSKeyValueBindingCreation?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions