I’m curious about something
On the mercury page it says
.NET, .NET Core, Mono and ASP.NET Core
The Java VM and any device that runs Java code.
Android, both the Java-based SDK and the CPU-native NDK
iOS, macOS, tvOS and watchOS
WebAssembly, for web browsers and Node.js
So Windows and Linux are CPU native machine code
Are iOS, macOS, tvOS, watchOS not and are rather something else ?
I’m 99% sure that you can compile macOS binaries to native machine code using their Island target.
macOS, iOS, tvOS and watchOS are always compiled to cpu-native code; although I like too refer to it as “semi-managed”, as most of Cocoa runs on top of the Objective-C runtime — which isn’t quite as managed as .NET and Java, but still has a certain managed “feel”.
With out Island backend, we support both Objective-C and our own object model, on macOS, iOS, tvOS and watchOS (and in the future will support Swift ABI types, as well). You can read more about our two back-ends for Cocoa here: https://docs.elementscompiler.com/Platforms/Cocoa/ToffeeVsIsland/
For Windows (and Linux) we call out the “native” explicitly to set it apart from .NET, which is also used mainly to target Windows GUI apps, as well s very popular for Linux servers and command line tools (thru Mono or .NET Core).
In general and for most of our users, for Windows development, .NET is the main story for most projects, and the native target is a secondary option.
Thanks for clarifying that for me
Any time! I’ve slightly tweaked the page to clarify this better. Don’t hesitate to let me know if you have any other questions!
Thanks for that and again thanks for the clarity