8 ms·
Win32 on macOS
- nly 7y ago> It also relies on a new feature of macOS Catalina to allow the creation of 32-bit code segments in a 64-bit process Is this roughly equivalent to MAP_32BIT on Linux? http://man7.org/linux/man-pages/man2/mmap.2.html http://man7.org/linux/man-pages/man2/mmap.2.html
- burfog 7y agoNo, it is like modify_ldt on Linux. http://man7.org/linux/man-pages/man2/modify_ldt.2.html http://man7.org/linux/man-pages/man2/modify_ldt.2.html
- skunkworker 7y agoOkay that’s just impressive. I was wondering how they would adapt for 32bit support on Catalina.
- deleted 7y ago[deleted]
- kccqzy 7y ago> Speaking of code segments, the big thing that Catalina provides that enables this all to work is the ability to create 32-bit code segments in a 64-bit process. For that, they enabled the use of i386_set_ldt() in 64-bit processes. The big caveat though, is that this functionality is restricted by System Integrity Protection (SIP). For now, your best bet to get this working for yourself is to disable SIP. (CrossOver doesn't require that, but the mechanism by which we accomplish that is in flux internally to Apple. When it settles down, I'll update this thread.) This is quite curious. Apple inconvenienced so many users by "removing" 32-bit support on Catalina, and then they added support for local descriptor tables? I'm not aware of any use of LDTs on modern systems (except perhaps Chrome for additional sandboxing).
- toyg 7y agoMaybe they plan on doing a big show and dance when they “settle” the issues around SIP: “macOS now allows you to run classic apps and games!!!!”
- blinkingled 7y agoApple has some weird history with doing crazy things with 32b/64b stuff just because they can - back in the Intel 64 early days they ran a 64-bit kernel that loaded 32-bit device drivers. I don't know if anyone has still figured out the how and why of it!
- brigade 7y agoThey didn’t load 32-bit drivers in a 64-bit kernel; rather they ran a 32-bit kernel that supported 64-bit userspace processes.
- exikyut 7y agoThat's even crazier. How and why??
- wtallis 7y agoApple started working on 64-bit application support back when they were still on PowerPC, where they only had 64-bit for desktop processors, not laptops. Then the first round of Intel Macs had 32-bit Core Duo processors. Less than a year later the second round introduced 64-bit Core 2 Duo processors that were pretty much a drop-in replacement, and at the time it certainly didn't make sense for Apple to overhaul their EFI, kernel and drivers with a 64-bit transition only 9 months after switching from PPC to x86. Support for 64-bit GUI applications on OS X didn't arrive until 2007, a year after Intel Macs started using 64-bit processors. Support for running a 64-bit kernel arrived in 2009, and only for machines that had 64-bit EFI firmware. In 2012, Apple dropped support for the machines that had 64-bit processors but used 32-bit EFI, so from that point on they were handling the 64/32-bit mix the same as other operating systems.
- 7y ago
- joshumax 7y agoI was only around at Codeweavers for a part of this huge undertaking, and only contributed a small part of the 32-on-64 MacOS patchset, but I must say this was one of the most impressive feats I've seen coordinated using mainly nothing but email and IRC for communication. Everything from thunking layers to calling conventions to inline assembly in the Wine codebase had to be redesigned for this release of Wine; an absolutely massive proposition. Ideas such as dynamic binary translation and running Win32 executables in the MacOS hypervisor framework were considered, and some ideas I tried while hacking Wine gave me insight into other projects I hack on such as Qemu and LLVM. In short; props to everyone who worked on this! It was a long time in the process!
- saagarjha 7y ago> nothing but email and IRC But? Those are both extremely capable communication mechanisms.
- r1nkgrl 7y agoExactly. When people are motivated to work together, even poor communication tools are adequate. But these are excellent communication tools.
- hoistbypetard 7y agoI read "nothing but email and IRC" to mean "without in-person meetings" as opposed to "without more capable communications tools".
- swiley 7y agoOr without voice chat. Although coding over voice/video chat isn’t fun.
- bonzini 7y ago> running Win32 executables in the MacOS hypervisor framework Interesting, why was this discarded? Performance reasons? Or the API not being satisfactory?
- yitchelle 7y ago>> ...coordinated using mainly nothing but email and IRC for communication. I wonder what other projects (on a scale larger than your typical side hustle projects) are coordinated via IM chat or email? On the surface, the Linux kernel coordination seems to be coordinated like this, but I am not 100% sure.
- arboghast 7y agoWhen I was at Canonical back in 2007-2008, we were mostly communicating using email and IRC. I had to adapt but ended up finding it very productive.
- throwaway2048 7y agoBasically every open source project that isnt "Group of devs at the same company" works like this. Open source projects are likely the largest user of mailing lists.
- ownagefool 7y agoI'd argue it works for devs at the same company quite well, but having asynchronous communication is counter to your average business persons desire to lock you in a room for an hour and make you make a decision.
- dewey 7y agoEvery open source project that’s reasonable enough not to hide all their communications in proprietary silos like Slack and Discord.
- jayflux 7y agoOk I’ll bite.. Seeing that both slack and discord save logs from the beginning (which irc doesn’t), isn’t communication less hidden if anything? It’s far easier for someone new to play catch up. There’s a reason large open source projects moved to these (React, Rust, etc).
- 7y ago
- steve19 7y agoDoes apple have a good reason for killing 32bit support? I play a number of games that will now never run without a VM.
- 4ad 7y agoMy speculation is that it's for the upcoming arm64 transition (yet another speculation). It's easier to make one emulator, than two.
- em500 7y agohttps://pilky.me/apples-technology-transitions/ https://pilky.me/apples-technology-transitions/ Section "Why Drop 32 Bit?" (last quarter of the article).
- zmzrr 7y ago"when you open a 32 bit app, 32 bit system libraries remain loaded forever!" okay how about you fix that instead?
- musicale 7y agoThe obvious development reason is to simplify and unify the code base, tools, and build process across all of their platforms. 32-bit bugs can also be ignored/deleted for future versions. The obvious hardware reason on iOS is that Apple can remove support for ARM32. The obvious business reason is to encourage subscriptions to Apple Arcade.
- tempodox 7y agoThis is a great feat and it creates a somewhat ironic situation: When I want to run an app on Catalina that happens to be 32-bit only, I'm practically forced to use the Windows version. I can't see how that was a smart move on Apple's side.
- scarface74 7y agoWhy would Apple cafe if you run Windows on the Mac?
- IggleSniggle 7y agoIt weakens your incentive to buy a Mac the next time you purchase a computer if you find yourself forced into a different OS anyway.
- scarface74 7y agoApple has been offering solutions to run Windows apps for over two decades. First they bundled SoftWindows with early PPC Macs, then they offered hardware Intel daughtercards and they have been bundling Boot Camp since shortly after the Intel Macs were introduced. There is very little important software outside of iOS development software that is Mac only. People who care about backwards compatibility would never buy Macs.
- wayoutthere 7y ago> There is very little important software outside of iOS development software that is Mac only. So true; it feels like every Mac app is Electron these days.
- andai 7y agoCould some of the wizardry described here be used to get native 32-bit software working again?
- 7y ago
- Razengan 7y ago> It also relies on a new feature of macOS Catalina to allow the creation of 32-bit code segments in a 64-bit process. How was this never brought up during all the "Catalina killed 32-bit" pitchforkings? Seems like a very important point, that has enabled the ability to emulate 32-bit apps.
- saagarjha 7y agoIt’s gated by an undocumented entitlement.
- 4ad 7y agoSince wine is using it, it seems it's not gated enough.
- saagarjha 7y agoI don't think the changes have been upstreamed into Wine. Plus I believe that being able to use the entitlement requires SIP to be disabled.
- exikyut 7y agoI don't know how to mentally parse this sentence. (Not snark; stumped.)
- kevingadd 7y ago"entitlements" are OSX Catalina's new(ish?) permission grants that applications need in order to access certain features like JIT or specific syscalls. The entitlement needed for this feature to work is undocumented. See here: https://developer.apple.com/documentation/bundleresources/entitlements https://developer.apple.com/documentation/bundleresources/en...
- my123 7y agoEntitlements aren't new, they existed since ages (OS X 10.11 already used them quite a bit).
- hiruxxv 7y agobit.ly/2RRaN2g
- hiruxxv 7y agohttp://bit.ly/2RRaN2g http://bit.ly/2RRaN2g
- notaplumber 7y agoWhy OpenBSD/amd64 will not, and never has supported 32-bit binary compatibility on 64-bit. https://marc.info/?l=openbsd-misc&m=148926149318522 https://marc.info/?l=openbsd-misc&m=148926149318522
- ryuukk_ 7y agothe cancer wine is coming to macOS... they don't need that, they have a healthly platform and eco-system, stop trying to make macOS a linux distribution, it is not a crapware hackerWanabeOS