Is Xojo really AppleSilicon native?

Ah I understand the detail I’m missing. Once Rosetta is installed, the IDE can be switched back into native mode and the linker will still function. Ok, that’s not as bad as I thought.

1 Like

I’m working on something that must be M1 native and cannot require Rosetta. I discovered Xojo could not do this. I’ll build on an Intel machine and transfer it over to the M1 for testing. Hats off to you for getting it working*.

This discussion about the linker being faster, a small portion, or whatever is disappointing. I have never once thought about configuring, disabling, or replacing the linker with Xojo. Citizen devs may not even know it exists. Words like “native” and such matter and have meaning in our industry.

It reminds me of driving a rental car in the Texas hot heat without air conditioning. Imagine if the rental company suggested to me I would benefit from better gas mileage without air conditioning.

I traded in the car for one that worked as advertised.

3 Likes

Correct.

I think you are misunderstanding. Apps made with Xojo have been fully native since our last release of 2020.

This discussion is about the IDE. It requires Rosetta for linking. That’s it. Everything else about using the IDE including compiling is fully native.

I have no misunderstanding. I clicked “Run” on an M1 without Rosetta and it didn’t work. I understand apps built on a machine where Xojo works* can produce fully native M1 apps.

If food is organic and some part of it is not organic, then it is not organic.

2 Likes

So you have a need to be able to build without Rosetta? Why is that?

I want to say without a doubt and full certainty that the app is M1 native. I don’t want to discover that some sub-program/library/worker/dependency is actually Intel based and I didn’t notice because I had Rosetta installed.

Maybe there is a magic command I can analyze all the files in my project and evaluate what CPU instruction set it uses. Right before launch I could discover some huge dependency I need to replace. Or, I could just not have Rosetta installed and its painfully obvious what doesn’t work.

2 Likes

Build it, disable rosetta, fully test it?

2 Likes

Geoff, the problem isn’t so much that you were not telling the truth in the first place - what causes much more damage to your reputation is that you are digging your hole ever deeper by making excuses.

That has been the modus operandi for quite some time now, and a lot of people have lost their enthusiasm for Xojo as a result. If you can’t trust Xojo the company, how can you trust Xojo the tool?

4 Likes

I find the whole “it’s only the linker!” to be a weird nuance that doesn’t actually help anyone who wants to use Xojo on the M1. Without Rosetta, which is not guaranteed to be available or work, Xojo is a no go. Not actually a big deal as many recognize, just an FYI for anyone who stumbles upon random “posix_spawn” errors.

Also, it does NOT prompt for Rosetta. Maybe Xojo should.

3 Likes

It will only prompt for Rosetta if Rosetta is not already installed. This is an OS-level thing.

Right. When I open Xcode it prompts me, or any number of apps that need it. Xojo does not.

So just to be clear, those other apps prompted you but you never installed Rosetta? Because once installed, you shouldn’t be asked again.

Right. As I said, I do not have or want Rosetta. Xojo is the only app that needs it that doesn’t prompt. I guess Xojo doesn’t really need it but whatever linker utility or command you do call does and that’s the disconnect. Anyway, to someone who doesn’t know about linkers you just get random “posix_spawn” error and it looks like Xojo is broken.

1 Like

No, it has not. We pride ourselves on being open and honest with everyone we interact with. You may sometimes want us to share more than we are comfortable sharing and you may not like everything we say but that’s not the same as lying. We never said that Xojo was entirely native and the fact that the linker is faster on Rosetta than previous Macs that we chose not to make the press release more confusing by going into a level that is unnecessary should be understandable.

Not exactly true. You are right if you try to launch a non-native app, it will tell you to install Rosetta if it isn’t already installed. However, Xojo is now native except for the linker, and trying to use the linker does not trigger the Rosetta prompt even if Rosetta is not installed.

1 Like

If they have run Xojo prior to 2021r1 then they have Rosetta installed. It would not run without it. So the only way someone could run into this would be to get a new M1 and never run any software that is not M1 native (including any previous version of Xojo) before launching 20201r1.

FWIW, the linker is provided by Apple and they hadn’t opened sourced their linker that can run natively until it was too late for 2021r1. The Xojo IDE, framework and compiler are 100% native. We didn’t feel it made sense to delay 2021r1 for something that won’t make much difference.

Last but not least, ideally if you’re going to ship an Intel version of your app, you should build it and test it. Presumably you’ll be testing it on the M1 which means Rosetta will have to be installed. Otherwise, it means moving the Intel version of your app to an Intel-based Mac for testing which of course works as well.

Yes, it turns out that is true (Travis was just explaining that specific situation to me) but that seems exceedingly rare. It means you have an M1 but have never run anything that was not native. However, in that rare case, we have added something to the docs to show people how to force the system to prompt for the install.