QEMU for iOS

(github.com)

335 points | by funkaster 1526 days ago

13 comments

  • osy 1526 days ago
    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/

    • lazerl0rd 1526 days ago
      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.

      • osy 1526 days ago
        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.
        • asveikau 1525 days ago
          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.
          • saagarjha 1525 days ago
            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.
            • asveikau 1525 days ago
              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.)

              • saagarjha 1525 days ago
                > So everything with a JIT will need this.

                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).

                • asveikau 1525 days ago
                  > 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.

              • swiley 1525 days ago
                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.
                • saagarjha 1525 days ago
                  iSH has a threaded interpreter that works like that, yes.
        • lazerl0rd 1525 days ago
          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.
          • osy 1525 days ago
            > This entitlement is only given out in development profiles and not any distribution profiles so I can’t upload to TestFlight either.
            • lazerl0rd 1525 days ago
              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.
              • JimDabell 1525 days ago
                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.

              • osy 1525 days ago
                You can’t purchase such a profile. Apple doesn’t ever give them out.
                • lazerl0rd 1525 days ago
                  I thought this would be part of their $99/year subscription, well that's unfortunate. Thanks again for your project.
          • jsjohnst 1525 days ago
            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.
            • kdrag0n 1525 days ago
              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.

              Official description: https://github.com/tbodt/ish#a-note-on-the-jit

              • saagarjha 1525 days ago
                A more accurate term for it would be threaded interpretation.
            • lazerl0rd 1525 days ago
              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.
              • saagarjha 1525 days ago
                > I said it was a 'usermode Linux "terminal" emulator', never said it was a VM or anything like that.

                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.

                • jedieaston 1525 days ago
                  Actually, someone compiled it, added ads, and put it on the App Store. Not sure if it is still there, but it got through approval.
                  • saagarjha 1525 days ago
                    Oh, that happens all the time. The real test is when the official app gets approved and stays on the App Store.
            • saagarjha 1525 days ago
              > Anything you run has to be compiled already

              You can compile binaries on iSH and they'll run on the emulator just as all the other code does.

              • jsjohnst 1525 days ago
                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.
                • saagarjha 1525 days ago
                  GCC works reasonably well.
                  • jsjohnst 1525 days ago
                    Interesting, thx for the reply. I haven’t tried GCC in the last few updates, so will try again.

                    Edit: just tried it and indeed you are right, it works in a few cases now. Clang also works for basic test cases.

    • VvR-Ox 1517 days ago
      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).

      • VvR-Ox 1516 days ago
        So here is my journey with UTM:

        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.

        • VvR-Ox 1516 days ago
          Installing AoE worked but I am afraid I could not start it :-/

          It demands graphics with directdraw and will not start.

          How did you get Halflife running?

    • jsjohnst 1525 days ago
      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!
      • osy 1525 days ago
        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.
    • nottorp 1525 days ago
      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.

      • osy 1525 days ago
        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.
      • busymom0 1525 days ago
        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.
        • nottorp 1525 days ago
          Yes, it's okay if you think along the "i bought the hardware, i do whatever i want with it" line.

          There's that nagging feeling you're giving Apple too much mind share though.

      • _-___________-_ 1525 days ago
        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.
        • anticensor 1525 days ago
          This includes the real Firefox.
          • theshadowknows 1524 days ago
            Please explain...
            • anticensor 1524 days ago
              Using the Gecko/Servo like desktop Firefox, not WebKit like Safari.
              • theshadowknows 1524 days ago
                Ah I see. For a moment I thought you meant someone had made some side-loadable full Firefox and I was going to be so happy.
    • AnyTimeTraveler 1525 days ago
      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...
      • saagarjha 1525 days ago
        Unfortunately UTM requires iOS 11. Perhaps someone might be able to backport it?
    • saagarjha 1525 days ago
      How long did it take you to make this?
      • osy 1525 days ago
        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.
  • tjoff 1526 days ago
    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.

    • rgovostes 1526 days ago
      > 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.

      • dwheeler 1526 days ago
        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.

        • rgovostes 1526 days ago
          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.)

      • rlyshw 1526 days ago
        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.

        [0] https://apps.apple.com/us/app/pythonista-3/id1085978097

        • tech234a 1526 days ago
          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.
        • ericlewis 1526 days ago
          it is categorized as a learning application, but I am quite curious how you made a proxy with it.
          • zakki 1525 days ago
            I guess he made an app that open a port to let user to connect to it and proxy-ing the request
      • rhodysurf 1526 days ago
        Interpreted code is fine for most cases, but compiling is a big no no. Which is unfortunate and limiting
    • trasz 1526 days ago
      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?).
      • tluyben2 1525 days ago
        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.

    • anonsivalley652 1526 days ago
      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.
      • dreamcompiler 1526 days ago
        It's ironic that Woz especially wanted to bring computing to the masses, not lock it down. Apple is the antithesis of its own founders' vision.

        Apple deserves to be disrupted.

    • dhosek 1526 days ago
      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.
      • busymom0 1525 days ago
        Now a days you don’t even need a developer account for testing on your device if I remember right.
    • saber6 1526 days ago
      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.

      • dahfizz 1526 days ago
        You need to pay a subscription to run your own code on your own device? Why anyone puts up with Apple's anticonsumerism is beyond me.
        • thebruce87m 1526 days ago
          Security. Privacy. Long term support of hardware (environment). No carrier crapware.
          • heavyset_go 1525 days ago
            > Security

            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.

            • saagarjha 1525 days ago
              Unfortunately this is true for the other commonly-used mobile OS as well.
              • userbinator 1525 days ago
                ...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.
            • thebruce87m 1525 days ago
              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.
            • syntheticcorp 1524 days ago
              Counting CVEs is not a good way of comparing security between software.
            • saber6 1523 days ago
              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.

              Just my $.02

      • gruez 1526 days ago
        You don't even need a (paid) developer account. Anyone with an apple id can sign ios apps with a validity of 7 days.
        • snazz 1526 days ago
          Not dynamically loaded libraries after 13.3.1, however.
          • jscheel 1526 days ago
            General consensus is that this is a bug though. Apple has not come out with any announced change.
      • josteink 1525 days ago
        > You can pay for a developer account ($99/yr) which allows you to get your builds signed by Apple

        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?

        • busymom0 1525 days ago
          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.
  • LeoPanthera 1526 days ago
    > "Since iOS 13.3.1, it appears Apple has stopped allowing free developer profiles to sign dylibs."

    A terrible decision. Users should always be allowed, at the very least, to build and sideload their own code.

    • Wowfunhappy 1526 days ago
      > 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.

      • tasogare 1525 days ago
        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.
      • sigjuice 1526 days ago
        Do apps from a $99/yr account last for a year or is there some other sort of time limit?
        • anta40 1524 days ago
          Only last for a year. After that, renew it. Unlike Google dev account which is $25 for lifetime, single payment only.
        • saagarjha 1525 days ago
          They last a year.
    • ur-whale 1525 days ago
      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".
      • nomel 1525 days ago
        I can't fully agree with your first point:

        > 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.

        • sjy 1525 days ago
          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.)
    • throwaway55554 1526 days ago
      I use and enjoy Apple products, but behavior like this is so annoying. My devices are mine and this should not be a restriction.
      • dreamcompiler 1526 days ago
        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.
        • jsjohnst 1525 days ago
          > Apple justified this in the early days on the grounds that they were protecting mobile phone networks from hackers

          Substantial claims require proof, please show even one example where Apple stated this ever.

    • kccqzy 1526 days ago
      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?

      • earenndil 1526 days ago
        It is completely arbitrary, yes.
    • DavideNL 1525 days ago
      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.)

  • frabert 1526 days ago
    > "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 :)

    • hamiltonkibbe 1526 days ago
      Hah, having parameters like --vga-cable-length --ambient-temperature --psrr would be fun though
      • anticensor 1525 days ago
        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.
    • josteink 1525 days ago
      > "Fast native graphics through para-virtualization thanks to SPICE"

      Isn’t that what’s the “regular” QEMU setup always uses anyway?

    • detaro 1526 days ago
    • anonsivalley652 1526 days ago
      A different kind of "circuit." ;)
  • terminaljunkid 1525 days ago
    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.

  • lwb 1526 days ago
    > 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 1526 days ago
      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 1526 days ago
        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 1526 days ago
          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.

          • dfox 1525 days ago
            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 1525 days ago
            Swift Playgrounds compiles to native code and loads it with Apple-private entitlements.
        • ericlewis 1526 days ago
          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.
    • kick 1526 days ago
      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 1525 days ago
        > 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 1526 days ago
      > 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 1525 days ago
        Because remote desktop needs a connection and a remote PC to connect to.
        • jsjohnst 1525 days ago
          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 1526 days ago
      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 1526 days ago
        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 1526 days ago
          I routinely do TestFlight builds without manual review and fast turnaround from build -> running on beta user devices.
          • lwb 1525 days ago
            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 1525 days ago
              Change the build number and leave the version number alone.
              • lwb 1525 days ago
                Wow, TIL. That changes everything.
  • rcarmo 1525 days ago
    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.

  • machello13 1526 days ago
    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?
    • jsjohnst 1525 days ago
      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.
  • bibyte 1525 days ago
    If you want this on Android it is available in the Termux repository. If you have a flagship device it should be fast enough to be usable.
    • tluyben2 1525 days ago
      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).

      • bibyte 1525 days ago
        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.

        • tluyben2 1525 days ago
          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.

      • arm 1525 days ago
        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.

        ――――――

        ¹ — https://en.wikipedia.org/wiki/NX_technology

  • NamPNQ 1526 days ago
    The title lets me think about ios emulator run in qemu
  • jasoneckert 1526 days ago
    Has anyone used this? What is the performance like?
    • saagarjha 1525 days ago
      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.
      • saagarjha 1525 days ago
        Update: about an hour in it got stuck trying to start the login service.
        • hedora 1525 days ago
          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).

  • OrgNet 1525 days ago
    I'm surprised that Apple allows apps like QEMU... it's not like them. Gives me hope...
    • saagarjha 1525 days ago
      This hasn’t been approved by Apple.
      • OrgNet 1525 days ago
        but it says "No jailbreak required!"... I thought that meant only appstore apps where allowed on your device...
        • evanjd 1525 days ago
          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.
  • neilsimp1 1526 days ago
    This is cool, but I can't help but think that running a VM on an iPad or iPhone would be horrendously slow.
    • akhilcacharya 1526 days ago
      The iPad Pro is very impressive, here a video of one playing Half Life 1 in XP using UTM [0]

      [0] https://www.youtube.com/watch?v=O19dNVTBCAs&feature=youtu.be

      • hinkley 1526 days ago
        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.
      • anonsivalley652 1526 days ago
        Nice.

        Printed on electrons from a cheap(er), used iPad Pro 10.5" over 4G LTE

    • throwaway55554 1526 days ago
      Why would you think that? Apple's processors are very powerful.
      • saagarjha 1525 days ago
        Because it is fairly slow :)
      • ViViDboarder 1525 days ago
        Emulation is slow.
        • cable2600 1525 days ago
          Emulation is slow because it is emulating a CISC processor with a RISC processor. You are better off running QEMU on your Mac than on your iPad.

          Does to hard drive limitations in space might not be able to run Windows 10 on an iPad or Macbook Pro.

          • hedora 1525 days ago
            Under the hood, intel processors emulate a CISC processor with a RISC processor, so there’s nothing fundamentally slow about that.

            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...

          • saagarjha 1525 days ago
            > Emulation is slow because it is emulating a CISC processor with a RISC processor.

            It’s slow because it’s emulating, period. CISC/RISC has little to do with it.

    • nfoz 1526 days ago
      Sure but if it's to emulate a computer from 1985 with half a meg of RAM, it might not be so bad :)

      Edit: my bad, somehow I thought this was UAE the amiga emulator.