Hi, author here. I’m here to answer any questions but also I want to advertise the fact that it would be really really awesome if interested devs can join the project. Currently it’s just me doing this on my spare time for the past year. Specifically I’m a complete newbie at UI/UX stuff and the project could use a real designer/front end developer.
Also for more info and a few videos demonstrating capabilities and performance check out the website: https://getutm.app/
Thanks for the amazing work, I thought about this a while back when I saw WINE Hangover for Android but this is even better (in some ways, at least). Sadly, the iPadOS/iOS 13.3.1 issue is a headache and the certain jailbreak tools which usually get around IPA signing aren't working either.
Whilst most people are saying it's a bug on Apple's side I'm worried it's more than that. The removal of signed iPadOS/iOS 13.3 from their servers, along with the returned ability of flashing static lib'ed packages after all being blocked for a while seems more "on purpose" from Apple rather than "by accident". We gotta just wait and see, I guess.
I think the jailbreak IPA signing isn’t working because it needs the `get-task-allow` entitlement which idk if every tool is aware of. This entitlement is only given out in development profiles and not any distribution profiles so I can’t upload to TestFlight either. If Apple locks down what you can do with `get-task-allow` in the future then a jailbreak would be required to run this.
Curious what you use that for. My previous exposure for "get task" on Darwin/XNU is it's useful for reading or writing the memory of another process and suspending or resuming its threads, as in writing a debugger.
The app pretends to debug itself, which tricks the kernel into allowing it to flip the permissions of pages between write and execute. To do this it needs the get_task_allow entitlement.
Ah ok. So everything with a JIT will need this. I think I might even have read that somewhere long ago.
This is a weird thing by the way. It seems to me like you should be able to debug or do VM syscalls against yourself because there is no escalation of privilege. Debugging another process makes much more sense to block. But maybe my opinion is invalid because I also happen to think disallowing jit with kernel permissions is very silly. (Maybe dropping ability to do this in the style of openbsd's pledge(2) would be appropriate, but only for a process that really wants extra security.)
> Your opinion isn't invalid, but it goes against Apple's security model of iOS (namely: apps should not be able to modify themselves).
And my position is this is a silly approach, or, maybe is ok but should be opt-in, or perhaps opt-out with third parties being automatically trusted to decide they want to use JIT without hoops.
W^X is good default policy but Apple's policy is unreasonable and paranoid.
I can’t remember weather it was ish or some JS thing but you can do a kind of JIT without RWX by setting up chains of functions that tailcall eachother.
Would you by any chance consider TestFlight to distribute UTM? iSH (a usermode Linux "terminal" emulator) has been for quite some time, and I can't see why you shouldn't be able to.
Ah sorry, my bad, I skipped over that. Here's an idea - you could start a "fundraising" of sorts and if you get enough you could purchase a developer profile to publish to TestFlight.
The problem here is not that they can't obtain a development certificate. The problem is that you cannot use a development certificate to distribute an app on TestFlight or the App Store to other people.
There are two types of certificate – development certificates, which allow get-task-allow for debugging purposes and can be installed directly to a device; and distribution certificates, which do not allow get-task-allow and can be distributed through ad-hoc means, Test Flight, or the App Store.
If this app requires get-task-allow, then it needs to be signed with a development certificate to run. If it's signed with a development certificate, then it can't be distributed to other people.
iSH works differently. It’s not running “Linux” and it isn’t virtualizing hardware either. Anything you run has to be compiled already and the syscalls are emulated, there is no Linux kernel in iSH.
iSH actually uses a semi-JIT to emulate an x86 CPU — it doesn't run ARM64 code. It basically creates an arrray of function pointers to snippets of pre-translated code. It's not a full JIT like UTM, but it's an interesting workaround for iOS' restrictions.
I said it was a 'usermode Linux "terminal" emulator', never said it was a VM or anything like that. IIRC the dev said he also wasn't allowed to publish it to the App Store and I assume it falls under the same catagory of "not allowed" in Apple's eyes as UTM would've had.
Compile using what? It’s form of emulation has never been complete enough to run a compiler (heck even interpreters like Python have been very brittle) in my experience as a user since the beginning, so I’m curious what you’ve seen success with.
Thank you very much for sharing this with us. I am about to test it. I have already installed it successfully and it opens without crashing (iPad Air 2, iOS 13.3, unc0ver jailbreak) - so far so good ;-)
I will report back when I tried to install Win XP/7 (I desperately want to play Age of Empires 1 while on vacation since I saw this awesome app :D).
- harder than I thought now because of Apple enforcing very strict app signing rules etc. (why can't they just let us run our own code without paying or hacking? Ò.ó)
- jailbreak with checkra1n -> install AppCake -> trust certificates with help of "Apple Configurator" (device management was not in the iOS general settings until I accessed profile settings with the configurator) -> sign UTM with AppCake (Filza -> Open IPA with AppCake)
2. Setup VM with Windows XP
- copied ISO (WinXP SP3) to iPad with VLC "Sharing via WiFi" (awesome tool!)
- created a VM with a 5GB hdd and a CD/DVD with path set to the ISO
- could boot from the ISO and start installation but it crashed after the reboot. I tried again and again by opening UTM again, opening the VM settings (not doing so would instantly crash UTM when I tried to start the VM again)
- finally I realized assigning 1GB of RAM to the VM (iPad Air 2 has only 2GB total) was too much and I changed it to 512MB (default setting) which let me finish the installation of Win XP! :-D
No I will try to install Age of Empires 1 and when I get hands on adapter + keyboard + mouse I will try those with UTM as well.
First of all, huge TY! I used iBochs on a first gen iPad and successfully ran Linux, Windows 95, and DOS on it. I’ve tried a few times to modernize that code for current iOS releases, but was unsuccessful. I did spend a bunch of time back in the day building a nice UI for iBochs so would be game to help do that for UTM. My contact info is in my profile if you are still looking for folks!
Thanks! If you’re interested please fork the project on github and make a PR when you’re ready. I want this project eventually to be community run so I’m not going to be “in charge” of anything.
Question then: why are you investing time in something that Apple will never allow in the app store? Isn't it better to spend your effort on a more open platform?
Note: i use an iPhone and iPads. I do my hacking/customizing elsewhere.
Because it’s fun to do and it’s cool to play with. I want to run a Linux development machine on my iPad. I couldn’t care less about making money or growth hacking or starting a side hussle or one of the dozen other reasons why people here believe they must do to have their free time be seen as “optimal”. I just want to have fun with it.
Another reason is that even though right now they don’t allow it, what if they do start allowing it in the future? Pythonista app is a perfect example of this. It was originally not allowed but they eventually changed their rules to start allowing it back in ios 11 I believe. Maybe the same would happen with this if this becomes decently useful. IPad is already going in a more mainstream direction.
Because it's useful even if it's not allowed in the App Store? There's tons of useful open-source software for iOS which will never make it to the App Store.
I have a 4th generation iPad.
Would it work on that as well?
Since Apple dropped support for it, it's stuck with iOS 10 and effectively useless.
I would love to run Linux on it...
Most of the development was done on my free time in a span of three months. Then I got bored and didn’t touch it for half a year and decided to polish it up a little last week and release it.
Not being in the apple world I wondered if this submission meant anything had changed regarding running stuff like this on iOS, but no:
>Why isn't this in the AppStore?
Apple does not permit any apps that has interpreted or generated code therefore it is unlikely that UTM will ever be allowed. However, there are various ways people on the internet have come up to side load apps without requiring a jailbreak. We do not condone or support any of these methods.
> 2.5.2 Apps [may not] download, install, or execute code which introduces or changes features or functionality of the app, including other apps.
The rule changed, I think around the time that Swift Playgrounds came out, to add:
> Educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user.
There are probably plenty of apps that do interpret downloaded code (the Frotz app to play old text adventures comes to mind) and fly under the radar. But Apple would surely be on the lookout for any kind of emulator, due to the legal risk.
There's no legal risk. Microsoft allows people to install emulators on their OS without issue.
The issue is that Apple wants a big profit cut on each app. If you were allowed to download & run applications on your own computer, then Apple wouldn't get its cut.
That may be one factor, but it certainly isn't the only one. There are plenty of remote desktop apps on the App Store. But Steam Link was held up in review because Apple did not want people being able to buy games without getting a cut.
Microsoft "allows" people to install emulators in the same sense that Apple "allows" it on macOS, but a quick search confirms that Microsoft does not allow emulators on their app store, nor does Google. (These policies may specifically be for video game emulation, which is mostly what the legal grey area covers.)
Yeah, could be allowed. I did a fast search and there were records of apps such as SuperRetro16 being kicked out. But I don't know if it's a policy that is poorly enforced, or the removals were for some other reason.
You can run seemingly unrestricted python code on your iOS devices with Pythonista [0]. I'm using it right now to proxy my hotspot connection through my iPhone.
Not sure how they're allowed to exist on the app store, but it's been solid for me for a while now.
Pythonista has been featured by Apple several times. As others have pointed out, only pure-Python modules can be used unless they are precompiled and included with the app.
This is just not true. There are many emulators in AppStore, from i48 (which runs HP 48's native Saturn ROM), to ZORK, which runs PDP-11 binary of said game underneath, along with emulated RT-11 (or was it RSX-11?).
Maybe it is emulators that generate code internally and these do not? I know that was why MSX emulators were forbidden while they cannot really hurt Apple sales...
Anyway; I don't know if these emulators maybe do not generate code or are written with Core JS (for the most part) which apparently is allowed.
Apple's control-freaking and exploitation of customers has reached peak unreasonableness. I don't think SJ would've been so focused on making trillions when some billions could be had with cooler, repairable, lasting products. Personally, I have one foot out of the door (hackintosh) regarding the Apple ecosystem. I'm going to let the iPhone 6S, iPad Pro 10.5 and Apple Watch 4 run however long they can, but that's probably it for me, I'll stick to repairable devices like my ThinkPad T480.
I'd imagine most of those who would have need/interest in running this would probably have a developer account and could just compile and install it themselves.
You can pay for a developer account ($99/yr) which allows you to get your builds signed by Apple for the purposes of you running either dev-builds locally or internal-only apps for an organization.
That's what they mean by "no jailbreak required". Flipside is you gotta pay for a dev account to get your stuff signed to allow it to run.
This is arguable. The amount of CVEs is pretty high for a closed-source platform. Several of those CVEs were exploited in the wild for years before being fixed.
...which just lends more credence to the notion that you can pretend to be safe and lose your freedom, or you can face the reality that security isn't going to be perfect either way, and keep your freedom too.
I don’t see this being any worse than their competitors, and the long term support of hardware means that when they fix them you’re more likely to get the fix.
You're masquerading a religious issue (absoluteness of control of execution of compiled code on device) as a security issue.
It is really simple: By requiring signed binaries, it significantly raises the barrier of entry to malware authors.
Does it solve it? No. Also no one said it did. But it certainly makes it less of a free for all.
Do I trust Apple to make sound decisions to prevent myself from being owned by some random s-kiddie (without talent)? Yes. They have demonstrated they are serious about a robust defense of the user's privacy and device security.
No they are incorrect. That used to be the case but now you don’t need to pay a developer for testing on your own device. Only when you want to publish the app to App Store or need some specific developer feature like iCloud is when you need to pay.
> Users should always be allowed, at the very least, to build and sideload their own code.
You barely can anyway. Unless you pay $99/yr for a developer account, any self-compiled apps you install will expire after seven days. If you want your app to keep working, you need to plug your phone into a computer and recompile every single week. That's just not realistically usable for anything other than simple testing.
Yes, it should be allowed. But it's not. It's been this way for the entire history of iOS and it's awful.
Yes, this restriction is a huge PAIN. Back in my Windows Phone days, I ran development builds in addition to the store versions of my apps as dog fooding, or even just prototypes I never finished. Now I have this kind of apps on a secondary Android phone, but no iOS apps despite using macOS and having iPhone a main phone. Apple is really shitting on developers and hobbyists.
Many people still seem to believe that when they buy a phone (be it Apple or Android) they actually "own" the device.
You don't really:
. can't open it to access h/w, change battery, etc...
. can't choose what you run on it
. can't actually access all of the data that's stored on it
. most of the things you do with it are recorded by a remote entity.
. "for your own protection", here's a very long list of things we will not let you do with your device.
Gives a whole new meaning to the word "ownership".
> can't open it to access h/w, change battery, etc...
We're necessarily moving closer and closer to monolithic ASICs that cover all functions of a phone, most likely encased in epoxy for complete waterproofing. Some guy with a screwdriver and multimeter will never be able to keep up with advancements in manufacturing/technology.
Silicon is one thing, but the comment you’re replying to specifically mentioned batteries. Non-replaceable batteries offer a modest reduction in size, at the cost of reducing the device’s service life to 3-5 years. I personally don’t find that to be an impressive advancement in technology. The design’s lack of respect for user-serviceability reinforces the other user-hostile features of the iOS ecosystem identified by the grandparent. (Sent from my iPad.)
IOS devices have never been your own. Apple justified this in the early days on the grounds that they were protecting mobile phone networks from hackers, but that argument fell through when the iPod touch (an iPhone without phone functionality) was equally locked down. The only thing Apple is protecting with this policy is their revenue stream.
I'm not very familiar with iOS but is this restriction a fundamental limitation or just a paper-cut style limitation that's just one more hurdle for developers to jump through?
It appears to me that developers who are previously using dynamic libraries now have to invest in the effort to make them static libraries and link them to the main executable. So it seems like it can be overcome, but just more hassle. Am I correct?
I agree, and it's probably just a matter of time until Apple finds a way to kill this project too.
Stifling peoples creativity for commercial reasons. It feels like instead of my own government, Apple/Google now dictate the new rules (for which there are no laws yet, and won't ever be since new laws are always 10 years behind the newest innovation.)
> "Fast native graphics through para-virtualization thanks to SPICE"
I'm assuming the SPICE referred to here is not the SPICE I know, unless they've gone the full video circuit emulation route, which I don't imagine being fast at all :)
And you would have to specify all those parameters in imperial units, but according to most idiosyncratic measurement methods possible, like that: cable length includes the connector, but only one end counts.
On Android, there is termux terminal emulator, which allows to run native Linux binaries and already has many packages. Arguably there were other ways also before termux existed: GNURoot Debian was an app that ran a minimal Debian chroot in fake root (`proot`), Before that there was KBox. In termux also I run a full Debian chroot using proot. None of this requires root.
Even without that, static binaries could run till some recent version. I have poked with dynamic loading and LD_PRELOAD to set up my own environment which could run most Debian packages using libfakechroot && libfakeroot.
People like to shit on Android. But in terms of power user freedom, apple doesn't even come near.
> 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.)
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.
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?
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)
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.
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.
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. ;)
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.
I have been using iSH for many months to have a moderately sane CLI environment on my iPad, and bemoaning the App Store restrictions that prevent it from being better integrated and more popular.
I fear this will also never reach its full potential... but it is great to see.
serious question as someone who has an iPhone + iPad but isn't very familiar with emulation. What could you do with this? How feasible is it to run Windows and then install Steam or something like that?
I ran Linux and Windows 95 on a first gen iPad using Bochs. Boot time was utterly terrible, but it was kinda useable after. Given the performance improvements in recent iPads, I’m hoping this will be better, but I’ll let you know once I get home and try it.
What Android tablet is comparable to a modern iPad pro in performance, screen and battery life? I really like the iPad pro but I hate the artificial restrictions... All the Android tablets I tried out, flag ship ones, just fell down compared. I have a Surface Go for when I need Windows, but that is probably one of the worst buys of my life.
I currently use iPad Pro with Remotix to access OS X + Windows which works really well. If there was a Remotix for Linux, I would use Linux only, but there is no comparable VNC client for Linux. Compared the ones under Linux are unusable (and I did try them all).
What about the Samsung Galaxy Tab S6? It seems to be comparable to the iPad Pro in terms of performance and screen. I tried out an Android tablet a few months ago and it seemed pretty fine.
If your want to do portable programming I would recommend a light 2 in 1 laptop. You can dual boot Windows and Linux on it (Windows for media consumption and Linux for programming). But it is bigger then a tablet.
Of course if you use a server you can use anything you want to do programming. But personally the latency is a dealbreaker for me.
I will try the S6; it seems good but someone told me there are no really solid keyboards for it? I never checked it because I already had an iPad.
> But personally the latency is a dealbreaker for me.
I had that issue too :) However that changed when remotemac (no affiliation) introduced me to Remotix; I live in the mountains and my internet is bad, and yet it has no latency with 4k screen transferring. Anything on Linux is just horrible compared. I develop apps on my iPad and it works really well like that.
My ‘dream’ (bit extreem but lets say preferred way of working) is to use my x220 with Linux to do that; then I can do all dev on that machine while doing iOS dev remotely. Now I still have to carry an Android tab, Windows laptop (I can do that on the x220 but I really do not like to dual boot) or iPad with me.
If you don’t mind moving away from the VNC protocol, the NX protocol (via NoMachine¹) is a fantastic alternative. Faster than VNC and can forward audio from the server to the client as well.
It took about a minute to boot Alpine Linux on a debug build. It's currently about half an hour into booting elementary and it's just started the display server.
I’ve had elogind deadlock on physical machines (on many distros and machines, including elementary). I have an nfs server, so it’s probably timing related.
Try a non-systemd distro (e.g., MX linux, Devuan, slackware).
You can sign and deploy apps to your own device with Xcode. This is all explained immediately after the “no jailbreak required” dot point in the README.
Have you played Civ VI on an iPad? Except for being slightly harder to click on things (and no keyboard shortcuts) it plays the same as the desktop version. Same UI and graphics.
Also for more info and a few videos demonstrating capabilities and performance check out the website: https://getutm.app/
Whilst most people are saying it's a bug on Apple's side I'm worried it's more than that. The removal of signed iPadOS/iOS 13.3 from their servers, along with the returned ability of flashing static lib'ed packages after all being blocked for a while seems more "on purpose" from Apple rather than "by accident". We gotta just wait and see, I guess.
This is a weird thing by the way. It seems to me like you should be able to debug or do VM syscalls against yourself because there is no escalation of privilege. Debugging another process makes much more sense to block. But maybe my opinion is invalid because I also happen to think disallowing jit with kernel permissions is very silly. (Maybe dropping ability to do this in the style of openbsd's pledge(2) would be appropriate, but only for a process that really wants extra security.)
Actual JITs (ones blessed by Apple, not hacks like these) possess the dynamic-codesigning entitlement, and can just make RWX pages.
> But maybe my opinion is invalid because I also happen to think disallowing jit with kernel permissions is very silly.
Your opinion isn't invalid, but it goes against Apple's security model of iOS (namely: apps should not be able to modify themselves).
And my position is this is a silly approach, or, maybe is ok but should be opt-in, or perhaps opt-out with third parties being automatically trusted to decide they want to use JIT without hoops.
W^X is good default policy but Apple's policy is unreasonable and paranoid.
There are two types of certificate – development certificates, which allow get-task-allow for debugging purposes and can be installed directly to a device; and distribution certificates, which do not allow get-task-allow and can be distributed through ad-hoc means, Test Flight, or the App Store.
If this app requires get-task-allow, then it needs to be signed with a development certificate to run. If it's signed with a development certificate, then it can't be distributed to other people.
Official description: https://github.com/tbodt/ish#a-note-on-the-jit
It's a full x86 emulator.
> IIRC the dev said he also wasn't allowed to publish it to the App Store
He didn't, it's just never been tested whether it could be on the store or not.
You can compile binaries on iSH and they'll run on the emulator just as all the other code does.
Edit: just tried it and indeed you are right, it works in a few cases now. Clang also works for basic test cases.
I will report back when I tried to install Win XP/7 (I desperately want to play Age of Empires 1 while on vacation since I saw this awesome app :D).
1. Install UTM
- harder than I thought now because of Apple enforcing very strict app signing rules etc. (why can't they just let us run our own code without paying or hacking? Ò.ó)
- jailbreak with checkra1n -> install AppCake -> trust certificates with help of "Apple Configurator" (device management was not in the iOS general settings until I accessed profile settings with the configurator) -> sign UTM with AppCake (Filza -> Open IPA with AppCake)
2. Setup VM with Windows XP
- copied ISO (WinXP SP3) to iPad with VLC "Sharing via WiFi" (awesome tool!)
- created a VM with a 5GB hdd and a CD/DVD with path set to the ISO
- could boot from the ISO and start installation but it crashed after the reboot. I tried again and again by opening UTM again, opening the VM settings (not doing so would instantly crash UTM when I tried to start the VM again)
- finally I realized assigning 1GB of RAM to the VM (iPad Air 2 has only 2GB total) was too much and I changed it to 512MB (default setting) which let me finish the installation of Win XP! :-D
No I will try to install Age of Empires 1 and when I get hands on adapter + keyboard + mouse I will try those with UTM as well.
It demands graphics with directdraw and will not start.
How did you get Halflife running?
Note: i use an iPhone and iPads. I do my hacking/customizing elsewhere.
There's that nagging feeling you're giving Apple too much mind share though.
>Why isn't this in the AppStore?
Apple does not permit any apps that has interpreted or generated code therefore it is unlikely that UTM will ever be allowed. However, there are various ways people on the internet have come up to side load apps without requiring a jailbreak. We do not condone or support any of these methods.
The rule changed, I think around the time that Swift Playgrounds came out, to add:
> Educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user.
There are probably plenty of apps that do interpret downloaded code (the Frotz app to play old text adventures comes to mind) and fly under the radar. But Apple would surely be on the lookout for any kind of emulator, due to the legal risk.
The issue is that Apple wants a big profit cut on each app. If you were allowed to download & run applications on your own computer, then Apple wouldn't get its cut.
Microsoft "allows" people to install emulators in the same sense that Apple "allows" it on macOS, but a quick search confirms that Microsoft does not allow emulators on their app store, nor does Google. (These policies may specifically be for video game emulation, which is mostly what the legal grey area covers.)
It even has Bochs [3]
Or am I misunderstanding something?
[1] https://play.google.com/store/apps/details?id=com.explusalph...
[2] https://play.google.com/store/apps/details?id=org.mupen64plu...
[3] https://play.google.com/store/apps/details?id=net.sourceforg...
Not sure how they're allowed to exist on the app store, but it's been solid for me for a while now.
[0] https://apps.apple.com/us/app/pythonista-3/id1085978097
Anyway; I don't know if these emulators maybe do not generate code or are written with Core JS (for the most part) which apparently is allowed.
Apple deserves to be disrupted.
That's what they mean by "no jailbreak required". Flipside is you gotta pay for a dev account to get your stuff signed to allow it to run.
This is arguable. The amount of CVEs is pretty high for a closed-source platform. Several of those CVEs were exploited in the wild for years before being fixed.
It is really simple: By requiring signed binaries, it significantly raises the barrier of entry to malware authors.
Does it solve it? No. Also no one said it did. But it certainly makes it less of a free for all.
Do I trust Apple to make sound decisions to prevent myself from being owned by some random s-kiddie (without talent)? Yes. They have demonstrated they are serious about a robust defense of the user's privacy and device security.
Just my $.02
So to test this on my iPhone, I need 1. to buy a Mac and 2. pay for an annual Apple development permission subscription.
You really can’t make a platform worse than this, and I say that as an iPhone owner. It’s so frustrating!
Can’t they publish this as a “test-flight” beta like for instance iSH does?
A terrible decision. Users should always be allowed, at the very least, to build and sideload their own code.
You barely can anyway. Unless you pay $99/yr for a developer account, any self-compiled apps you install will expire after seven days. If you want your app to keep working, you need to plug your phone into a computer and recompile every single week. That's just not realistically usable for anything other than simple testing.
Yes, it should be allowed. But it's not. It's been this way for the entire history of iOS and it's awful.
You don't really:
Gives a whole new meaning to the word "ownership".> can't open it to access h/w, change battery, etc...
We're necessarily moving closer and closer to monolithic ASICs that cover all functions of a phone, most likely encased in epoxy for complete waterproofing. Some guy with a screwdriver and multimeter will never be able to keep up with advancements in manufacturing/technology.
Substantial claims require proof, please show even one example where Apple stated this ever.
It appears to me that developers who are previously using dynamic libraries now have to invest in the effort to make them static libraries and link them to the main executable. So it seems like it can be overcome, but just more hassle. Am I correct?
Stifling peoples creativity for commercial reasons. It feels like instead of my own government, Apple/Google now dictate the new rules (for which there are no laws yet, and won't ever be since new laws are always 10 years behind the newest innovation.)
I'm assuming the SPICE referred to here is not the SPICE I know, unless they've gone the full video circuit emulation route, which I don't imagine being fast at all :)
Isn’t that what’s the “regular” QEMU setup always uses anyway?
https://www.spice-space.org/
Even without that, static binaries could run till some recent version. I have poked with dynamic loading and LD_PRELOAD to set up my own environment which could run most Debian packages using libfakechroot && libfakeroot.
People like to shit on Android. But in terms of power user freedom, apple doesn't even come near.
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.)
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.
> 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?
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.
Believe me, the engineers at Apple are well aware of them already.
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.
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. ;)
I fear this will also never reach its full potential... but it is great to see.
I currently use iPad Pro with Remotix to access OS X + Windows which works really well. If there was a Remotix for Linux, I would use Linux only, but there is no comparable VNC client for Linux. Compared the ones under Linux are unusable (and I did try them all).
If your want to do portable programming I would recommend a light 2 in 1 laptop. You can dual boot Windows and Linux on it (Windows for media consumption and Linux for programming). But it is bigger then a tablet.
Of course if you use a server you can use anything you want to do programming. But personally the latency is a dealbreaker for me.
> But personally the latency is a dealbreaker for me.
I had that issue too :) However that changed when remotemac (no affiliation) introduced me to Remotix; I live in the mountains and my internet is bad, and yet it has no latency with 4k screen transferring. Anything on Linux is just horrible compared. I develop apps on my iPad and it works really well like that.
My ‘dream’ (bit extreem but lets say preferred way of working) is to use my x220 with Linux to do that; then I can do all dev on that machine while doing iOS dev remotely. Now I still have to carry an Android tab, Windows laptop (I can do that on the x220 but I really do not like to dual boot) or iPad with me.
――――――
¹ — https://en.wikipedia.org/wiki/NX_technology
Try a non-systemd distro (e.g., MX linux, Devuan, slackware).
[0] https://www.youtube.com/watch?v=O19dNVTBCAs&feature=youtu.be
Printed on electrons from a cheap(er), used iPad Pro 10.5" over 4G LTE
Does to hard drive limitations in space might not be able to run Windows 10 on an iPad or Macbook Pro.
Staying with the same instruction set (e.g. x86 -> x86) does help with performance though.
There’s a discussion of this here: https://stackoverflow.com/questions/5806589/why-does-intel-h...
It’s slow because it’s emulating, period. CISC/RISC has little to do with it.
Edit: my bad, somehow I thought this was UAE the amiga emulator.