Interesting ARM compatibility shim for Windows 11

By: Doug S (foo.delete@this.bar.bar), July 3, 2021 12:05 pm
Room: Moderated Discussions
joema (joema4.delete.delete@this.this.gmail.com) on July 3, 2021 10:37 am wrote:
> --- (---.delete@this.redheron.com) on July 3, 2021 8:59 am wrote:
> > Linus Torvalds (torvalds.delete@this.linux-foundation.org) on July 2, 2021 2:10 pm wrote:
> > ...
> > In the case of Apple, plugins are basically no longer present as any part of the
> > system; communication between unrelated pieces of code is supposed to happen via XPC
> > or some similar OS-mediated mechanism that provides some degree of structure,
> > some degree of parameter validation, and a large degree of security, to the call.
> > It seems to me (knowing little about the current state of MS software...)
> > that this transition would have been an opportunity for MS to do the same thing,
> > to give up on unmediated plugins as a SW mechanism on security grounds, which in
> > turn simplifies all this requirement for flipping between code architectures within
> > a single app.
>
> Excellent point. Unlike ARM64EC, Rosetta2 cannot handle mixed-mode emulation. As you
> said, this isn't necessarily bad but a design tradeoff with costs and benefits.
>
> That said, any x86 in-process plugin will not work in a MacOS ARM64 host process. All 3rd-party
> plugin developers targeting Apple Silicon are supposed to re-write their code to use an out-of-process
> model and XPCs. An example is the new FxPlug 4 framework used by plugin developers for Final Cut
> Pro and Motion. There are also new requirements for reentrancy and synchronization:
> https://developer.apple.com/documentation/professional_video_applications/fxplug
>
> I'm not sure how many people noticed it but the Rosetta2 limitations were documented in the the 2020 WWDC
> talk "Port your Mac app to Apple silicon": https://developer.apple.com/videos/play/wwdc2020/10214/
>
> At 30:05 in that video this graphic illustrates the limitation: https://photos.smugmug.com/photos/i-xt9CVf7/0/54d918c7/X2/i-xt9CVf7-X2.jpg
>


Apple dropped support for 32 bit x86 and a bunch of 10+ year old APIs in the OS version previous to the one that introduced ARM support. Clearly that was intended to make the migration easier.

Dropping the old APIs made sense since they didn't want to waste time porting obsolete APIs to ARM, and dropping 32 bit support made the translation simpler and they'd been warning developers that this would happen for years.

The problem with introducing mixed mode support like Microsoft has done is that they will never get rid of it. What's the incentive for developers to port the 90% of their application that isn't particularly performance sensitive if they don't have to? Not only is that a handicap that limits the performance of ARM PCs, it makes it impossible for them to remove x86 emulation from Windows because doing so would break all those ARM64EC applications.

Meanwhile Apple will be able to eventually drop Rosetta 2 like they dropped the original Rosetta and avoid the support overhead. Those few customers who still have old x86 Mac applications that were never ported (because the developer is out of business or something) will be forced to make a choice between giving it up or taking extra measures like running an older macOS in a VM to access it.

The reason for the difference has to do with the end goal for each. Microsoft is adding ARM support but has no plans to ever drop x86 support. Apple is migrating from x86 to ARM, and sometime later this decade will drop x86 support from macOS entirely. We know Apple will fully support ARM five years from now, but will Microsoft? Given their track record, I wouldn't want to wager on that.

The problem Microsoft is trying to solve with ARM64EC is that developers have no incentive to port to ARM - they know Microsoft has abandoned alternate architectures every time they've offered them in the past, and none has been commercially successful (except perhaps for Alpha and Itanium, for a brief time, on servers only) There is no guarantee how long Windows/ARM will be supported, so why should developers invest the time?

