Commit Graph

5633 Commits

Author SHA1 Message Date
Deep C
04fc1580d4
qnx: add qnx 8 support (#4801)
Fixes: https://github.com/libuv/libuv/issues/4710
2025-06-30 08:26:11 +02:00
chemodax
2545ffe74c
win: replace GetModuleHandleA with GetModuleHandleW (#4812) 2025-06-29 20:32:14 +02:00
Juan José Arboleda
513751e2fc unix: handle possible ENOMEM in uv__tcp_listen
Refs: https://github.com/libuv/libuv/issues/4755
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-06-24 10:50:34 +02:00
chemodax
5f3c0d3d08
win: use WSA_FLAG_NO_HANDLE_INHERIT in WSASocketW (#4810)
Resolves a potential race condition when a child process has been
created between WSASocketW() and SendHandleInformationW().
2025-06-22 23:26:24 +02:00
Ben Noordhuis
0d4f54f0f6
win: handle empty string in uv_get_process_title (#4807)
Distinguish between errors and "the console title is the empty string"
when calling GetConsoleTitle. Both are signified by a return value of
zero.

No test because I couldn't think of a succinct way to programmatically
create a new console window with an empty title.

Fixes: https://github.com/nodejs/node/issues/58695
2025-06-15 13:37:15 +02:00
Juan José
e13e80b20c
include: remove unused macro undefs from uv.h (#4790)
These macros are not defined in the public headers

Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-06-14 22:38:58 +02:00
Juan José
1fbf4f7187
build: make automake link libm on bsd-likes (#4795)
This mirrors the behavior already fixed in the CMake build system.

Fixes: https://github.com/libuv/libuv/issues/4794
Refs: 4681d5d570
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-06-14 22:37:30 +02:00
jhnh204
6a0945b333
src: fix nullptr dereference in uv__print_handles (#4805) 2025-06-14 22:16:20 +02:00
Ben Noordhuis
b00c5d1a09
linux: fix -Wformat-truncation warning (#4793) 2025-05-29 22:11:40 +02:00
Andy Pan
3a9a6e3e6b
tcp: support customizing TCP_KEEPINTVL and TCP_KEEPCNT
Implement `uv_tcp_keepalive_ex` function that extends
`uv_tcp_keepalive` to support `TCP_KEEPINTVL` and `TCP_KEEPCN`
socket options in addition to TCP_KEEPIDLE.
2025-05-21 08:43:53 +02:00
Saúl Ibarra Corretgé
71ec5c0fcd
doc: update ncurses link (#4788)
The link at gnu.org is a redirect now and the docs linter breaks some times.
2025-05-16 09:31:11 -04:00
Juan José
29edf31089
build: dedup sanitizer jobs using matrix strategy (#4776)
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-05-15 09:30:00 +02:00
Ryan Liptak
2b76a4fafa
unix: fix uv_thread_{get,set}priority error codes (#4782)
pthread_getschedparam and pthread_setschedparam do not use errno but
instead return the error code directly.

https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_getschedparam.html

Also include a fix to return UV_ESRCH instead of UV_EBADF on Windows,
like Unix systems do.
2025-05-15 09:16:25 +02:00
Poul T Lomholt
a3b8cb9cc0
doc: don't mention UV_LOOP_ENABLE_IO_URING_SQPOLL (#4786)
The documentation is referring to an internal name -
UV_LOOP_ENABLE_IO_URING_SQPOLL - in several places. Fix this by using
the public UV_LOOP_USE_IO_URING_SQPOLL name instead.
2025-05-15 09:12:36 +02:00
Juan José
8d4218dcd7
test: remove unused include of <limits.h> in runner.h (#4780)
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-05-10 10:04:59 -04:00
Juan José
e4ed92aad7
test: skip udp_multicast_join if not system-wide available (#4779)
Fixes: https://github.com/libuv/libuv/issues/4778

Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-05-08 12:39:26 -04:00
Juan José
a1692f7646
src: remove unused include of <assert.h> in timer.c (#4774)
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-05-02 10:13:07 +02:00
Santiago Gimeno
76fb3b73da
Now working on version 1.51.1 2025-04-25 11:55:04 +02:00
Santiago Gimeno
6c1f9b2fb3 Add SHA to ChangeLog 2025-04-25 11:50:28 +02:00
Santiago Gimeno
5152db2cbf 2025.04.25, Version 1.51.0 (Stable)
Changes since version 1.50.0:

* win: fix leak in uv_os_tmpdir (Saúl Ibarra Corretgé)

* docs: fix RTD build (Saúl Ibarra Corretgé)

* win: lazy-load [GS]etThreadDescription symbols (Ben Noordhuis)

* linux: try preadv64/pwritev64 before preadv/pwritev (Ben Noordhuis)

* win: check cwd length before spawning a child process (Morten
  Engelhardt Olsen)

* macos,bsd: handle missing /dev/null in chroot env (Andrey)

* doc: fix README link text (Julio Jordán)

* win: fix order of FILE_STAT_BASIC_INFORMATION struct fields (Hüseyin
  Açacak)

* macos: increase child process stdio buffer size (Jinho Jang)

* doc: add C3 bindings to LINKS.md (Velikiy Kirill)

* unix: remove unnecessary errno.h include in poll.c (Juan José
  Arboleda)

* win: fix the inconsistency in volume serial number (Hüseyin Açacak)

* unix: add thread affinity support on openharmony (rainlow)

* unix: enable getrusage for SunOS (Paolo Insogna)

* unix,win: accept NAN/INFINITY as file timestamps (Ben Noordhuis)

* win: add ENABLE_VIRTUAL_TERMINAL_INPUT raw tty mode (Anna Henningsen)

* test: handle UV_ENOTSUP in platform_output (cjihrig)

* doc: fix rendering of threading.html (Tobias Nießen)

* unix,sunos: enable use of sendmmsg on Solaris and Illumos (Stacey
  Marshall)

* unix: handle out of memory in iface name copy (Ben Noordhuis)

* openbsd: do not error out if cpuspeed is not available (Robert Nagy)

* test: skip thread_name_threadpool on AIX/IBMi (Abdirahim Musse)

* aix,ibmi: fix undeclared identifiers (Richard Lau)

* unix,sunos: prefer SO_REUSEPORT for load balancing (Stacey Marshall)

* doc: free lib pointer before function return (mugitya03)

* test: link with libm (Juan José Arboleda)

* style: rename parameter to match definition (Mohammed Keyvanzadeh)

* test: support partial output lines in test runner (cjihrig)

* build: switch from c90 to c11 (Ben Noordhuis)

* linux: allow nul bytes in abstract socket address (Itay Bookstein)

* sunos: use pipe2 on solaris and illumos (Andy Pan)

* unix: remove TOCTOU issues from uv_pipe_chmod (Ben Noordhuis)

* unix: use pipe_fname if getsockname returns nothing (crupest)

* haiku: use uint32 instead of uint32_t (AE1020)

* doc: update thread pool stack size comment (Ben Noordhuis)

* unix: improve uv_loop_init OOM handling (Ben Noordhuis)

* test: merge uv_tcp_connect callbacks (Juan José Arboleda)

* test: skip multievent tests on macOS with TSAN enabled (Juan José
  Arboleda)

* linux: align CPU quota calculation with Rust (Juan José Arboleda)

* kqueue: improve fs event watcher OOM handling (Juan José Arboleda)

* sunos: improve fs event watcher OOM handling (Juan José Arboleda)

* build: shorten instructions for cmake build (Juan José Arboleda)
2025-04-25 11:50:27 +02:00
Juan José
eacd6e3c45
build: shorten instructions for cmake build (#4762)
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-04-24 22:53:03 +02:00
Juan José
e6c0007fae
sunos: improve fs event watcher OOM handling (#4759)
Propagate errors from uv__io_init_start() back to the caller.

Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-04-23 23:24:52 +02:00
Juan José
414a5e7333
kqueue: improve fs event watcher OOM handling (#4758)
Propagate errors from uv__io_init_start() back to the caller.

Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-04-23 23:21:37 +02:00
Juan José
69d2dfec14
linux: align CPU quota calculation with Rust (#4746)
Align CPU quota calculation with Rust's cgroup heuristics.

Fixes: https://github.com/libuv/libuv/issues/4740
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-04-22 22:12:30 +02:00
Juan José
47a5c85c4e
test: skip multievent tests on macOS with TSAN enabled (#4763)
Fixes: https://github.com/libuv/libuv/issues/4659
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-04-22 22:09:25 +02:00
Juan José
086da2c458
test: merge uv_tcp_connect callbacks (#4761)
Distinguish a callback for v4 and v6 connections is not relevant for
this test.

Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-04-20 15:17:49 -04:00
Ben Noordhuis
942e1418ea
unix: improve uv_loop_init OOM handling (#4757)
Handle out-of-memory conditions in uv_loop_init better, albeit still
not perfect: bubble up the error instead of aborting.

Also fixes a file descriptor leak on Linux (and likely other platforms)
that the new test caught; the backend epoll fd was being leaked in the
error path.

Fixes: https://github.com/libuv/libuv/issues/4755
2025-04-18 16:23:51 +02:00
Ben Noordhuis
11ecfbad81
doc: update thread pool stack size comment (#4756)
I changed the default stack size in commit 73b0c1f94 from October 2022
and although I added a versionchanged note, I didn't update the blurb
a few lines below.

It wasn't accurate before that change either though, because even with
musl libc's ~80kb thread stacks, 128 threads works out to 10 MB.

Refs: https://github.com/nodejs/node/issues/57911
2025-04-17 19:56:19 +02:00
AE1020
bf6c8870dc
haiku: use uint32 instead of uint32_t (#4754)
Haiku has parallel types to stdint.h, and their APIs use these
types.  In the Haiku-specific haiku.h file, it is passing an
address of a uint32_t to get_cpu_topology_info(), that expects
the other uint32:

  648fa5897c/src/system/libroot/os/system_info.cpp (L187)

You get an "incompatible-pointer-types" warning in gcc if the
warnings are turned up.  But if you pass the pointer to Haiku's
notion of uint32, then the warning goes away.
2025-04-16 14:47:07 +02:00
crupest
bcc799a16e
unix: use pipe_fname if getsockname returns nothing (#4748)
On some platforms (like GNU/Hurd), `getsockname` returns an empty
string for sockets in the UNIX domain. However, we do have stored the
path info in `pipe_fname` of `uv_pipe_t`, so we can try with it
if `getsockname` returns an empty string.
2025-04-08 10:49:34 +02:00
Ben Noordhuis
fc29c125d4
unix: remove TOCTOU issues from uv_pipe_chmod (#4749)
Use fchmod() on platforms that support it on UNIX sockets. Only fall
back to chmod() on platforms that don't (macOS and the BSDs.)

Remove the stat + chmod dance from the fallback and just call chmod
directly, because that's another source of TOCTOU issues.

Fixes: https://github.com/libuv/libuv/issues/2040
2025-04-07 22:34:23 +02:00
Andy Pan
745c68d4ea
sunos: use pipe2 on solaris and illumos (#4747)
Solaris implemented pipe2 in 11.4 and illumos have had it since 2013.

Ref:
https://docs.oracle.com/cd/E88353_01/html/E37841/pipe2-2.html
https://illumos.org/man/2/pipe2
https://www.illumos.org/issues/3714
2025-04-07 09:03:26 +02:00
Itay Bookstein
c1a9f01f22
linux: allow nul bytes in abstract socket address (#4737)
Documentation on Linux explains that nul bytes have no
special significance in abstract namespace socket names.
Avoid precluding such addresses.

Signed-off-by: Itay Bookstein <ibookstein@gmail.com>
2025-03-27 08:48:56 +01:00
Ben Noordhuis
bb706f5fe7
build: switch from c90 to c11 (#4743)
After 14 years that should be fairly safe, right? Right!?

Not safe enough for Windows Server 2016 apparently; there are build
errors coming from system headers. The GHA images are slated for removal
in a month anyway so upgrade them to Windows Server 2025.

Fixes: https://github.com/libuv/libuv/issues/4742
2025-03-24 08:01:25 +01:00
Colin Ihrig
2b96e47f12
test: support partial output lines in test runner (#4744)
This commit updates the test runner's print_lines() logic to
better handle partial lines.
2025-03-24 00:00:22 -04:00
Mohammed Keyvanzadeh
ea1cf034be style: rename parameter to match definition
Rename the `handle` parameter of `timer_close_cb`'s declaration
to `timer` to match the definition.
2025-03-17 22:32:21 +01:00
Juan José
4681d5d570
test: link with libm (#4735)
Fixes: https://github.com/libuv/libuv/issues/4734
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-03-11 10:18:24 +01:00
mugitya03
c727be4df9
doc: free lib pointer before function return (#4720)
In function main, the pointer lib allocated at line 7 is passed as an
argument to functions uv_dlopen at line 10, uv_dlerror at lines 11 and
17, and uv_dlsym at line 16, but it is never freed before the function
returns at line 24. This results in a memory leak bug.
2025-03-09 21:47:27 +01:00
Stacey Marshall
98a4bab92a
unix,sunos: prefer SO_REUSEPORT for load balancing (#4733)
Solaris 11.4 has Load Balancing for SO_REUSEPORT, but setting
SO_REUSEADDR disables load balancing.  As per comments in
test/test-udp-reuseport.c prefer SO_REUSEPORT when available.

With these changes in place udp-reuseport testing passes.  BIND (named),
which uses routing sockets which cause ENOPROTOOPT to be returned when
SO_REUSEPORT is requested, also continues to work with the change.

Notes:
- The use of getsockopt() to query if SO_REUSEPORT was available was
  erroneous.
- Selectively limiting SO_REUSEPORT setting to specific types of socket
  was considered but not entertained.
- Oracle will investigate if the setting of SO_REUSEADDR was
  intentionally meant to prevent load balancing.
- Adding a test for routing sockets is left for future work.
2025-03-07 22:22:48 +01:00
Richard Lau
352d992916
aix,ibmi: fix undeclared identifiers (#4730)
Refs: https://github.com/libuv/libuv/pull/4724
2025-03-03 21:08:09 +01:00
Abdirahim Musse
92eacd19a1
test: skip thread_name_threadpool on AIX/IBMi (#4731)
uv_thread_getname is not available on aix and ibm i
Same issue as thread_name test
Refs: https://github.com/libuv/libuv/pull/4599#issuecomment-2498376606
2025-03-03 13:12:48 -05:00
Robert Nagy
545ecf515f
openbsd: do not error out if cpuspeed is not available (#4727)
On OpenBSD we do not know the cpuspeed in same cases (mostly arm64)
and the HW_CPUSPEED sysctl will return EOPNOTSUPP in that case,
which can be ignored because we still need the rest of the CPU
information.
2025-03-03 09:13:29 +01:00
Ben Noordhuis
16d6a0b49d
unix: handle out of memory in iface name copy (#4724)
Allocate storage upfront, that way we can never run out of memory
halfway through processing the interface list.

Fixes: https://github.com/libuv/libuv/issues/4723
2025-02-27 23:30:29 +01:00
Stacey Marshall
436c04048e
unix,sunos: enable use of sendmmsg on Solaris and Illumos (#4717)
Solaris provides sendmmsg() as of 11.3.32.
It was added at the same time as MSG_WAITFORONE.

The same is seen in Illumos guarded by __BSD_VISIBLE

Fixes: https://github.com/libuv/libuv/issues/4715
2025-02-27 12:24:40 -05:00
Tobias Nießen
feddddb56b
doc: fix rendering of threading.html (#4716) 2025-02-25 19:03:07 -05:00
Colin Ihrig
f61f9c29d8
test: handle UV_ENOTSUP in platform_output (#4714)
Fixes: https://github.com/libuv/libuv/issues/4713
2025-02-25 13:22:10 -05:00
Anna Henningsen
843b64faf5
win: add ENABLE_VIRTUAL_TERMINAL_INPUT raw tty mode (#4688)
Windows provides the `ENABLE_VIRTUAL_TERMINAL_INPUT` flag for TTY input
streams as a companion flag to `ENABLE_VIRTUAL_TERMINAL_PROCESSING`,
which libuv is already setting for TTY output streams.

Setting this flag lets the terminal emulator perform some of the
processing that libuv already currently does for input events,
but most notably enables receiving control sequences that are
otherwise entirely unavailable, e.g. for bracketed paste
(which the Node.js readline implementation added basic support for
in https://github.com/nodejs/node/commit/87af913b66eab78088acfd).

libuv currently already provides translations for key events to
control sequences, i.e. what this mode is intended to provide,
but libuv does not and cannot translate all such events.
Since the control sequences differ from the ones that Windows
has chosen to standardize on, and applications may not be expecting
this change, this is opt-in for now (but ideally will be the default
behavior starting in libuv v2.x, should that ever happen).

Another downside of this change is that not all shells reset
this mode when an application exits. For example, when running a
Node.js program with this flag enabled inside of PowerShell in
Windows terminal, if the application exits while in raw TTY input mode,
neither the shell nor the terminal emulator reset this flag, rendering
the input stream unusable.

While there's general awareness of the problem that console state is
global state rather than per-process (same as on UNIX platforms),
it seems that applications like PowerShell aren't expecting to need to
unset this flag on the input stream, only its output counterpart
(e.g. 4e7942135f/src/Microsoft.PowerShell.ConsoleHost/host/msh/ConsoleHost.cs (L1156)).

Hence, `uv_tty_reset_mode()` is extended to reset the terminal
to its original state if the new mode is being used.

Refs: 87af913b66
Refs: https://github.com/microsoft/terminal/issues/4954
2025-02-21 23:34:53 +01:00
Ben Noordhuis
85b526f56a
unix,win: accept NAN/INFINITY as file timestamps (#4702)
Extend uv_fs_utime, uv_fs_futime and uv_fs_lutime to accept NAN and
INFINITY, with NAN meaning "don't touch the timestamp" and INFINITY
meaning "set to the current timestamp."

Ugly, but it avoids having to add uv_fs_utime2, etc.

UV_FS_UTIME_NOW and UV_FS_UTIME_OMIT constants have been added to make
it more palatable.

Fixes: https://github.com/libuv/libuv/issues/4665
2025-02-21 23:08:15 +01:00
Paolo Insogna
8a94b7b2ec
unix: enable getrusage for SunOS (#4707)
Fixes: https://github.com/libuv/libuv/issues/4706
2025-02-21 22:02:18 +01:00
rainlow
b807450e98
unix: add thread affinity support on openharmony (#4705) 2025-02-21 22:01:16 +01:00