libuv/SUPPORTED_PLATFORMS.md
Jameson Nash c39e0217aa 2020.01.24, Version 1.34.2 (Stable)
Changes since version 1.34.1:
 
 * misc: adjust stalebot deadlines (Jameson Nash)
 
 * test: fix env-vars flakiness (cjihrig)
 
 * test: avoid truncating output lines (Jameson Nash)
 
 * darwin: stop calling SetApplicationIsDaemon() (Ben Noordhuis)
 
 * ibmi: implement uv_interface_addresses() (Xu Meng)
 
 * osx,fsevent: fix race during uv_loop_close (Jameson Nash)
 
 * osx,fsevent: clear pointer when deleting it [NFCI] (Jameson Nash)
 
 * Revert "aix: replace ECONNRESET with EOF if already closed" (Jameson Nash)
 
 * unix: handle uv__open_cloexec return value correctly (Anna Henningsen)
 -----BEGIN PGP SIGNATURE-----
 Comment: GPGTools - https://gpgtools.org
 
 iQIzBAABCgAdFiEElK42Z1xGTWS6+mjddDQ5C9vpucUFAl4pq5MACgkQdDQ5C9vp
 ucWJxA//fZm/u46gxSeRdWeFu9W1r1CgkJqmWT6vHeeBphk28lAulHAO0AM/bbbd
 x2WsLS8q7cLk3chwpN4CgJkgS8acqcsuHBGEzqc8o5cd76rCkua7eHvOR83D4Ix4
 c46hJH7WF3S4jnVV09iAU+mGplyUPF3F8HvmbTNZnbsuLKj2U88kDjm4nsxiSwdn
 aMeyZNtM6NdtqHRgIup+SqS4hNvaUt+gD7715efTlGPDwLR3KCJ8Mzd9F4JFrPrT
 wCjAGLiTFZXFcnwR/Ysx66jQNjfp/fZy7G/zU+7UFKwCjZdwZyybqzy4lmYXtV7N
 2hmliaxm3UsYPSD06mA+iUTdD9vnk2/htCNL5OBS11b6lAliYtdNC3l9BQ2Y3TVp
 xobPcjiRWmvN5P0GIL9/DjK7nxpSdj7BFFyyVz21/+OsYX+NYI4L/Vb4RjezGeGy
 RMS26S530fOsPCbPlSyEUqvjbTHI95FiLK8Y008YlRRsWVsCxrdrhDjT964LHZ51
 nFFPkR0Ghr/y0d9AzBsrsnjAi9g/K+dX3F72S8S2gS3LMkLVr6fLrEQ5AmclAa4f
 62TZvnKY3MzjdzsBpslGHHVp3l+HsNdkI27bLCbYUAL/c+R0fl96mac34IHGL+KV
 b/99O3WMxGtq/Zdn709ryMOLnC+F5KTJpl2LckExfxvubPcu9UQ=
 =SjB7
 -----END PGP SIGNATURE-----

Merge tag 'v1.34.2' into merge_1.34.2

PR-URL: https://github.com/libuv/libuv/pull/2649
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-01-31 13:34:36 -08:00

2.6 KiB

Supported platforms

System Support type Supported versions Notes
GNU/Linux Tier 1 Linux >= 2.6.32 with glibc >= 2.12
macOS Tier 1 macOS >= 10.9
Windows Tier 1 Windows >= 7 MSVC 2015 and later are supported
FreeBSD Tier 1 >= 10
AIX Tier 2 >= 6 Maintainers: @libuv/aix
z/OS Tier 2 >= V2R2 Maintainers: @libuv/zos
Linux with musl Tier 2 musl >= 1.0
SmartOS Tier 2 >= 14.4 Maintainers: @libuv/smartos
Android Tier 3 NDK >= r15b
IBM i Tier 3 >= IBM i 7.2 Maintainers: @libuv/ibmi
MinGW Tier 3 MinGW32 and MinGW-w64
SunOS Tier 3 Solaris 121 and later
Other Tier 3 N/A

Support types

  • Tier 1: Officially supported and tested with CI. Any contributed patch MUST NOT break such systems. These are supported by @libuv/collaborators.

  • Tier 2: Officially supported, but not necessarily tested with CI. These systems are maintained to the best of @libuv/collaborators ability, without being a top priority.

  • Tier 3: Community maintained. These systems may inadvertently break and the community and interested parties are expected to help with the maintenance.

Adding support for a new platform

IMPORTANT: Before attempting to add support for a new platform please open an issue about it for discussion.

Unix

I/O handling is abstracted by an internal uv__io_t handle. The new platform will need to implement some of the functions, the prototypes are in src/unix/internal.h.

If the new platform requires extra fields for any handle structure, create a new include file in include/ with the name uv-theplatform.h and add the appropriate defines there.

All functionality related to the new platform must be implemented in its own file inside src/unix/ unless it's already done in a common file, in which case adding an ifdef is fine.

Two build systems are supported: autotools and GYP. Ideally both need to be supported, but if GYP does not support the new platform it can be left out.

Windows

Windows is treated as a single platform, so adding support for a new platform would mean adding support for a new version.

Compilation and runtime must succeed for the minimum supported version. If a new API is to be used, it must be done optionally, only in supported versions.

Common

Some common notes when adding support for new platforms:

  • Generally libuv tries to avoid compile time checks. Do not add any to the autotools based build system or use version checking macros. Dynamically load functions and symbols if they are not supported by the minimum supported version.