The Island target, first added in Elements 9.0 allows you to build low-level libraries and executables against the platform's native "C level" APIs. Island is an open platform that can and will be extended to many physical targets; currently it supports:
- Android NDK
Island compiles to CPU-native code.
Choosing Island as a target trades the rich frameworks provided by a more high-level runtime such as .NET, Java or Cocoa for the benefit of writing code that gets compiled directly against the native CPU (e.g. x64 or i386) and can directly access the lowest level of operating system or hardware APIs.
Island applications have full access to the platform's native low-level APIs. On Windows, that is the Win32 or Win64 C-style API, on Linux it is the standard UNIX/Posix C API. These APIs are provided in the
rtl.fxreference and namespace, included by default, where applicable.
In addition, Island comes with a very minimal core runtime, "Island RTL", that provides a basic class and type system. This includes the
Objecttype, which is the ancestor of any classes you define yourself, as well as simple types such as
DateTime, core collection classes, Exception handling (and the base
Exceptionclass) and more. Island RTL is open source and available on GitHub.
A version of the Swift Base Library is also provided, for supporting higher-level Swift functionality and types; as on the other platforms, SBL can be used from all languages, and is referenced by default from Swift/Silver projects.
Supported Target Sub-Platforms
As mentioned above, Island is designed to be platform-agnostic and to be extended to support a variety of different platforms and target systems, over time. For the initial release, Island has support for two platforms and architectures:
- Windows — 64-bit (x64) and 32-bit (i386) Intel
- Linux — 64-bit (x64) Intel and 32-bit (armv6) ARM
- Android NDK — 32-bit and 64-bit, various ARM and Intel chipsets
- WebAssembly — 32-bit (wasm) for use in Web Browsers
Support for Darwin (low-level macOS) is planned, but currently lower priority (as our Cocoa platform already covers most of this target, and also generates CPU-native executables).