• kadu@lemmy.world
    link
    fedilink
    English
    arrow-up
    36
    arrow-down
    2
    ·
    7 months ago

    Do we know if these emulators will support JIT? JIT has always been prohibited on iOS (which is why there are no browsers other than Safari - Firefox and Chrome on iOS are just a Safari WebView plus a crappy interface on top).

    Even when sideloading emulators, you only get JIT by paying for a special developer license or using exploits on very specific iOS versions.

    Without JIT, sure, go nuts emulating the NES… But forget about anything more demanding than a GameCube, or using this to run a VM or something.

    • nave
      link
      fedilink
      English
      arrow-up
      14
      ·
      edit-2
      7 months ago

      you only get JIT by paying for a special developer license or using exploits on very specific iOS versions.

      Actually Altstore has AltJIT which works on all iOS versions altstore supports but requires you to be connected to the same network as a computer running altstore.

      run a VM or something

      UTM (which is based on QEMU) is already available on iOS.

      • kadu@lemmy.world
        link
        fedilink
        English
        arrow-up
        6
        ·
        edit-2
        7 months ago

        but requires you to be connected to the same network as a computer running altstore.

        So you mean iOS doesn’t natively support JIT for App Store apps and requires hacky workarounds?

        • WolfLink@lemmy.ml
          link
          fedilink
          English
          arrow-up
          1
          ·
          7 months ago

          iOS natively supports JIT (by which we mean writable and executable memory) but Apple locks it down to only two use cases:

          1. The JavaScript engine in Safari
          2. Support for running a debugger

          AltStore launches a debugger and connects it to your phone. Even though it’s not actually doing anything with a debugger, that’s enough to convince iOS to let your app use memory that’s both writable and executable (the key feature needed for JIT).

          Without JIT you need to either resort to a slower form of emulation or do something creative.

        • nave
          link
          fedilink
          English
          arrow-up
          1
          arrow-down
          1
          ·
          edit-2
          7 months ago

          I was just pointing out that OPs list was incomplete. Also theoretically someone could include altjit in their app because the App Store guidelines don’t explicitly say you can’t (ofc this would most likely not work).

    • Lojcs@lemm.ee
      link
      fedilink
      English
      arrow-up
      4
      ·
      edit-2
      7 months ago

      which is why there are no browsers other than Safari

      Wasn’t that explicitly forbidden? Browsers don’t need jit to be fast enough

      Edit: was jit explicitly forbidden? Or is it that running dynamically loaded code was forbidden in general and jit falls under that category? If they’re letting emulators and other browser engines in that ban seems to be at least partially lifted

      • echo64@lemmy.world
        link
        fedilink
        English
        arrow-up
        4
        ·
        7 months ago

        Yes, op is a little confused.

        • Browsers (were, still are in many regions) forbidden from using any engine other than the iOS provided webkit.
        • Dynamic recompilation is not possible on iOS because of how iOS does code signing. This basically blocks the entire concept of executing instructions that weren’t part of the original signed code.
    • pivot_root@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      7 months ago

      The GameCube also needs a JIT for decent performance. On a phone, that will especially hurt to emulate the CPU in software.