Changes since version 1.38.0: * test: use last matching qemu version (cjihrig) * win, util: rearrange uv_hrtime (Bartosz Sosnowski) * test: skip signal_multiple_loops test on QEMU (gengjiawen) * build: add android build to CI (gengjiawen) * test: extend fs_event_error_reporting timeout (cjihrig) * build: link libkvm on netbsd only (Alexander Tokmakov) * linux: refactor /proc file reader logic (Ben Noordhuis) * linux: read load average from /proc/loadavg (Ben Noordhuis) * android: remove patch code for below 21 (gengjiawen) * win: fix visual studio 2008 build (Arenoros) * win,tty: fix deadlock caused by inconsistent state (lander0s) * unix: use relaxed loads/stores for feature checks (Ben Noordhuis) * build: don't .gitignore m4/ax_pthread.m4 (Ben Noordhuis) * unix: fix gcc atomics feature check (Ben Noordhuis) * darwin: work around clock jumping back in time (Ben Noordhuis) * udp: fix write_queue cleanup on sendmmsg error (Santiago Gimeno) * src: build fix for Android (David Carlier) -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAABCgAdFiEElK42Z1xGTWS6+mjddDQ5C9vpucUFAl7/Yg8ACgkQdDQ5C9vp ucXgdg//euAx0jByjpOdc4RjLAXpq+iEDuLQXIzT3GmvK3g5+ymrB1HVkw455l7o gHY9f/GM+A8wZBcLoyfMywLiSD78/HOrHwQ1MGiieMm1hPFr8OXQ4Z25Bdx/GsE4 2nCprDrfMrVUQs8eFVx30fjFvOymzhpHak173N6uBOVBLQRivQHSuOG4Dk7RJSAA iCIKQ6JulQ/yX0OFvvnYjwbnt5bCDlr1gTFX1HQZFi4dELIbdfaqn1AkY6COa4mc tKZRMC1rV81HejNAYFG2Js1QQaUKtMemyHUple6qRo/TYhsZXMaWShjOOHtBqT5X hQ8yqGLcaQhWXI7FlBK9aOFBc2/c7Jrxn78MFnd0C8kUHMT9oMhK3KOUHjJ4K5Zt sN06cS9Zj9Gpvcnzffohx6/0ePyIVHsEGBt8gRI3YCH4GR0A12WYc4Kr8YuJu11J 7WVEjIpxZBRajOq8xfA4n6brM0s8gwJvCm2/ypYZKbQ0kz0ZZD5nOK+Ax+ukdg51 cBtTyx0tme0bQPZkzJP5sMP6DqGKgHbMzeUueqJ5xXOuXWjnOZRWfxmT22RSc6vI 9D+9p12GD81KlYoprbKk5Fg/adIW/kKrT1cFMeKgcKhyuq8B5maDoaN/FP0oIZc2 p1Pv9KEJCo7gI35XwkEvEIDLJ1Ax8B8RQE+8sophzsxVxo5E+GE= =P+eq -----END PGP SIGNATURE----- Merge tag 'v1.38.1' into merge_1.38.1 PR-URL: https://github.com/libuv/libuv/pull/2927 Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2.7 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 cmake. Ideally both need to be supported, but if one of the two 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.