The Island target 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 or Java 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. On Darwin, inter-operability with Cocoa classes is provided.
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. On Darwin, all Cocoa APIs and classes can be accessed.
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 optional-but-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. Right now, Island has support for these platforms and architectures:
- Windows — 64-bit (x64) and 32-bit (i386) Intel
- Linux — 64-bit Intel (x64) and 32-bit (armv6) ARM
- Darwin — 64-bit Intel (x64) and ARM (arm64) ARM
- Android NDK — 32-bit and 64-bit, various ARM and Intel chipsets
- WebAssembly — 32-bit (wasm) for use in Web Browsers