For those early adopters getting their new ARM based Macs today, I'm really curious if Calibre runs out of the box using Rosetta 2? And also how hard would it be to recompile an ARM native version for the new Macs?
Cant answer your first question, as to the second, pretty hard, all of calibre's deps would need to be dual compiled. In the past calibre has had dual ppc/x86 builds for os x, so its not impossible, just dont expect it to be anytime soon.
Thanks, if anyone buys an M1 Mac and tries it, please do report on whether it works!
And also if Calibre works
I'd think in theory it *should* work, though performance might not be great
@Quoth: indeed! The reviews are quite positive so far......
@Binaryhermit: quite the opposite, the initial benchmarks indicate that Intel code running on Mac's ARM actually is faster than many Intel native computers (google it). However, even Apple does not guarantee 100% of Intel code will work, and the exceptions are rather technical. I suspect Calibre will work fine based on what I have read.
Quote kovidgoyal
Cant answer your first question, as to the second, pretty hard, all of calibre's deps would need to be dual compiled. In the past calibre has had dual ppc/x86 builds for os x, so its not impossible, just dont expect it to be anytime soon.
Here's a link from Apple that describes what is compatible:
https://developer.apple.com/documentation/apple_silicon/about_the_rosetta_translation_environmentNote specifically this (does Calibre use Kernel extensions?):
What Can't Be Translated?
Rosetta can translate most Intel-based apps, including apps that contain just-in-time (JIT) compilers. However, Rosetta doesnt translate the following executables:
Kernel extensions
Virtual Machine apps that virtualize x86_64 computer platforms
Rosetta translates all x86_64 instructions, but it doesnt support the execution of some newer instruction sets and processor features, such as AVX, AVX2, and AVX512 vector instructions. If you include these newer instructions in your code, execute them only after verifying that they are available. For example, to determine if AVX512 vector instructions are available, use the sysctlbyname function to check the hw.optional.avx512f attribute.
Quote binaryhermit
I'd think in theory it *should* work, though performance might not be great
Here's Lightroom Classic running under Rosetta. I suspect Calibre performance will not be an issue!
https://youtu.be/S-dOB326mlY?t=771No calibre does not use kernel extensions/virtual machines. As far as I know it *should* work fine, however, the proof of the pudding is in the eating.
Thanks! I'm inspired enough to pick up my M1 Macbook Air tomorrow and try. 14 days to test it, at least!