Preferences

> Apple does not permit any apps that has interpreted or generated code

An interesting exception to this is Expo, an app that lets you load React Native apps built by other developers over the internet. Expo gets around this on Apple by forcing you to sign into that developer's account before downloading their app, so that it's plausibly "yours". I've used to distribute early builds of a React Native app really easily.

All of this to say, I wonder to what degree Apple's policy applies when it's "your" app, or you are the developer, or whatever. I suspect Expo, as a venture backed startup, has some kind of a working relationship with Apple that affords them a tiny amount more leeway than the average Github user.

This could actually be an incredibly useful application that many people pay lots of money for if were ever allowed on the market -- think of the combination of iPad + keyboard + Windows Remote Desktop. Really sad that Apple makes their platform so restrictive. (Yes, security issues, but still, seems like a good enough sandbox could overcome the danger of remote execution.)


rhodysurf
Expo is also completely different and within the rules. They arent installing apps, they are simply loading JS and running it like any RN app could do. They just make it easy by pre-bundling deps so that they can be loaded on the fly. Its literally just downloading JS and assets from a server and then executing the JS with JSC on ios.

They also get around the limitation of having half the screen showing the executed code by not letting users modify the code through their app.

lwb OP
Right, but the QEMU project is also simply loading X86 (or other) assembly code and interpreting it in a virtual machine... unless I misunderstand this project and it does something more sophisticated.

> the limitation of having half the screen showing the executed code

I'm not aware of this limitation, could the QEMU port use this to show the ASM that's being executed to get around this?

rhodysurf
IDK about virtual machines and why this isnt allowed. But related is how this app works that is a c compiler for iOS and is in the app store: https://www.reddit.com/r/iOSProgramming/comments/dr5bxi/app_...

It basically does the same thing Swift Playgrounds does where is compiles to LLVM machine code and runs it will LLVM compiled for iOS. And it is on the app store so IDK the rules at all apparently and why QEMU wouldnt be allowed.

The rules apparently (since last year or so) are that you can interpret arbitrary code as long as the code in question not only legally but in practice meets the definition of the zeroth FSF's rule (notice that the “executables” on the FS image distributed with SeeLess are LLVM IR assembly text files, which is probably the reason why the thing is so damn huge)
saagarjha
Swift Playgrounds compiles to native code and loads it with Apple-private entitlements.
ericlewis
the largest difference is that Expo uses JavaScriptCore, a framework provided by apple for use by any application that wishes to execute javascript code. Since it is their own interpreter it is fine.
Apple's really loose with the interpreted code policy. Not going to mention some of the apps I use that do so if nothing else because HN has dozens of Apple employees.
saagarjha
> Not going to mention some of the apps I use that do so if nothing else because HN has dozens of Apple employees.

Believe me, the engineers at Apple are well aware of them already.

jsjohnst
> iPad + keyboard + Windows Remote Desktop

Why not just install the free Microsoft RDP client for iOS? Seems like extreme overkill to use an x86 emulator with a full OS installed to do something that’s available for free in the AppStore.

ben174
Because remote desktop needs a connection and a remote PC to connect to.
jsjohnst
Why would you RDP into a Windows machine running on an iPad in a VM rather than just directly interact with the UI? That doesn’t make sense.
anonsivalley652
That's not much different than TestFlight (acquired by Apple) or MS AppCenter (acquired as HockeyApp).

PS: I'm using an iPad Pro 10.5 over LTE right now with an original Apple Wireless Keyboard 1 with proper arrow keys. I use Vim on it and can save to shared services. Heck, you can even fire-up the embedded python with :!python3<enter> It also redirects phone calls from my vintage unlimited data plan, so I don't need a phone... but it looks goofy talking into my iPad John Oliver-style. ;)

lwb OP
The important difference is the turn around time -- with Expo I can make a change locally and see it with my testers in less than a minute, whereas with TestFlight everything has to be manually reviewed for 2-3 days after a heavy-handed submission process.
jsjohnst
I routinely do TestFlight builds without manual review and fast turnaround from build -> running on beta user devices.
lwb OP
How? Genuine question. I am trying to distribute an app right now and it always takes at least 2 days from submission time to TestFlight approval.
saagarjha
Change the build number and leave the version number alone.
lwb OP
Wow, TIL. That changes everything.

This item has no comments currently.