After initially rejecting it, Apple has approved the first PC emulator for iOS
theverge.com
theverge.com
We had all that. It was taken away.
Humans go ooo, accessibility never comes back again..
Personal preferences matter little in a duopoly industry. Sure, you could argue that other aspects are more important than serviceability, but it’d be insane to argue that people want less serviceability. So in short, we were better off in this aspect before. 100%.
I mean yes, it literally is, the law requires that smartphones incorporate a killswitch capable of resisting a device format/reload of the OS. This was seen as a consumer benefit in 2014, and did succeed in bringing muggings and phone theft down by as much as 80%.
https://www.pcworld.com/article/440002/10-things-to-know-abo...
https://www.theguardian.com/technology/2015/feb/11/london-sm...
https://www.pcworld.com/article/431818/drop-in-smartphone-th...
This is what the sibling means about tradeoffs: people at the time wanted the tradeoff of fewer muggings. The killswitch was seen as a benefit, and largely Apple is in fact just responding to the legislative requirements pushed upon them.
And if you have to have a killswitch that can resist a OS reformat… there has to be some component pairing mechanism that works underneath the OS layer, naturally. That is the sensible way to implement it, otherwise you'd just swap in a new motherboard and hey, phone's working again. Or strip the phone for parts.
The idea of parts being anti-theft/strip-resistant is pretty much inherently in contradiction to right-to-repair. And again, I think people probably understand that... but never forget that theft-resistance was a legislative initiative pushed over the objections of Apple and other phone vendors at the time, having some unforeseen consequences. People actually did want this, people lobbied for this, as much as modern readers may not believe it.
https://www.cnet.com/tech/mobile/is-the-smartphone-kill-swit...
To be fair, most electronics these days are so tightly integrated (literally IC, Integrated Circuits!) that there's not much you can do even with a full on schematic.
Long gone are the days of bigly electronics parts connected by a spaghetti nest of wires and third grade soldering.
I've watched these videos — and the people you're referencing doing this are rarely using any kind of schematics at all to repair modern digital-logic boards. And not for lack of accessibility!
Modern logic-board designs consist of a few proprietary ICs, plus generic labelled support components (e.g. VRM caps, surface-mount resistors and diodes, etc.)
You can repair these boards, but these repairs fall into three categories:
1. bad solder joints or broken traces — which mostly just requires looking at the board carefully to notice these.
2. bad generic support components — which in theory you can determine the need for by testing with various multimeter modes across the individual component's legs; but more often you just notice that what the component is in line with isn't working, and "swap out to see if that fixes it." And which where such a swap-out can be done by just looking the part to figure out what it identifies itself as; then de-soldering it and soldering on a replacement.
3. bad proprietary ICs — which you determine by tapping the signal lines leading from/to the IC on an oscilloscope; and which you "fix" by buying other for-parts copies of the board, de-soldering those ICs off of the sacrificial parts boards, and soldering them onto the "almost good" board.
In none of these cases would referencing a schematic help! They're all effectively "context free" repairs — see, probe, think, do.
(A schematic can in theory help you to find test points to differentially diagnose 1 vs 2 vs 3 in the case where a board is failing mysteriously... but once you have some experience in board repair, you can get 80% of the same information by just staring at the board for a minute.)
---
Of course, if you're repairing a power supply, or an audio receiver, or some still-half-analogue electronic appliance from the 1970s — then yeah, schematics help. But these types of systems do still come with those schematics! (You just need to buy the thing directly. You aren't getting a schematic for an "embedded" PSU with a computer; but you do get the schematic if you buy that same PSU at retail at a Shenzhen parts-mall. And you get forwarded that same schematic [and more] if you make an industrial order of 10000 of them, too.)
I think it's fine to get excited, but there's also getting too excited if there's no rational need for the software. Which I can't really see, since there always have been other devices to buy.
Like if I need to do spreadsheets I will get a device made for that, not demand that regulators force Apple to let me install Excel on my phone.
Hackers and Europeans framing this as some kind of civil rights or human rights issue is to me abut as ridiculous as if regulators would force every restaurant to make their menu gluten free. Which will probably happen soon, since the mental children are at the helm.
Why is there no consumer friendly solution for having a server connected at home and publishing your own website to the world, without having to be very skilled at computers? There are consumer friendly solutions for everything else: office suites, e-mailing, photo editing, all sorts of creativity. Consumers are now regulated to posting their online stuff on social media, because that is what is accessible to them. And I want to blame Linux partly for this, because the great allure of "free" halted any consumer solution.
We know that recent (M2+) Apple Silicon has hardware support not only for virtualization, but nested virtualization. Time may improve Apple's risk/reward for enabling virtualization in specific iPad use cases.
Thanks to aShell and iSH emulators for pioneering Linux-alike experiences on iPads, at the cost of overheated silicon.
Thanks to Asahi for bare-metal Linux, including virtualization, on Apple Silicon.
It's more likely that the EU will improve it.
As things stand today, Android allows for JIT acceleration on all apps, essentially unrestricted. The DMA only allows for security measures that restrict APIs insofar as those measures are "strictly necessary and proportionate".
Since Android manages just fine on that front with full JIT, Apple's defense relying on that DMA exception will fail.
Even if Android is compromised all the way up to (and including) the host kernel, the isolated VM remains uncompromised
This allows virtualized Linux VMs on supported Pixels, running alongside Android, https://www.xda-developers.com/nestbox-hands-on/ & https://www.esper.io/blog/android-dessert-bites-13-virtualiz...> we have replaced pKVM with Gunyah Hypervisor Software – our own, more versatile hypervisor – on our Qualcomm Technologies’ chipsets. With Gunyah, we can use one hypervisor across use cases as varied as automotive, mobile broadband, IoT and wearables. We’ve upstreamed Gunyah for general use by the Android community.
How do we know this? No vulnerabilities/exploits reported using these?
Is this the same Android that has a 5x+ share of malware compared to iOS?
Things they see as problems:
Reducing need for MacBooks,
Virtualised app-stores that use creative accounting or some other trick to circumvent apple tax,
True free-software culture on their platform,
Lack of control re privacy / data collection / platform guidelines / software publishing,
DRM circumvention...
The DMA allows for security exceptions only when measures are "strictly necessary and proportionate", Article 6(4). Apple argues that this ban is crucial for security, yet Android permits JIT compilation and maintains robust security on that front for 99% of its user base without significant incidents.
Foxes argue the ban on chicken wire is crucial for their security.
Darwin is the core Unix-like operating system of macOS (previously OS X and Mac OS X), iOS, watchOS, tvOS, iPadOS, audioOS, visionOS, and bridgeOS. It previously existed as an independent open-source operating system, first released by Apple Inc. in 2000. It is composed of code derived from NeXTSTEP, FreeBSD, other BSD operating systems, Mach, and other free software projects' code, as well as code developed by Apple.Different goals? Different system gets built. Different trade-offs. This isn’t hard to understand. You’re being overly harsh for ideological reasons.
Poor Apple with its virtually unlimited resources. Somehow Google, Microsoft, Linux and Apple themselves managed to make it work with JIT, but Apple can’t do it.
EDIT: What's with the downvoting?
Either way, you're wrong.
This claim is based on what expertise?
Suffice to say, I don't feel the need to rehash why the basic premise of "the OS wasn't built to handle JIT apps" is directly contradicted by it, you know, allowing JIT in all but one app.
If they offered something of a basic technical assessment or reasoning beyond "I know people", perhaps then I would bother to dig into some credentialed argument. So, in the same way it's not worth delving into "proving God doesn't exist", it's not worth proving how OP clearly has no idea what they're talking about. They bear the burden of their claims, not me.
The tricks to make interpreters fast are to make them not interpreters.
This one is already using just about all the tricks in the book to make a "fast" interpreter and it's performance is a drip compared to a JIT version.
A dedicated, optimized x86 on ARM interpreter could probably get 20% off the performance of QEMU Jit, if not more.
Because it very much sounds like the latter.
I have, quite extensively. I can assure you, that the source set they are using most definitely does use all the "tricks" (the chief two being threaded code [no, not that threading] and preoptimized jump tables). I can also assure you that losing the hardware acceleration offered by Apple's extensions and the general performance boost JIT/AOT offer is much more than 80%.
But, sure. For argument's sake, let's accept your (incorrect) premise. Taking a 1ghz potential emulated target processor down to 200mhz is a fairly drastic drop. Disallowing a whole slew of modern code/target OSes and verging the usability on nil.
for example, this ocaml program runs 6× slower when compiled with ocamlc (which uses an excellent bytecode interpreter) than with ocamlopt
let rec fib n = if n <= 2 then 1 else fib (n-1) + fib (n-2)
and n = 40
in Printf.printf "fib(%d) = %d\n" n (fib n) ;;
the ocamlopt-compiled version is about 5% slower than a handwritten assembly version (and orders of magnitudes slower than a version compiled with gcc, which is why i wrote the assembly version)„All the tricks“ for an interpreter would mean 1 jump per interpreted instruction, or perhaps 0.5 for some of them. It would probably mean no explicit jump tables. It would probably mean the interpreter is set up pipelined like a real cpu - loading instructions on parallel with executing previous instructions. You can get perhaps 5-15% of native speed using for an interpreter all the tricks. QEMU can maybe get 20-50% (not sure these days actually, I haven’t followed improvements for a while). Rosetta can get close to 100%, using a JIT but also hardware that is specifically designed to aid emulation (memory accesses like on x86).
Given nowadays CPUs execute like 3-5 instructions per cycle, getting 5-15% performance for an interpreter would be very fast and very difficult to achieve, but possible - if designed from the ground up for performance.
it's just that i call 15% of native performance 'very slow' and you call it 'very fast', because you're comparing the moped to the walker you're used to, and i'm comparing it to a sports car because that's what you're paying for
instruction set jitting getting a speedup instead of a slowdown goes back to last millennium with hp's dynamo https://dl.acm.org/doi/pdf/10.1145/349299.349303 and was central to transmeta's business plan. qemu's jit is sort of simpleminded to make it easier to maintain
In short, I’m going to keep using an ARM sidecar: https://taoofmac.com/space/blog/2023/10/07/1830
Apple doesn’t let us JIT nice things, and it’s just sad.
No, it's an Apple device. It _should_ be a general computing device, but Apple ensures that it will never be, and you should be aware of that when you buy it.
I didn’t buy an iPhone to be a general purpose computing device for the same reason
It's a pretty pointless thing to say "I didn't buy an Ipad to do X so why should it be able to do X?". Of course you didn't buy your ipad to do X. It's not capable of doing X so you'd be pretty stupid if you bought it for that purpose. That has nothing to do whether the manufacturer of the ipad should be allowed to control whether you can do X.
Pretty sure that once people have bought the device, it's literally theirs and not Apples.
At that point, what Apple wants for the device should just be advisory rather than something they can exert any actual control over.
Jobs literally presented iPhone with “Desktop class applications & networking”.
I'm personally wishing the EU would shut up, but I can't demand they do anything.
Relatively niche environment shouldn’t have a voice?
> I'm personally wishing the EU would shut up, but I can't demand they do anything.
What exactly bothers you when EU requests improvements from Apple?
And the EU isn't "requesting" things, nor are they definitively "improvements". Apple has worked very hard to create a safe platform, a safe ecosystem, and the EU is demanding that they weaken some of those defense mechanisms.
I personally feel Apple has struck a reasonable balance, and I value the benefits.
Or like any other consumer they can do a feature request.
> And the EU isn't "requesting" things, nor are they definitively "improvements". Apple has worked very hard to create a safe platform, a safe ecosystem, and the EU is demanding that they weaken some of those defense mechanisms.
I’ll assume you’re talking about alternative app stores for EU, so how exactly having an alternative store going to weaken defense mechanisms for those who stay within walled garden?
Take away phone part and how many people would use an iPhone? Given how ubiquitous modern messengers are I’d say between 80 to 95% would still use it.
Take away washing part and how many people would use washing machine?
Therefore iPhone is a computing device with phone peripheral and washing machine is a washing machine machine with computing capability.
Because it's their machine. They decide what to do with it.
Or let me say this -- if there are 1000 Bootcamp users -- likely < 0.01% of the Mac user base -- Apple would never bother to create Bootcamp, write a bunch of drivers and keep drivers updated. Apple would completely ignore that use case.
But they did all those things. Which means even Apple sees a business need to do something to allow people running Windows on Mac computers.
You think you are smarter than Apple?
If people are genuinely interested in real-life use cases (in which case the question should be phrased like that, instead of with the current half sarcastic and condescending tone), consult reddit or ChatGPT. There are tons of use cases out there that are well explained.
I can't say I see the use case for this on iPhones, but this does unlock a lot of options for iPads. Too bad this thing is still locked to JIT-less mode.
It likewise seems clear that Apple relented in this case because a not-particularly-easy-to-use, interpreter-only PC emulator doesn't enable anything that isn't already possible with a Web app.
No need for making up new theories with no evidence, I think. They just don’t want to grant a third party JIT permission because of security concerns
The initial rejected UTM submission had no JIT compilation.
And I actually do have evidence for my conspiracy theory: iDOS 2. Apple was perfectly fine with it up until someone in tech media posted a guide on how to run ancient versions of Windows on it, then they pulled the app.
Furthermore, "fingers shall not touch mouse apps" was a Jobs decree. It's specifically the reason why Apple got into touch UI. Jobs designed the iPad out of spite due to a friend of his who was on the Windows tablet team around the turn of the millennium. Jobs was so angry that they were just putting Windows on a tablet - and handing people styluses to work around the small touch targets on XP - that he made Apple design a tablet computer demo around finger-only UI. That was then grafted onto the Purple project (which at that point was a clickwheel iPod with a phone modem in it) and we got the iPhone.
So my suspicion is that Apple has an internal "things which make Jobs spin in his grave" list that they would never allow, come hell, high water, or the European Union's antitrust regulators.
Huh… so I could run Linux on my phone!
https://github.com/tctiSH/qemu/blob/with_tcti_vectors/tcg/aa...
- TCG = Tiny Code Generator; QEMU's framework for emulating CPU architectures via translating instructions[1]
- TCI = Tiny Code Interpreter? The source code says: "(TCG with bytecode interpreter, experimental and slow)"[2]
- TCTI = Tiny Code Threaded-Dispatch Interpreter? The source code says: "TCTI (TCG with threaded-dispatch bytecode interpreter, experimental and slow; but faster than TCI)"[3]
So, apparently, it's some kind of optimized interpreter. Exactly what it means by "threaded-dispatch" is unclear, there's some surprisingly tricky looking things going on[4]. Does threaded refer to OS threading, or does it maybe mean that it's doing something a bit more like a cached interpreter? I wonder if it's even more clever than that.
[1]: https://wiki.qemu.org/Documentation/TCG
[2]: https://github.com/tctiSH/qemu/blob/1e4d72b004c26724cd049798...
[3]: https://github.com/tctiSH/qemu/blob/1e4d72b004c26724cd049798...
[4]: https://github.com/tctiSH/qemu/commit/1e4d72b004c26724cd0497...
It works kind of like ROP/JOP gadgets.
At first I was thinking of cached interpreters as often seen in video game console emulators, but actually, this reminds me more of the "virtual machines" used in executable packers/obfuscators like VMProtect and Themida.
Yeah, totally. Only changing the stack at runtime is helpful for avoiding the ire of anti-virus.
> Also shoutout to @ktemkin whose QEMU TCTI implementation was pivotal for this JIT-less build.
Does this mean that it is just a JIT-less build? How is the performance for Linux emulation compared to the previous UTM SE build?
Although I do expect it soon, since especially opening up NFC could benefit the nationwide contactless payment solution (twint).
Last time I tried through AltStore, I couldn't get it working.
Now Apple just needs to support JIT
$ brew install --cask utm