Allowing them to invest less time by only porting part of their application is Microsoft hoping they can induce more developers to support ARM. I'm skeptical this will - the cost of porting is mostly in the testing, and being willing to respond to customer support queries. You have to do those things regardless of what percentage of your application is running ARM native code, but not if you sell only an x86 version and tell customers who run it on Windows/ARM that any problems are Microsoft's fault.
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Interesting ARM compatibility shim for Windows 11Beastian2021/07/01 02:48 PM
  Interesting ARM compatibility shim for Windows 11Groo2021/07/01 03:44 PM
  Interesting ARM compatibility shim for Windows 11Doug S2021/07/01 08:20 PM
    Interesting ARM compatibility shim for Windows 11Mark Roulo2021/07/01 08:28 PM
      Interesting ARM compatibility shim for Windows 11Beastian2021/07/01 09:38 PM
        Interesting ARM compatibility shim for Windows 11Brett2021/07/02 02:45 AM
          Interesting ARM compatibility shim for Windows 11James2021/07/02 05:25 AM
          Interesting ARM compatibility shim for Windows 11dmcq2021/07/02 05:34 AM
          Interesting ARM compatibility shim for Windows 11Gabriele Svelto2021/07/02 09:02 AM
            Interesting ARM compatibility shim for Windows 11Kester L2021/07/02 09:33 AM
              Interesting ARM compatibility shim for Windows 11Jukka Larja2021/07/02 11:36 PM
                Interesting ARM compatibility shim for Windows 11Gabriele Svelto2021/07/03 05:37 AM
                  Interesting ARM compatibility shim for Windows 11Jukka Larja2021/07/03 10:38 AM
                    Interesting ARM compatibility shim for Windows 11Gabriele Svelto2021/07/03 02:07 PM
                Interesting ARM compatibility shim for Windows 11Kester L2021/07/06 07:48 AM
                  Interesting ARM compatibility shim for Windows 11Jukka Larja2021/07/06 10:46 PM
          Don't compare manufacturing unit cost with sales priceMark Roulo2021/07/02 10:07 AM
            Don't compare manufacturing unit cost with sales price---2021/07/02 11:22 AM
              Don't compare manufacturing unit cost with sales priceme2021/07/02 11:32 AM
              Don't compare manufacturing unit cost with sales priceDummond D. Slow2021/07/03 02:11 PM
          Interesting ARM compatibility shim for Windows 11anon2021/07/02 11:26 AM
            Interesting ARM compatibility shim for Windows 11Beastian2021/07/02 12:47 PM
              Interesting ARM compatibility shim for Windows 11Linus Torvalds2021/07/02 02:10 PM
                Optimized local call conventionsanon22021/07/02 07:49 PM
                  Optimized local call conventionsAdrian2021/07/02 10:03 PM
                    Optimized local call conventionsanon22021/07/03 12:10 AM
                      Optimized local call conventionsAdrian2021/07/03 10:04 PM
                  Optimized local call conventionsrwessel2021/07/02 11:44 PM
                    Optimized local call conventionsdmcq2021/07/03 01:47 PM
                  Optimized local call conventionsCarson2021/07/03 06:13 PM
                    Optimized local call conventionsanon22021/07/03 09:18 PM
                      Optimized local call conventionsCarson2021/07/04 01:23 PM
                Interesting ARM compatibility shim for Windows 11---2021/07/03 08:59 AM
                  Interesting ARM compatibility shim for Windows 11joema2021/07/03 10:37 AM
                    Interesting ARM compatibility shim for Windows 11Doug S2021/07/03 12:05 PM
                      Interesting ARM compatibility shim for Windows 11Linus Torvalds2021/07/03 12:26 PM
                        Interesting ARM compatibility shim for Windows 11Doug S2021/07/03 03:45 PM
                          Interesting ARM compatibility shim for Windows 11Michael S2021/07/03 04:54 PM
                          Interesting ARM compatibility shim for Windows 11-.-2021/07/04 06:57 AM
                            Interesting ARM compatibility shim for Windows 11---2021/07/04 09:25 AM
                            Interesting ARM compatibility shim for Windows 11Doug S2021/07/05 09:34 AM
                      Interesting ARM compatibility shim for Windows 11Foo_2021/07/04 02:25 AM
                        Interesting ARM compatibility shim for Windows 11Doug S2021/07/04 05:18 AM
                          Interesting ARM compatibility shim for Windows 11Jukka Larja2021/07/04 05:47 AM
                            Ongoing Windows 16 bit supportJames2021/07/05 02:17 AM
                              Ongoing Windows 16 bit supportgai2021/07/05 08:35 AM
                                Ongoing Windows 16 bit supportJukka Larja2021/07/05 11:11 PM
                          Interesting ARM compatibility shim for Windows 11Foo_2021/07/04 06:31 AM
                          Microsoft should drop x86 thinking...Dummond D. Slow2021/07/04 07:40 AM
                            Microsoft should drop x86 thinking...Doug S2021/07/05 09:56 AM
                              Microsoft should drop x86 thinking...Brett2021/07/05 01:47 PM
                                "DOOMED"Anon2021/07/06 01:01 AM
                                  "DOOMED"Michael S2021/07/06 03:15 AM
                                    "DOOMED"dmcq2021/07/06 04:08 AM
                                      "DOOMED"me2021/07/06 04:57 AM
                                      "DOOMED"Michael S2021/07/06 05:09 AM
                                        "DOOMED"Anon2021/07/06 05:50 AM
                                          "DOOMED"Michael S2021/07/06 06:29 AM
                                  "DOOMED"Doug S2021/07/06 08:41 AM
                                    "DOOMED"Jukka Larja2021/07/06 10:55 PM
                                      "DOOMED"Doug S2021/07/07 12:21 AM
                                Forgot about AMD?Chester2021/07/06 08:51 AM
                                dumb terminalsanonymous22021/07/06 10:51 AM
                              Microsoft should drop x86 thinking...Dummond D. Slow2021/07/06 06:40 AM
                  Interesting ARM compatibility - Procedure values?dmcq2021/07/04 03:49 AM
                    Interesting ARM compatibility - Procedure values?dmcq2021/07/04 04:18 AM
                      Interesting ARM compatibility - Procedure values?Etienne Lorrain2021/07/05 01:21 AM
                        Interesting ARM compatibility - Procedure values?dmcq2021/07/06 03:20 AM
                    Interesting ARM compatibility - Procedure values?---2021/07/04 09:42 AM
                      Interesting ARM compatibility - Procedure values?dmcq2021/07/04 02:44 PM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell tangerine? 🍊