Blame SUPPORTED_PLATFORMS.md

Packit b5b901
# Supported platforms
Packit b5b901
Packit b5b901
|  System | Support type | Supported versions | Notes |
Packit b5b901
|---|---|---|---|
Packit b5b901
| GNU/Linux | Tier 1 | Linux >= 2.6.32 with glibc >= 2.12 | |
Packit b5b901
| macOS | Tier 1 | macOS >= 10.7 | |
Packit b5b901
| Windows | Tier 1 | >= Windows 7 | MSVC 2008 and later are supported |
Packit b5b901
| FreeBSD | Tier 1 | >= 9 (see note) | |
Packit b5b901
| AIX | Tier 2 | >= 6 | Maintainers: @libuv/aix |
Packit b5b901
| z/OS | Tier 2 | >= V2R2 | Maintainers: @libuv/zos |
Packit b5b901
| Linux with musl | Tier 2 | musl >= 1.0 | |
Packit b5b901
| SmartOS | Tier 2 | >= 14.4 | Maintainers: @libuv/smartos |
Packit b5b901
| Android | Tier 3 | NDK >= r15b | |
Packit b5b901
| IBM i | Tier 3 | >= IBM i 7.2 | Maintainers: @libuv/ibmi |
Packit b5b901
| MinGW | Tier 3 | MinGW32 and MinGW-w64 | |
Packit b5b901
| SunOS | Tier 3 | Solaris 121 and later | |
Packit b5b901
| Other | Tier 3 | N/A | |
Packit b5b901
Packit b5b901
#### Note on FreeBSD 9
Packit b5b901
Packit b5b901
While FreeBSD is supported as Tier 1, FreeBSD 9 will get Tier 2 support until
Packit b5b901
it reaches end of life, in December 2016.
Packit b5b901
Packit b5b901
## Support types
Packit b5b901
Packit b5b901
* **Tier 1**: Officially supported and tested with CI. Any contributed patch
Packit b5b901
  MUST NOT break such systems. These are supported by @libuv/collaborators.
Packit b5b901
Packit b5b901
* **Tier 2**: Officially supported, but not necessarily tested with CI. These
Packit b5b901
  systems are maintained to the best of @libuv/collaborators ability,
Packit b5b901
  without being a top priority.
Packit b5b901
Packit b5b901
* **Tier 3**: Community maintained. These systems may inadvertently break and the
Packit b5b901
  community and interested parties are expected to help with the maintenance.
Packit b5b901
Packit b5b901
## Adding support for a new platform
Packit b5b901
Packit b5b901
**IMPORTANT**: Before attempting to add support for a new platform please open
Packit b5b901
an issue about it for discussion.
Packit b5b901
Packit b5b901
### Unix
Packit b5b901
Packit b5b901
I/O handling is abstracted by an internal `uv__io_t` handle. The new platform
Packit b5b901
will need to implement some of the functions, the prototypes are in
Packit b5b901
``src/unix/internal.h``.
Packit b5b901
Packit b5b901
If the new platform requires extra fields for any handle structure, create a
Packit b5b901
new include file in ``include/`` with the name ``uv-theplatform.h`` and add
Packit b5b901
the appropriate defines there.
Packit b5b901
Packit b5b901
All functionality related to the new platform must be implemented in its own
Packit b5b901
file inside ``src/unix/`` unless it's already done in a common file, in which
Packit b5b901
case adding an `ifdef` is fine.
Packit b5b901
Packit b5b901
Two build systems are supported: autotools and GYP. Ideally both need to be
Packit b5b901
supported, but if GYP does not support the new platform it can be left out.
Packit b5b901
Packit b5b901
### Windows
Packit b5b901
Packit b5b901
Windows is treated as a single platform, so adding support for a new platform
Packit b5b901
would mean adding support for a new version.
Packit b5b901
Packit b5b901
Compilation and runtime must succeed for the minimum supported version. If a
Packit b5b901
new API is to be used, it must be done optionally, only in supported versions.
Packit b5b901
Packit b5b901
### Common
Packit b5b901
Packit b5b901
Some common notes when adding support for new platforms:
Packit b5b901
Packit b5b901
* Generally libuv tries to avoid compile time checks. Do not add any to the
Packit b5b901
  autotools based build system or use version checking macros.
Packit b5b901
  Dynamically load functions and symbols if they are not supported by the
Packit b5b901
  minimum supported version.