Repository navigation
linux,darwin: make uv_fs_copyfile behaves like cp -r - #4396
Merged
Merged
Conversation
juanarbol
force-pushed
the
juan/fix-cp-file
branch
3 times, most recently
from
April 26, 2024 22:58
4770b18 to
2ca7cfc
Compare
saghul
reviewed
May 6, 2024
cjihrig
reviewed
May 6, 2024
juanarbol
force-pushed
the
juan/fix-cp-file
branch
from
May 6, 2024 15:57
2ca7cfc to
a5c5097
Compare
santigimeno
requested changes
May 6, 2024
juanarbol
force-pushed
the
juan/fix-cp-file
branch
from
May 6, 2024 17:19
a5c5097 to
b1db4a1
Compare
This commit changes the timestamps in the file, the ownership and the group. Fixes: libuv#3125 Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
juanarbol
force-pushed
the
juan/fix-cp-file
branch
from
May 6, 2024 17:45
b1db4a1 to
0f1e23c
Compare
saghul
approved these changes
May 6, 2024
santigimeno
approved these changes
May 7, 2024
cjihrig
approved these changes
May 8, 2024
skooch
added a commit
to skooch/libuv
that referenced
this pull request
Mar 11, 2026
futimens() on CIFS/SMB shares may fail with EPERM because these filesystems do not support setting arbitrary timestamps. Since preserving timestamps during copyfile is best-effort, detect the CIFS/SMB condition using uv__is_cifs_or_smb() and squelch the error, matching the existing handling for fchmod() in the same function. Without this fix, uv_fs_copyfile() fails with EPERM when copying files to CIFS/SMB mounts on Linux (e.g. Alpine containers with mounted cifs shares). Fixes: nodejs/node#56248 Refs: libuv#4396
skooch
added a commit
to skooch/libuv
that referenced
this pull request
Mar 11, 2026
futimens() on CIFS/SMB shares may fail with EPERM because these filesystems do not support setting arbitrary timestamps. Since preserving timestamps during copyfile is best-effort, detect the CIFS/SMB condition using uv__is_cifs_or_smb() and squelch the error, matching the existing handling for fchmod() in the same function. Without this fix, uv_fs_copyfile() fails with EPERM when copying files to CIFS/SMB mounts on Linux (e.g. Alpine containers with mounted cifs shares). Fixes: nodejs/node#56248 Refs: libuv#4396
saghul
pushed a commit
to skooch/libuv
that referenced
this pull request
Mar 12, 2026
futimens() on CIFS/SMB shares may fail with EPERM because these filesystems do not support setting arbitrary timestamps. Since preserving timestamps during copyfile is best-effort, detect the CIFS/SMB condition using uv__is_cifs_or_smb() and squelch the error, matching the existing handling for fchmod() in the same function. Without this fix, uv_fs_copyfile() fails with EPERM when copying files to CIFS/SMB mounts on Linux (e.g. Alpine containers with mounted cifs shares). Fixes: nodejs/node#56248 Refs: libuv#4396
skooch
added a commit
to skooch/libuv
that referenced
this pull request
Apr 15, 2026
futimens() may fail with EPERM on CIFS/SMB shares that do not support setting timestamps. Since preserving timestamps during copyfile is best-effort, ignore the return value unconditionally. Fixes: nodejs/node#56248 Refs: libuv#4396
saghul
pushed a commit
that referenced
this pull request
Apr 17, 2026
futimens() may fail with EPERM on CIFS/SMB shares that do not support setting timestamps. Since preserving timestamps during copyfile is best-effort, ignore the return value unconditionally. Fixes: nodejs/node#56248 Refs: #4396
skooch
added a commit
to skooch/node
that referenced
this pull request
Apr 21, 2026
Original commit message:
unix: treat futimens() as best-effort in copyfile
futimens() may fail with EPERM on CIFS/SMB shares that do not
support setting timestamps. Since preserving timestamps during
copyfile is best-effort, ignore the return value unconditionally.
Refs: libuv/libuv#4396
Fixes: nodejs#56248
nodejs-github-bot
pushed a commit
to nodejs/node
that referenced
this pull request
Apr 25, 2026
Original commit message:
unix: treat futimens() as best-effort in copyfile
futimens() may fail with EPERM on CIFS/SMB shares that do not
support setting timestamps. Since preserving timestamps during
copyfile is best-effort, ignore the return value unconditionally.
Refs: libuv/libuv#4396
Fixes: #56248
PR-URL: #62881
Refs: libuv/libuv#5053
Refs: libuv/libuv#4396
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
aduh95
pushed a commit
to nodejs/node
that referenced
this pull request
May 5, 2026
Original commit message:
unix: treat futimens() as best-effort in copyfile
futimens() may fail with EPERM on CIFS/SMB shares that do not
support setting timestamps. Since preserving timestamps during
copyfile is best-effort, ignore the return value unconditionally.
Refs: libuv/libuv#4396
Fixes: #56248
PR-URL: #62881
Refs: libuv/libuv#5053
Refs: libuv/libuv#4396
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
aduh95
pushed a commit
to nodejs/node
that referenced
this pull request
May 7, 2026
Original commit message:
unix: treat futimens() as best-effort in copyfile
futimens() may fail with EPERM on CIFS/SMB shares that do not
support setting timestamps. Since preserving timestamps during
copyfile is best-effort, ignore the return value unconditionally.
Refs: libuv/libuv#4396
Fixes: #56248
PR-URL: #62881
Refs: libuv/libuv#5053
Refs: libuv/libuv#4396
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
ryaaaaaan96
added a commit
to Aclass-third-party/libuv
that referenced
this pull request
Jun 9, 2026
commit 076df9f50d74e169d0ed986974d2a4a00f96bc10
Author: Jameson Nash <vtjnash@gmail.com>
Date: Mon Jun 8 09:24:51 2026 -0400
Reland "linux: eliminate a read on eventfd per wakeup" (#4589)
Register the eventfd with EPOLLET to enable edge-triggered notification
where we're able to eliminate the overhead of reading the eventfd via
system call on each wakeup event.
When the eventfd counter reaches the maximum value of the unsigned
64-bit, which may not happen for the entire lifetime of the process, we
rewind the counter and retry.
This optimization saves one system call on each event-loop wakeup,
eliminating the overhead of `read(2)` as well as the extra latency for
each epoll wakeup.
Relands #4400
Co-authored-by: Andy Pan <i@andypan.me>
commit cdc632c68feb3961f84ea109295db38dfa082347
Author: Jameson Nash <vtjnash@gmail.com>
Date: Wed Jun 3 10:09:55 2026 -0400
async: make seq_cst the default (#5149)
The fast relaxed read makes this function very difficult and slow to use
correctly, since it means many callers are required to have a fence
instruction instead. Making this always a seq_cst barrier on the pending
field should eliminate an unexpected source of concurrency bugs.
commit 28a057fe71a33b9b44d6bd4ac61348133ae1f1cb
Author: Jameson Nash <vtjnash@gmail.com>
Date: Wed Jun 3 10:06:43 2026 -0400
test: check that sizeof is constant (#5139)
Create a manual database for CI to make sure that folks cannot
accidentally change a struct size on a supported platform. Use
`./uv_run_tests sizeof sizeof` to regenerate the list.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
commit 4522bfb99aaf1df65d9f346479d45fe89699c08d
Author: Jameson Nash <vtjnash@gmail.com>
Date: Wed Jun 3 10:05:55 2026 -0400
process,unix: avoid off-by-one in uv__spawn_resolve_and_spawn (#5150)
With a environment larger than PATH_MAX, AI thinks the loop here could
theoretically write a null byte after `b` when spawning a path of size
NAME_MAX. Re-write this size-check to be a bit less confusing. The
original musl code used a VLA of size `min(PATH_MAX, strlen(p)) + 1`.
commit c4769c1f6bb544aa4a9c91eadde917f8212e6cd2
Author: Jameson Nash <vtjnash@gmail.com>
Date: Wed Jun 3 10:05:37 2026 -0400
unix,fs: fix busyloop in big copyfile (#5151)
After the fix to limit the max size of uv_fs_sendfile, this code became
incorrect and would busy-loop. It was previously trying to work around
the fact that the return value of uv_fs_sendfile was undefined when the
input argument SSIZE_MAX > INT32_MAX, but that meant it had to ignore
errors. Using the more correct UV__IO_MAX_BYTES value also avoids any UB
with checking the result of uv_fs_sendfile.
commit ea493f19895bc0cc90b28b48a4e204bc139c48d3
Author: Jameson Nash <vtjnash@gmail.com>
Date: Fri May 29 16:00:21 2026 -0400
win: fix race condition in uv_async_send (#5079)
See #2231 (37042a5bca8b392f71d7da6e01457ece5a148e99)
commit c96cdf0b080050e056e2234bd8ba6637e99ec04e
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Tue May 26 19:34:40 2026 +0200
test: skip recvmsg unreachable test when no ipv6 (#5144)
Guard `udp_recvmsg_unreachable_error6` in case ipv6 is not supported.
Fixes: https://github.com/libuv/libuv/issues/5143
commit 2879da6b3758ff1fc1a846ff3dd8b7a0212eda07
Author: Jérémy Lal <kapouer@melix.org>
Date: Tue May 26 13:19:12 2026 +0200
test: include pty.h for GNU Hurd
commit 6179e7af87413396d5853a1c3722c8b5749336c8
Author: orbisai0security <mediratta01.pally@gmail.com>
Date: Fri May 15 20:09:05 2026 +0530
src: use INET6_ADDRSTRLEN for IPv6 address buffer (#5135)
Replace the hard-coded IPv6 address buffer size in `uv_ip6_addr()` with
`INET6_ADDRSTRLEN` to avoid truncation.
`INET6_ADDRSTRLEN` is the standard constant for the maximum length of
an IPv6 address string representation. Using it makes the intent of the
buffer clearer and avoids relying on a magic number.
This is **not** a security fix. The existing code already bounds
`address_part_size` before calling `memcpy()`, so the previous
implementation did not expose a buffer overflow.
commit 5098fa2a3b853c3be59afe48f38b5a1d7f6bf038
Author: Edy Silva <edigleyssonsilva@gmail.com>
Date: Thu May 14 16:44:28 2026 -0300
unix: remove UV_HANDLE_READING flag (#5048)
Replace `UV_HANDLE_READING` flag checks with `stream->read_cb != NULL`
on the Unix side, removing redundant state management.
Refs: https://github.com/libuv/libuv/issues/4995
commit 3d09fed7b3c7568391ba5d472da55e3662882c14
Author: Juan José <soyjuanarbol@gmail.com>
Date: Thu May 14 14:39:46 2026 -0500
unix: handle cloexec failure in kqueue init (#5102)
Refactor uv__kqueue_init to use a temporary fd variable and properly
handle errors from uv__cloexec. If setting CLOEXEC fails, close the
kqueue fd and return the error instead of leaking the descriptor.
Fixes: https://github.com/libuv/libuv/issues/5081
commit e8575ba73e42d4a4e36d4a2a81b12ba0559775b3
Author: sturcotte06 <sturcotte06@gmail.com>
Date: Thu May 14 15:36:35 2026 -0400
win: fix spawn process with no argument (#5109)
Fixes one of the regressions listed in #2076
Co-authored-by: sturcottelangevin <sturcottelangevin@bhvr.com>
commit 2e131237e44882edb8672c1106d75719bed288c6
Author: Isaac Elbaz <script3r@gmail.com>
Date: Thu May 14 15:06:17 2026 -0400
unix: avoid duplicate recvmmsg terminal callback (#5133)
Stop `uv__udp_recvmmsg()` from emitting its own callback when
`recvmmsg()` returns `<= 0`, since this duplicates the handing in
`uv__udp_recvmsg()` which emits the same callback again.
Add a regression test that keeps the socket open past
`UV_UDP_MMSG_FREE` and fails on a second terminal callback.
Co-authored-by: Isaac Elbaz <587490+script3r@users.noreply.github.com>
commit 9f5306fa36b2f39aed6470189269cba5e4c9ab42
Author: Jameson Nash <vtjnash@gmail.com>
Date: Wed May 13 09:05:14 2026 -0400
win: use PROC_THREAD_ATTRIBUTE_HANDLE_LIST in uv_spawn (#5100)
Use STARTUPINFOEXW with PROC_THREAD_ATTRIBUTE_HANDLE_LIST so that only
the stdio handles prepared for each child process are inherited by it.
This closes the race condition where two concurrent uv_spawn calls
could cause handles intended for one child to leak into another child process.
Fixes: https://github.com/libuv/libuv/issues/1490
Closes: https://github.com/libuv/libuv/pull/3856
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
commit cafbb1ac1cb9820734f3d9f176cb1e3918951b4a
Author: theanarkh <theratliter@gmail.com>
Date: Mon May 4 00:41:24 2026 +0800
unix: fix uv__udp_recvmsg crash (#5131)
Co-authored-by: chenyuebiao <chenyuebiao@bytedance.com>
commit 79b923ea3385af80c6e252632fe688e604b953c4
Author: SRAVANI GUNDEPALLI <88590399+sravani1510@users.noreply.github.com>
Date: Tue Apr 28 19:55:36 2026 +0530
aix,ibmi: fix undeclared identifiers (#5123)
Fix undeclared identifiers and use fork instead of posix_spawn on AIX/PASE.
Co-authored-by: Korinne Adler <kadler@us.ibm.com>
commit c2a44883dd25bfd8ee59ad19b10325405b0b32c2
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Mon Apr 27 00:51:35 2026 +0200
unix: free statxbuf on iouring statx fallback (#5132)
commit 439a54beb2e4a7a056d70550262308ba10fbee56
Author: skooch <github@skooch.ws>
Date: Wed Mar 11 14:44:36 2026 +1100
unix: treat futimens() as best-effort in copyfile
futimens() may fail with EPERM on CIFS/SMB shares that do not
support setting timestamps. Since preserving timestamps during
copyfile is best-effort, ignore the return value unconditionally.
Fixes: https://github.com/nodejs/node/issues/56248
Refs: https://github.com/libuv/libuv/pull/4396
commit 1c1dadaf28d78690cfc08afc47202a4742b4e1f4
Author: Juan José Arboleda <soyjuanarbol@gmail.com>
Date: Sat Mar 28 16:05:00 2026 -0500
unix,stream: fix getsockopt error handling in connect
Fixes: https://github.com/libuv/libuv/issues/5086
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
commit 40178b916e5937ed43c557aa051bdb3f86f6ca93
Author: Juan José Arboleda <soyjuanarbol@gmail.com>
Date: Fri Mar 27 17:47:24 2026 -0500
unix,ibmi: abort on process_title_mutex init failure
Fixes: https://github.com/libuv/libuv/issues/5083
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
commit d185607a829e0cb6f31c78c528ebd650b43b33f9
Author: ivinx <devizi0@donghyun.cc>
Date: Mon Mar 30 09:55:41 2026 +0900
stream: fix server stop accepting after uv_accept() error
When uv__stream_open() fails inside uv_accept(), the accepted fd is
closed but POLLIN is never re-enabled on the server's IO watcher.
The condition `if (err == 0)` prevents uv__io_start() from being
called on the error path, causing the server to permanently stop
accepting new connections.
Fix by removing the err == 0 guard so POLLIN is re-enabled
unconditionally when no queued fds are present.
commit 428f2c44c761fe57118db00969fd8293b4183a77
Author: Ryan Liptak <squeek502@hotmail.com>
Date: Mon Apr 13 02:17:59 2026 -0700
misc: fix error code returned from uv_wtf8_length_as_utf16
commit aabb7651de73ec2f1a74361ca3430eed1a62e402
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Thu Apr 2 11:44:25 2026 +0200
win: properly initialize OSVERSIONINFOW (#5107)
Otherwise calling `RtlGetVersion()` might produce UB. Problem was
causing random crashes in the node.js test suite with stack traces like
this one:
```
node.exe!__report_gsfailure(unsigned __int64 stack_cookie) Line 220
at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\gs\gs_report.c(220)
node.exe!uv__tcp_keepalive(uv_tcp_s * socket, unsigned __int64 on, int idle, unsigned int intvl, unsigned int cnt, unsigned int) Line 109
at E:\node\deps\uv\src\win\tcp.c(109)
[Inline Frame] node.exe!uv_tcp_keepalive_ex(uv_tcp_s * handle, int on, unsigned int idle, unsigned int intvl, unsigned int cnt) Line 1406
at E:\node\deps\uv\src\win\tcp.c(1406)
node.exe!uv_tcp_keepalive(uv_tcp_s * handle, int on, unsigned int idle) Line 1395
at E:\node\deps\uv\src\win\tcp.c(1395)
node.exe!node::TCPWrap::SetKeepAlive(const v8::FunctionCallbackInfo<v8::Value> & args) Line 213
at E:\node\src\tcp_wrap.cc(213)
[External Code]
node.exe!v8::internal::`anonymous namespace'::Invoke(v8::internal::Isolate * isolate, const v8::internal::`anonymous namespace'::InvokeParams & params) Line 463
at E:\node\deps\v8\src\execution\execution.cc(463)
node.exe!v8::internal::Execution::Call(v8::internal::Isolate * isolate, v8::internal::DirectHandle<v8::internal::Object> callable, v8::internal::DirectHandle<v8::internal::Object> receiver, v8::base::Vector<const v8::internal::DirectHandle<v8::internal::Object>> args) Line 532
at E:\node\deps\v8\src\execution\execution.cc(532)
node.exe!v8::Function::Call(v8::Isolate * isolate, v8::Local<v8::Context> context, v8::Local<v8::Value> recv, int argc, v8::Local<v8::Value> * argv) Line 5374
at E:\node\deps\v8\src\api\api.cc(5374)
node.exe!v8::Function::Call(v8::Local<v8::Context> context, v8::Local<v8::Value> recv, int argc, v8::Local<v8::Value> * argv) Line 5381
at E:\node\deps\v8\src\api\api.cc(5381)
node.exe!node::InternalMakeCallback(node::Environment * env, v8::Local<v8::Object> resource, v8::Local<v8::Object> recv, const v8::Local<v8::Function> callback, int argc, v8::Local<v8::Value> * argv, node::async_context asyncContext, v8::Local<v8::Value> context_frame) Line 257
at E:\node\src\api\callback.cc(257)
node.exe!node::AsyncWrap::MakeCallback(const v8::Local<v8::Function> cb, int argc, v8::Local<v8::Value> * argv) Line 695
at E:\node\src\async_wrap.cc(695)
[Inline Frame] node.exe!node::AsyncWrap::MakeCallback(const v8::Local<v8::Name> symbol, int argc, v8::Local<v8::Value> * argv) Line 101
at E:\node\src\async_wrap-inl.h(101)
[Inline Frame] node.exe!node::AsyncWrap::MakeCallback(const v8::Local<v8::String> symbol, int argc, v8::Local<v8::Value> * argv) Line 78
at E:\node\src\async_wrap-inl.h(78)
node.exe!node::ConnectionWrap<node::TCPWrap,uv_tcp_s>::OnConnection(uv_stream_s * handle, int status) Line 73
at E:\node\src\connection_wrap.cc(73)
node.exe!uv__process_tcp_accept_req(uv_loop_s * loop, uv_tcp_s * handle, uv_req_s * raw_req) Line 1245
at E:\node\deps\uv\src\win\tcp.c(1245)
node.exe!uv__process_reqs(uv_loop_s * loop) Line 622
at E:\node\deps\uv\src\win\core.c(622)
node.exe!uv_run(uv_loop_s * loop, <unnamed-tag> mode) Line 736
at E:\node\deps\uv\src\win\core.c(736)
node.exe!node::SpinEventLoopInternal(node::Environment * env) Line 43
at E:\node\src\api\embed_helpers.cc(43)
[Inline Frame] node.exe!node::NodeMainInstance::Run(node::ExitCode * exit_code, node::Environment * env) Line 109
at E:\node\src\node_main_instance.cc(109)
node.exe!node::NodeMainInstance::Run() Line 99
at E:\node\src\node_main_instance.cc(99)
[Inline Frame] node.exe!node::StartInternal(int argc, char * * argv) Line 1576
at E:\node\src\node.cc(1576)
node.exe!node::Start(int argc, char * * argv) Line 1583
at E:\node\src\node.cc(1583)
node.exe!wmain(int argc, wchar_t * * wargv) Line 91
at E:\node\src\node_main.cc(91)
```
Fixes: https://github.com/libuv/libuv/issues/5106
commit 44125af62afa285af6fe581dfa2daa3ca85a7983
Author: Stefan Stojanovic <StefanStojanovic@users.noreply.github.com>
Date: Tue Mar 31 04:09:25 2026 +0200
win: fix watch loop logic (#5013)
Refs: https://github.com/nodejs/node/issues/61398
commit 84816e064a91bbcc25763a2b48d6f8e8a7863823
Author: Jameson Nash <vtjnash@gmail.com>
Date: Sun Mar 29 09:14:04 2026 -0400
misc: revise security vulnerability reporting instructions
The project has been getting a flood of private vulnerability reports, most of which are invalid, and a few of which should have just been normal bugs. This has essentially been a DoS attack on maintainer time, since we're unable to change them into normal bugs after assessment. We now have a libuv-security@googlegroups.com list instead to help redirect those seeking CVE fame. The hope is to redirect most people to actually use the issue list as it has always been intended to be used.
commit 901e28384b6bf81fcfc1eccdf006d3978430ad7d
Author: Saúl Ibarra Corretgé <s@saghul.net>
Date: Thu Mar 26 01:29:59 2026 +0100
test: use correct type for uv_fileno arguments (#4673)
Fixes a -Wincompatible-pointer-types error on Windows, since uv_os_fd_t
is not int but HANDLE.
commit 40d45efebf9bf1a8091a573d26e53d9c4262ef5b
Author: Jameson Nash <vtjnash@gmail.com>
Date: Wed Mar 25 20:21:11 2026 -0400
unix: use posix_spawn instead of fork (#3520)
Remove the conditionals so that posix_spawn will be used whenever
possible, and not only on Apple.
Tests specifically if posix_spawn works before using it: it is broken
on QEMU with glibc, for example, since fork/clone is broken there.
commit d19855c702e173811f913b3e0b6d6b9a28c84abf
Author: Jameson Nash <vtjnash@gmail.com>
Date: Wed Mar 25 20:17:11 2026 -0400
win: use WSA_FLAG_NO_HANDLE_INHERIT in all WSASocketW (#5097)
Like #4810, but for all socket calls.
commit 046aebe79b76cf05a4aab00df6faad21a8f7f346
Author: Jameson Nash <vtjnash@gmail.com>
Date: Tue Mar 24 10:45:00 2026 -0400
win,pipe: skip IOCP for pipe handles (#5071)
Copy the optimization from tcp/udp stack: when read/writes don't require
IOCP to complete, put them directly right into the pending queue, so
they can be processed without a full loop through IOCP each time to
drain them asynchronously.
commit fa0ac9ec0cb262ed13082ce30d6b9b88fa339119
Author: Jameson Nash <vtjnash@gmail.com>
Date: Tue Mar 24 10:32:27 2026 -0400
io: make libuv 64-bit safe (#5076)
Because libuv truncates the result of every call to INT32_MAX, it needs
to internally limit operations to INT32_MAX to be safe to use libuv.
This isn't an API change, since these operations weren't guaranteed to
work, and in fact usually failed in bizare ways already. This is very
long in coming, since we've had a lot of compiler warnings about this
and several PRs to fix this open for a decade, but the main consumers
that usually fix things didn't care (nodejs is 32-bit and julia patched
this downstream more than a decade ago, though it did run into this
again recently by mistake with sendfile).
Replaces #1501
Fixes #3360
commit e3a27e07287f910b955e2778189413da02172c4b
Author: BarryLhm <BarryLhm@outlook.com>
Date: Tue Mar 24 16:59:50 2026 +0800
android: fix termux build (#5093)
Fixes: https://github.com/libuv/libuv/issues/5092
commit 8877568581d170b70849481cae3eb5ed36fb6a7d
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Mon Mar 23 21:25:33 2026 +0100
unix: enforce recvmmsg buffer size requirements (#5095)
The documentation already stated that the receive buffer should be
a multiple of 64 KiB when the UV_UDP_RECVMMSG is used, but make that
more prominent in the documentation and enforce it in the code.
Refs: https://github.com/libuv/libuv/security/advisories/GHSA-r846-fxvr-f3rx
commit 9f0101dcb81b9155e24c18c9dc91a47b3f11c62f
Author: Jameson Nash <vtjnash@gmail.com>
Date: Sat Mar 21 15:10:05 2026 -0400
linux: close streams without an extra read (#3250)
commit 14f6c4cc1f4166f6359b8cd6124501970a6fc2f2
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Sat Mar 21 13:18:43 2026 +0100
test: fix -Wunused-function warning (#5090)
The function is only used on BSDs. Introduced in commit 919b92d9 ("unix:
support long path names in pipe.c") from a few days ago.
commit 1f56978a2822fe228f17d4f9a2f4ba4ed628686f
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Sat Mar 21 13:18:13 2026 +0100
unix: check return value of fcntl call (#5089)
The fcntl cannot fail at this point but let's check the return code
anyway, just in case.
Fixes: https://github.com/libuv/libuv/issues/5080
commit 58418d5310f60194b634e25711a927b25e89b4ba
Author: Jameson Nash <vtjnash@gmail.com>
Date: Thu Mar 19 15:28:02 2026 -0400
process: better validation for process->pid usage (#3539)
Previously, the user might unknowingly close a uv_process_t before
doing waitpid on the zombie, leaving it forever undead. Track the state
of the child, so that the application wrapper can avoid this by calling
uv_process_kill and checking for UV_ESRCH error.
commit 1899789be8329094c0bb160459e1813047600a2c
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Mar 18 22:53:00 2026 +0100
doc: remove random reference to libev (#5075)
The document doesn't reference libev anywhere else so it's rather
incongruous to mention it here.
Also add a comma to make the sentence flow better.
commit ea4667b68e061624c9f0ad4bfffb6a57b5bd3e9a
Author: Jameson Nash <vtjnash@gmail.com>
Date: Wed Mar 18 15:07:44 2026 -0400
docs: fix broken and redirected links (#5074)
- Replace dead developer.ibm.com AIX article with current IBM Docs URL
- Update IBM Knowledge Centre z/OS URL to new ibm.com/docs location
- Update docs.microsoft.com links to learn.microsoft.com
- Update curl.haxx.se links to curl.se
- Update c-ares.haxx.se to c-ares.org
- Update tools.ietf.org RFC link to datatracker.ietf.org
- Update www.tldp.org links to tldp.org (drop www)
- Update www.nodejs.org and www.rust-lang.org (drop www)
- Upgrade http://docs.libuv.org links to https
- Replace dead kkaefer.com link with GitHub Pages + YouTube video
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
commit fa38eb43df15562492c03cfa54122f2430b275f0
Author: Benjamin Gilbert <bgilbert@backtick.net>
Date: Mon Mar 16 21:19:14 2026 -0700
win: fix some compiler warnings (#5070)
* win: initialize INIT_ONCE field with dedicated initializer
Fixes: abc9767034d7 ("win: simplify uv_once implementation")
* win: indendation fixes
* win: squash some compiler warnings
commit 919b92d9444afb04e011a321d9dfaf810e2f230f
Author: Edy Silva <edigleyssonsilva@gmail.com>
Date: Tue Mar 17 00:14:47 2026 -0300
unix: support long path names in pipe.c (#5047)
Continues: #4676
Fixes: #2826
commit 048acb509c267833bc61f869f06809e07cfb49cb
Author: PRANAV KUMAR <bandarampranav@gmail.com>
Date: Tue Mar 17 08:06:18 2026 +0530
doc: fix threading bugs in progress example (#4956)
Fixed race conditions and memory safety issues in the progress example
by using C11 atomic operations for proper thread synchronization.
Changes:
- Changed percentage from double to _Atomic double
- Use atomic_store_explicit() with memory_order_release when writing
- Use atomic_load_explicit() with memory_order_acquire when reading
- Removed unsafe pointer passing via async.data
This ensures proper memory synchronization between the worker thread
and async callback, preventing data races and dangling pointer issues.
Fixes #4386
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
commit a1f10d92890e3367f6f5147df336375a820bbbef
Author: HArsil <harsil.singh@adypu.edu.in>
Date: Tue Mar 17 08:04:59 2026 +0530
docs: add copybutton sphinx extension (#4958)
commit 6f096c9d03cdaee08b428cbfd69b221a0ce9b846
Author: Juan José <soyjuanarbol@gmail.com>
Date: Mon Mar 16 21:23:06 2026 -0500
darwin: replace EV_OOBAND handling with EVFILT_EXCEPT + NOTE_OOB (#4906)
Fixes: https://github.com/libuv/libuv/issues/3947
Re-lands: https://github.com/libuv/libuv/pull/4597
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
commit f600f7180aa2bcf92a564b4c88216c10ef7fd092
Author: Stacey Marshall <stacey.marshall@gmail.com>
Date: Tue Mar 17 01:53:03 2026 +0000
doc: Add textual images into libuv man page (#4709)
Replaces `[image]` tags in libuv manual page with a textual
representation of the graphical image.
In addition added alternative-text for graphical deliverables.
Fixes: https://github.com/libuv/libuv/issues/4708
commit f4363aeb44e06a2d01608ad4053de1c8f7d6a51c
Author: Juan José <soyjuanarbol@gmail.com>
Date: Mon Mar 16 20:51:03 2026 -0500
test: remove unused headers and use newer ASSERT macros (#4760)
commit fe89c7df3961e72cf7f65d7ba207c987c15d1ab3
Author: Juan José <soyjuanarbol@gmail.com>
Date: Mon Mar 16 20:49:26 2026 -0500
inet: prefer sizeof with parenthesis (#4789)
This is not precisely a strict rule, but this syntax is reinforced in many
large C projects like the Linux kernel and cURL.
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
commit b84a067e0f004e960dc743813ed3e41987149df4
Author: Gabriel Baraldi <baraldigabriel@gmail.com>
Date: Mon Mar 16 22:48:50 2026 -0300
unix,tty: don't drain when setting the TTY mode (#4945)
This avoids a blocking syscall (essentially a write)–and thus potential
deadlock–in the asynchronous IO path.
commit 651f2fc1617331bc4cc6335dcacbbffe79d1fa60
Author: Jameson Nash <vtjnash@gmail.com>
Date: Mon Mar 16 13:04:26 2026 -0400
test,win: fix race in test runner (#5066)
Port 143da93e to Windows: replace the 250 ms settle delay with a pipe-
based synchronization mechanism. The parent creates a pipe, passes the
write-end handle to the helper via UV_TEST_RUNNER_FD, then blocks on
ReadFile() until the helper calls notify_parent_process() and closes its
copy of the handle.
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
commit 40c800e5fcd032ada1c5b0ac22edaa250edf96ca
Author: cui <cuiweixie@gmail.com>
Date: Sun Mar 15 22:13:52 2026 +0800
unix,stream: verify uv_try_write2 handle (#5035)
Looks like this was simply missed in #3183 because it was a bit outside
the review context window.
commit 10902ab616058198067d6c2cc414014d36f86fff
Author: Jameson Nash <vtjnash@gmail.com>
Date: Sun Mar 15 10:00:48 2026 -0400
unix: improve handling of uv_async_send mistakes (#5058)
When the user calls uv_async_send concurrently with uv_loop_close, we
try to prevent that data race from actually accessing undefined behavior
by setting the pending flag atomically with the busy flag. This was
proposed in the original PR, but we didn't have motivation to go with
this implementation until a user pointed out that it improves behavior
of the race window in more cases.
commit 88d6d362f649a33e88f7f7d47155acc36aed213f
Author: Oren <orenyomtov@users.noreply.github.com>
Date: Sat Mar 14 13:05:35 2026 +0200
udp: validate nbufs in send functions
commit ec0ab5d77d32d836a60b024fa43d54ed3ce3ce87
Author: locus-x64 <elirazamumtaz@gmail.com>
Date: Fri Mar 13 15:59:12 2026 +0500
win: fix off-by-one in utf-16 to wtf-8 conversion (#5050)
Reserve one byte for the NUL terminator when passing the buffer size
to uv_utf16_to_wtf8() in the TTY line-read path. Without this, when
all input characters encode to exactly 3 UTF-8 bytes (e.g. CJK) and
the buffer size is divisible by 3, the NUL terminator is written one
byte past the allocated buffer.
The other two call sites in src/win/util.c already subtract 1 before
calling uv_utf16_to_wtf8(). This aligns tty.c with that convention.
Fixes commit f3889085 ("win,tty: convert line-read UTF-16 to WTF-8")
from October 2023.
Refs: https://github.com/libuv/libuv/security/advisories/GHSA-4prr-4742-3ccf
commit d2a45ce364ed97e916be3bcecfd756f15d852473
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Mar 11 22:43:35 2026 +0100
win: fix const correctness warning (#5057)
And fix it by calling uv_free_cpu_info so we don't repeat repeat
ourselves.
commit 52891c825518f47042ae8ffb82e10817d978712b
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Mar 11 22:43:22 2026 +0100
doc: name function crosslinks consistently (#5056)
The documentation overwhelmingly uses :c:func:`foo`. Rewrite the few
places that write it as c:func:`foo()` without the parentheses.
commit d357575b2b17472080bb318c6c987b90c832eba6
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Mar 11 22:43:01 2026 +0100
doc: clarify handle close behavior of uv_spawn (#5055)
Contrary to how most handle init functions work, callers of uv_spawn
must always call uv_close, even if it returned an error.
commit 6cdf71da80873c7071c3edb3a5fae78feda35da8
Author: apocelipes <seve3r@outlook.com>
Date: Thu Mar 12 04:14:59 2026 +0800
win: fix const correctness compiler error (#5049)
commit a43e543dbffba93f014fe8360a5edbe8d6ce8500
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Mar 11 19:46:54 2026 +0100
unix: fix pedantic compiler warnings (#5052)
Fixes: https://github.com/libuv/libuv/issues/5051
commit a19ceeb13a3689cfd20bf96b283136cff08a0dc6
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Fri Mar 6 21:33:24 2026 +0100
Now working on version 1.52.2
commit a36131ddfbc33148d69a87466db5b45db95e44ac
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Fri Mar 6 21:29:20 2026 +0100
Add SHA to ChangeLog
commit 1cfa32ff59c076ffb6ed735bbc8c18361558661f
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Fri Mar 6 21:29:19 2026 +0100
2026.03.06, Version 1.52.1 (Stable)
Changes since version 1.52.0:
* misc: add simple clang-tidy setup (Jameson Nash)
* unix: check RLIMIT_AS and RLIMIT_DATA in uv_get_constrained_memory
(Jameson Nash)
* win: add fs-fd-hash-inl.h to tarball (tobil4sk)
* unix,win: support NULL loop for sync uv_getaddrinfo (Saúl Ibarra
Corretgé)
* Fix const-correctness warning in linux.c (Quaylyn Rimer)
* build(deps): bump actions/upload-artifact from 6 to 7
(dependabot[bot])
* build(deps): bump actions/download-artifact from 7 to 8
(dependabot[bot])
* unix: fix compilation warnings with GCC 15 (Saúl Ibarra Corretgé)
* test: remove conditionals from `uv_thread_self` usage (Yasser
Nascimento)
* unix: fix discard const (Rudi Heitbaum)
* unix: do not cast to char variables that are const char (Rudi
Heitbaum)
* linux: fix crash if poll callback closes handle before `POLLERR` (Juan
José Arboleda)
commit b030b02a3e51acd09e260bf20e115e841c3842d0
Author: Juan José <soyjuanarbol@gmail.com>
Date: Fri Mar 6 15:00:09 2026 -0500
linux: fix crash if poll callback closes handle before `POLLERR` (#5039)
Previously, `uv__udp_io` would proceed to call `uv__udp_recvmsg` for
the `POLLERR` event even if the handle was just closed by the `POLLIN`
callback.
This commit adds a guard to verify the handle is still active before
processing the error queue. It also adds a regression test that
mimics this recursive closure behavior.
Fixes: https://github.com/libuv/libuv/issues/5030
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
commit e62ccbf7707f62b8056a963b6bd01507fbf02817
Author: Rudi Heitbaum <rudi@heitbaum.com>
Date: Thu Mar 5 03:05:22 2026 +0000
unix: do not cast to char variables that are const char
Fix the casting of const char varaibles with const char returns from
functions, when the data being returned is not being modified. Includes
the part revert of "unix: fix compilation warnings with GCC 15"
This reverts commit 50ed2fd7bdd42830ff7327773f62540899b0e9a3.
commit 5243d19134b9deed182ff3af9590469d08f43ae2
Author: Rudi Heitbaum <rudi@heitbaum.com>
Date: Thu Mar 5 03:02:24 2026 +0000
unix: fix discard const
Do not cast const char to char unnecessarily. Refactor function to use
char s only when slash is in the path.
Fixes:
[6/73] Building C object CMakeFiles/uv.dir/src/inet.c.o
../src/inet.c: In function 'uv_inet_pton':
../src/inet.c:157:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
157 | p = strchr(src, '%');
| ^
Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
commit 568470a2efd6a4bc73a2709ebfaa401c0e1882d6
Author: Yasser Nascimento <dev@yasser.email>
Date: Wed Mar 4 17:46:31 2026 -0300
test: remove conditionals from `uv_thread_self` usage
The Windows limitation was fixed in: https://github.com/libuv/libuv/pull/3357.
commit 50ed2fd7bdd42830ff7327773f62540899b0e9a3
Author: Saúl Ibarra Corretgé <s@saghul.net>
Date: Mon Mar 2 09:21:01 2026 +0100
unix: fix compilation warnings with GCC 15
~~~
libuv/src/unix/internal.h: In function ‘uv__basename_r’:
libuv/src/unix/internal.h:480:12: warning: return discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
480 | return s + 1;
libuv/src/unix/linux.c: In function ‘uv__cgroup1_find_cpu_controller’:
libuv/src/unix/linux.c:2377:22: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
2377 | char* cgroup_cpu = strstr(cgroup, ":cpu,");
| ^~~~~~
libuv/src/unix/linux.c: In function ‘uv_cpu_info’:
libuv/src/unix/linux.c:1903:20: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
1903 | .model = p + c->model * sizeof(*model),
| ^
~~~
commit f44e6be04d2f2d7d7dc3fd7a7509325847d08c00
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon Mar 2 06:34:07 2026 +0000
build(deps): bump actions/download-artifact from 7 to 8
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: '8'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
commit 651e05e43cc743fb332d15b4fec447fce82624a8
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon Mar 2 06:34:13 2026 +0000
build(deps): bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
commit 12d0dd48e3c6baf1e2f0d9f85f11f0ef58285d6f
Author: Quaylyn Rimer <31830590+killerdevildog@users.noreply.github.com>
Date: Fri Feb 20 18:20:14 2026 -0700
Fix const-correctness warning in linux.c (#4843)
Fix #4814 by adding const annotation when assigning string literal
"unknown" to `char*` pointer.
This eliminates compiler warnings when building with strict
const-correctness flags like `-Wwrite-strings`.
commit edfc95dbd707becd2e49cda69184030be2f46164
Author: Saúl Ibarra Corretgé <s@saghul.net>
Date: Tue Feb 17 13:57:40 2026 +0100
unix,win: support NULL loop for sync uv_getaddrinfo
Brings symmetry with the uv_fs_xxx APIs.
commit 7e381d0da29b83977e2659b8ea47ee22282250e1
Author: tobil4sk <tobil4sk@outlook.com>
Date: Mon Feb 16 22:07:13 2026 +0000
win: add fs-fd-hash-inl.h to tarball (#5031)
commit 1eacb1386f67445404da66b68ab34a602af7a00f
Author: Jameson Nash <vtjnash@gmail.com>
Date: Fri Feb 13 20:54:29 2026 -0500
unix: check RLIMIT_AS and RLIMIT_DATA in uv_get_constrained_memory (#4899)
Add uv__get_rlimit_max_memory() helper that checks RLIMIT_AS and
RLIMIT_DATA resource limits across all Unix platforms. This helper
returns the minimum of these rlimits if set.
Update all Unix platform implementations of uv_get_constrained_memory()
to use this helper, ensuring consistent handling of resource limits:
- Linux: combine cgroup limits with rlimits
- z/OS: combine RLIMIT_MEMLIMIT with rlimits
- Other Unix platforms: use rlimits (previously returned 0)
This provides a more accurate view of available memory when processes
have rlimit constraints in addition to platform-specific limits.
Related: https://github.com/JuliaLang/julia/pull/51656
Co-Authored-By: Claude <noreply@anthropic.com>
commit 276f6acf27143a2843614b3a023712956a0253e2
Author: Jameson Nash <vtjnash@gmail.com>
Date: Fri Feb 13 20:52:21 2026 -0500
misc: add simple clang-tidy setup (#4874)
clang-tidy can already read the compilation database from cmake to run
on any file. This sets up some cmake targets to make it easier to run
the check on all files applicable to the current platform. It also
disables a few analyses to reduce the number of warnings to a manageable
level. Actually making any fixes is left for later.
commit 8fa343442ceeb09cbc438b495c780a8d5e31e5da
Author: cjihrig <cjihrig@gmail.com>
Date: Tue Feb 10 21:00:35 2026 -0500
Now working on version 1.52.1
Fixes: https://github.com/libuv/libuv/issues/5009
commit bcad447de592ead1f914a7d3e146335dc36b1e7c
Author: cjihrig <cjihrig@gmail.com>
Date: Tue Feb 10 20:57:18 2026 -0500
Add SHA to ChangeLog
commit b556c0629d0fd250b5feefbc91b84c6f5e3dae48
Author: cjihrig <cjihrig@gmail.com>
Date: Tue Feb 10 20:57:16 2026 -0500
2026.02.11, Version 1.52.0 (Stable)
Changes since version 1.51.0:
* src: remove unused include of <assert.h> in timer.c (Juan José
Arboleda)
* test: skip `udp_multicast_join` if not system-wide available (Juan
José Arboleda)
* test: remove unused include of <limits.h> in runner.h (Juan José
Arboleda)
* doc: don't mention UV_LOOP_ENABLE_IO_URING_SQPOLL (Poul T Lomholt)
* unix: fix uv_thread_{get,set}priority error codes (Ryan Liptak)
* build: dedup sanitizer jobs using matrix strategy (Juan José Arboleda)
* doc: update ncurses link (Saúl Ibarra Corretgé)
* tcp: support customizing TCP_KEEPINTVL and TCP_KEEPCNT (Andy Pan)
* linux: fix -Wformat-truncation warning (Ben Noordhuis)
* src: fix nullptr dereference in uv__print_handles (jhnh204)
* build: make automake link libm on bsd-likes (Juan José Arboleda)
* include: remove unused macro undefs from uv.h (Juan José Arboleda)
* win: handle empty string in uv_get_process_title (Ben Noordhuis)
* win: use WSA_FLAG_NO_HANDLE_INHERIT in WSASocketW (chemodax)
* unix: handle possible `ENOMEM` in `uv__tcp_listen` (Juan José
Arboleda)
* win: replace GetModuleHandleA with GetModuleHandleW (chemodax)
* qnx: add qnx 8 support (Deep C)
* mailmap: update email address for Richard Lau (Richard Lau)
* win: remove obsolete comment (Ben Noordhuis)
* unix: handle possible `ENOMEM` in `uv__pipe_listen` (Juan José
Arboleda)
* unix: deduplicate uv_free_interface_addresses (Juan José Arboleda)
* test: pass correct string type to GetModuleHandleW (Ben Noordhuis)
* win: remove unnecessary inlining from fs.c (Ben Noordhuis)
* win: move uv__process_reqs to core.c (Ben Noordhuis)
* win: remove unnecessary inlining from header file (Ben Noordhuis)
* test: skip slow process title test on asan+macos (Ben Noordhuis)
* win: dissolve atomicops-inl.h (Ben Noordhuis)
* win: move uv__process_endgames to core.c (Ben Noordhuis)
* win: move uv__insert_pending_req to core.c (Ben Noordhuis)
* win: replace inline asm with compiler intrinsic (Ben Noordhuis)
* win,pipe: minimal fix to uv_read_cb->uv_read_start recursion bug
(Jameson Nash)
* doc: make requirements work with newer python (Luca Saccarola)
* win: fix -Wcast-function-type warnings in winapi.c (Ben Noordhuis)
* win: fix -Wsign-compare warnings (Ben Noordhuis)
* test: simplify ASSERT_OK macro for static analysis (Jameson Nash)
* win: add arm64 machine type to uv_os_uname (wisemanny)
* win: use ProcessPrng (Ben Noordhuis)
* win: work around wine bug in uv_fs_{unlink,rmdir} (Keno Fischer)
* doc: fix return value for uv_pipe_connect2 (Sean Dewar)
* unix: fix udp sendmmsg fallback path (Ben Noordhuis)
* doc: add binding `C framework` uv_coroutine to LINKS.md (Lawrence
Stubbs)
* linux: handle cgroups cpu.max with limit < period (Ben Noordhuis)
* doc: update link, repo name change to c-asio (Lawrence Stubbs)
* build(deps): bump actions/download-artifact from 4 to 5
(dependabot[bot])
* doc: remove nodeuv from LINKS.md (Ben Noordhuis)
* test: use relative paths for pipes and unix sockets (Emily)
* build(deps): bump actions/checkout from 4 to 5 (dependabot[bot])
* unix: improve uv__cpu_relax() on arm (Anton Kirilov)
* win: fix compiler warnings (Savas Sahin)
* unix: replace uv__io_t callback pointer with enum (Ben Noordhuis)
* test,win: fix -Wunused-function warnings (Ben Noordhuis)
* test,win: fix -Wcast-function-type warnings (Ben Noordhuis)
* test,win: fix -Wattributes warnings (Ben Noordhuis)
* win: shrink fd hash table from 2592k to 162k (Ben Noordhuis)
* unix: fix build on the bsds (Ben Noordhuis)
* netbsd: fix thread affinity compilation error (Santiago Gimeno)
* unix: remove UV__SIGNAL_EVENT dispatch from uv__io_cb (Juan José
Arboleda)
* build: add -Werror when testing -Wflags (Jameson Nash)
* win: fix path size calculation (Ben Noordhuis)
* doc: correct uv_cancel return value (m0cg)
* unix,win: look up UV_THREADPOOL_SIZE with uv_os_getenv (moe li)
* build(deps): bump actions/setup-python from 5 to 6 (dependabot[bot])
* unix: fix uv__signal_loop_cleanup call in init (Jameson Nash)
* aix: fix nullptr check in uv__skip_lines (Ben Noordhuis)
* unix: add neoverse-v2 cpu identifier (green-br)
* test: make `thread_priority` robust against system default nice levels
(Juan José Arboleda)
* unix,win: implement `uv_udp_open_ex` (Juan José Arboleda)
* aix: add stub function to satisfy linker (Ben Noordhuis)
* linux: add MSG_ERRQUEUE ipv4/ipv6 udp support (Juan José Arboleda)
* ibmi: add stub function to satisfy linker (Ben Noordhuis)
* darwin: better heuristic for available memory (Christian Guinard)
* build(deps): bump actions/download-artifact from 5 to 6
(dependabot[bot])
* build(deps): bump actions/upload-artifact from 4 to 5
(dependabot[bot])
* unix: fix use of uninitialized variable (Ben Noordhuis)
* doc: fix documentation for uv_utf16_to_wtf8() function (Gang Zhuo)
* win: rename minimal_windows10_version1709() for libuv's convention
(Andy Pan)
* build(deps): bump actions/checkout from 5 to 6 (dependabot[bot])
* win: fix race in uv_fs_event_start() (Ben Noordhuis)
* unix: support nanosecond resolution in uv__fs_to_timespec (Ayush
Kumar)
* win: handle sshfs-win quirk in uv_fs_readdir() (Ben Noordhuis)
* unix,win: fix leak in uv_os_environ error path (Ambuj Vashistha)
* test: add macros to run fs tests with io_uring (Santiago Gimeno)
* linux: fix uv_fs_ftruncate io_uring implementation (Santiago Gimeno)
* Update OS X reference to macOS in README (Bart Louwers)
* ci: update macos runner images (Ben Noordhuis)
* doc: add example usage for uv_sleep (Kartik Puri)
* ci: add macos-15-intel to matrix (Ben Noordhuis)
* win: Optimize file/directory delete. (chemodax)
* build(deps): bump actions/download-artifact from 6 to 7
(dependabot[bot])
* build(deps): bump actions/upload-artifact from 5 to 6
(dependabot[bot])
* test: run more fs tests using io_uring too (Santiago Gimeno)
* doc: add handle and request usage guidelines (Ben Noordhuis)
* unix: remove handle from queue on uv_spawn() error (Oblivionsage)
* doc: remove hp-ux from supported platforms list (Ben Noordhuis)
* unix,win: add f_frsize field to uv_statfs_t (Ben Noordhuis)
* test: fix -Wuninitialized-const-pointer warning (Ben Noordhuis)
* test: fix -Wstringop-overread warning (Ben Noordhuis)
* test: make pty test work under asan (Ben Noordhuis)
* win: readlink support for IO_REPARSE_TAG_LX_SYMLINK (Cody Tapscott)
* unix: fix partial read handling after POLLHUP (Ben Noordhuis)
* unix: factor out common i/o poll code (Ben Noordhuis)
* test: disable udp_reuseport test under qemu (Ben Noordhuis)
* test: disable tcp_reuseport test under qemu (Ben Noordhuis)
* unix,win: check nbufs argument is reasonable (Ben Noordhuis)
* win: refactor to support large statfs blocks (Santiago Gimeno)
* unix: remove sunpro references (Ben Noordhuis)
* idna: fix assert in wtf8_to_utf16 conversion (tobil4sk)
* aix,ibmi: fix test suite build breakage (Ben Noordhuis)
* unix: implement cpu_relax() for riscv64 (Han Gao)
* doc: add setuid warning to uv_exepath (Ben Noordhuis)
* unix: make OpenBSD uv_exepath work (mischief)
* win: fix uv_get_process_title (StefanStojanovic)
* unix,udp: fix -Wgnu-folding-constant warning (Saúl Ibarra Corretgé)
* cmake: add libuvConfigVersion.cmake file (Przemysław Sobala)
commit 0dc33b9f0f1f396dc607d2c0ddc6260d3174a7cf
Author: Przemysław Sobala <przemyslaw.sobala@grupawp.pl>
Date: Fri Feb 6 11:45:17 2026 +0100
cmake: add libuvConfigVersion.cmake file
commit 26a97ad4425ca2f0a911c6412f19b089b9dbf527
Author: Saúl Ibarra Corretgé <s@saghul.net>
Date: Thu Feb 5 14:44:39 2026 +0100
unix,udp: fix -Wgnu-folding-constant warning
~~~
/Users/saghul/src/libuv/src/unix/udp.c:1460:26: warning: variable length array folded to constant array as an extension [-Wgnu-folding-constant]
1460 | struct sockaddr* addrs[N];
| ^
/Users/saghul/src/libuv/src/unix/udp.c:1461:22: warning: variable length array folded to constant array as an extension [-Wgnu-folding-constant]
1461 | unsigned int nbufs[N];
| ^
/Users/saghul/src/libuv/src/unix/udp.c:1462:18: warning: variable length array folded to constant array as an extension [-Wgnu-folding-constant]
1462 | uv_buf_t* bufs[N];
| ^
3 warnings generated.
/Users/saghul/src/libuv/src/unix/udp.c:1460:26: warning: variable length array folded to constant array as an extension [-Wgnu-folding-constant]
1460 | struct sockaddr* addrs[N];
| ^
/Users/saghul/src/libuv/src/unix/udp.c:1461:22: warning: variable length array folded to constant array as an extension [-Wgnu-folding-constant]
1461 | unsigned int nbufs[N];
| ^
/Users/saghul/src/libuv/src/unix/udp.c:1462:18: warning: variable length array folded to constant array as an extension [-Wgnu-folding-constant]
1462 | uv_buf_t* bufs[N];
| ^
~~~
commit 01f4f89503d23a3d360b07876becc76bf9b26895
Author: StefanStojanovic <stefan.stojanovic@janeasystems.com>
Date: Wed Feb 4 15:13:37 2026 +0100
win: fix uv_get_process_title
Fixes: https://github.com/libuv/libuv/issues/2667
commit 71801576eb58da81ed4b9b0c607a36a7f6dd8200
Author: mischief <mischief@offblast.org>
Date: Wed Feb 4 00:03:03 2026 -0800
unix: make OpenBSD uv_exepath work
some users of libuv rely on uv_exepath to be an actual path to a
program. unfortunately, the OpenBSD KERN_PROC_ARGV sysctl just returns
what is in argv[0], so if the program was executed by being looked up in
$PATH, uv_exepath would only return the basename and not an actual path.
to fix, this use the same approach as IBM i, OS/390 and AIX by searching
with uv__search_path. this is also the same approach the Zig language
has taken for the similar selfExePath function for OpenBSD.
the tests expect that uv_exepath still works after uv_set_process_title,
which on BSD is a call to setproctitle. the place setproctitle stores to
is the same place that KERN_PROC_ARGV reads from, so we need to stash
the original argv[0] in uv_setup_args to recover it later in uv_exepath.
commit 0db25a91f0fc9f50166a6e53abfccfe3a1f3da47
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Feb 4 22:43:14 2026 +0100
doc: add setuid warning to uv_exepath
commit e50d4e672e1859566ea7f8296cbd9b58267ccce5
Author: Han Gao <rabenda.cn@gmail.com>
Date: Thu Feb 5 05:46:14 2026 +0800
unix: implement cpu_relax() for riscv64 (#5019)
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
commit 885613f1fe7fb7f5dc27667e388a40ecbf9efd25
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Feb 4 22:45:38 2026 +0100
aix,ibmi: fix test suite build breakage (#5020)
Apparently there is no openpty() on those platforms. Introduced in
commit 2e2114ed from last month.
Fixes: https://github.com/libuv/libuv/issues/5018
commit 73bfbb995f33c9ef3ee087d46c6a85a6a3c204ba
Author: tobil4sk <tobil4sk@outlook.com>
Date: Wed Feb 4 20:55:43 2026 +0000
idna: fix assert in wtf8_to_utf16 conversion (#5021)
0x10FFFF is the valid max unicode character, so the check should be
inclusive.
This assert gets triggered because uv__wtf8_decode1 (used by
uv_wtf8_length_as_utf16) has the correct code_point <= 0x10FFFF check,
so the sequence is treated as valid and it will be passed into
uv_wtf8_to_utf16, where the incorrect assert gets triggered:
src/idna.c:397: uv_wtf8_to_utf16: Assertion `code_point < 0x10FFFF' failed.
commit fc90bb9843dd49fa12226c123284e8567006a709
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Mon Feb 2 23:15:38 2026 +0100
unix: remove sunpro references (#5017)
Sun Studio / Oracle Developer Studio hasn't had a release in almost
nine years. If Oracle doesn't feel like supporting it, then neither
do I.
commit c68ca444e72fc7711eec4e71a8bb8feaffbbefc2
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Mon Feb 2 10:04:36 2026 +0100
win: refactor to support large statfs blocks (#5016)
Accomplish this by replacing `GetDiskFreeSpaceW()` with
`NtQueryVolumeInformationFile()` which allows us to represent blocks
larger than 2^32 - 1 via
`FILE_FS_FULL_SIZE_INFORMATION.TotalAllocationUnits`.
Expanded `fs_statfs` test to check that `uv_fs_statfs()` also works with
files, meaning https://github.com/libuv/libuv/issues/2683 remains fixed
without the need of https://github.com/libuv/libuv/pull/2695.
commit 91dc2389cc622036bc50e7f9509638a646a2c877
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Sun Feb 1 13:03:07 2026 +0100
unix,win: check nbufs argument is reasonable (#5014)
Catch sign conversion bugs by introducing a bounds check that doubles
as a sanity check.
Fixes: https://github.com/libuv/libuv/issues/5012
commit 4839e28d509b3c11fc86904e12abaa7212545fcf
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Fri Jan 23 11:07:15 2026 +0100
test: disable tcp_reuseport test under qemu (#5005)
The test is multi-threaded and expects both threads to receive at least
some of the incoming connections but there isn't always true parallelism
under QEMU's user-mode emulator.
Single-core systems are also susceptible to that so also add a check
that we have at least two cores to run on.
As mentioned in the change for the udp_reuseport test from a few days
ago, the test is not perfect (there being > 1 core doesn't guarantee
we actually get to run on them) but it's better than nothing.
Fixes: https://github.com/libuv/libuv/issues/5003
commit 0405e1224fb17d8edbc976bb62b8ddca243dee84
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Jan 21 22:34:30 2026 +0100
test: disable udp_reuseport test under qemu (#5002)
The test is multi-threaded and expects both threads to receive at least
some of the incoming datagrams but there isn't always true parallelism
under QEMU's user-mode emulator.
Single-core systems are also susceptible to that so also add a check
that we have at least two cores to run on.
It's not perfect because a sufficiently dedicated test torturer could
probably concoct a containerized setup where the core count > 1 but the
available CPU slice is so small that the test effectively still runs
sequentially, but it's better than nothing.
Fixes: https://github.com/libuv/libuv/issues/4777
commit 4cb6a2d33c6f8717d5b1899142e139075a7425f7
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Sun Jan 18 22:32:36 2026 +0100
unix: factor out common i/o poll code (#5000)
commit 2e2114ed8957a0124bc629c61d034c387b8ce42a
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Sun Jan 18 12:21:53 2026 +0100
unix: fix partial read handling after POLLHUP (#4997)
It was reported that PTYs on Linux sometimes report POLLHUP, return a
partial read, but still return more data on the next read.
Libuv contains an optimization where it assumes a partial read after
POLLHUP means the next read can be skipped because it's going to fail
with EOF anyway. That assumption was thought to be always true but,
alas, it isn't.
The fact the optimization has been present for 13 years and this is the
first bug report about it, indicates how rare this particular condition
is, but of course we can't skim on correctness.
The reworked optimization only uses POLLHUP as an input signal when
POLLIN is not also set. That means we no longer have to track partial
reads because we're going to try and read anyway as long as POLLIN is
set. It seems to cause no measurable regressions on the test suite or
the (lightly tested) benchmarks.
Fixes: https://github.com/libuv/libuv/issues/4992
commit 588ea9b91359d9b6bb8ae02cd9dfc565107056cf
Author: Cody Tapscott <84105208+topolarity@users.noreply.github.com>
Date: Fri Jan 16 04:38:18 2026 -0500
win: readlink support for IO_REPARSE_TAG_LX_SYMLINK (#4994)
This adds support for "Linux"-style Windows symbolic links, reparse tag
0xA000001D (IO_REPARSE_TAG_LX_SYMLINK).
commit 3908e54252c93725458ea526fb11c968290a3afc
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Thu Jan 15 21:39:23 2026 +0100
test: make pty test work under asan (#4996)
AddressSanitizer was right to complain about the test because it was
passing an uninitialized `struct winsize` to openpty().
commit d67f9d2fbaa716a9cae93140b575a199dd4abd8b
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Tue Jan 13 14:35:19 2026 +0100
test: fix -Wstringop-overread warning (#4993)
Check the length before doing the compare like we do a few lines below,
not the other way around. It's a false positive because the length is
capped well below the maximum object size but it's an easy fix.
Fixes the following warning:
test/test-poll-oob.c:94:19: warning: ‘strncmp’ specified bound
[18446744071562067968, 18446744073709551615] exceeds maximum
object size 9223372036854775807 [-Wstringop-overread]
commit f420c2bd57ba79d21e1797324ed3ca18e8d92f89
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Jan 7 23:24:28 2026 +0100
test: fix -Wuninitialized-const-pointer warning (#4990)
Zero the struct. The compiler is not aware it's not actually used.
commit 91ae02a63d25caccddd835fb201195fefe9d113b
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Thu Jan 1 22:33:44 2026 +0100
unix,win: add f_frsize field to uv_statfs_t (#4984)
Fixes: https://github.com/libuv/libuv/issues/4983
commit 8b870dab3dcb17e20dc70f2fb6ace6a2e31d89a2
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Thu Jan 1 21:34:36 2026 +0100
doc: remove hp-ux from supported platforms list (#4985)
As of January 1, 2026, HP-UX is well and truly dead. Remove it.
commit 3e9ae1bca07f8155bc4249a21ec41ca2c86fdb93
Author: Oblivionsage <126214490+Oblivionsage@users.noreply.github.com>
Date: Fri Dec 26 16:53:42 2025 +0100
unix: remove handle from queue on uv_spawn() error (#4980)
If uv_spawn() fails after uv__handle_init() has been called, the handle
remains in loop->handle_queue. This causes use-after-free if the handle
is stack-allocated or freed, and a subsequent loop operation like
uv_walk() accesses it.
This follows the same pattern as uv_tcp_init_ex() which explicitly
removes the handle from the queue on error.
commit 309b28bdbedeeb52f0d3791bee0a1df3e4bc9c68
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Sun Dec 21 19:00:09 2025 +0100
doc: add handle and request usage guidelines (#4978)
Refs: https://github.com/libuv/libuv/discussions/4977
commit 9c876b2f3bac0027de95197ebd71919b52aab6b1
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Sat Dec 20 22:30:42 2025 +0100
test: run more fs tests using io_uring too (#4970)
Fix `threadpool_cancel_fs_iouring` so it takes `UV_FS_FTRUNCATE` into
account.
commit ec7ec98b70149bafc2f8d57b9e4133e2f2570d52
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon Dec 15 07:35:23 2025 -0500
build(deps): bump actions/upload-artifact from 5 to 6 (#4975)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
commit 5c91d49561a665cfcfd9056eb1a85944b24995f1
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon Dec 15 07:34:09 2025 -0500
build(deps): bump actions/download-artifact from 6 to 7 (#4974)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
commit ada5131840a88b4ff6df8d047116899e4192e934
Author: chemodax <53048645+chemodax@users.noreply.github.com>
Date: Thu Dec 11 20:08:50 2025 +0100
win: Optimize file/directory delete.
Use GetFileInformationByHandleEx(FileBasicInfo) instead of GetFileInformationByHandle() because it's cheaper -- one syscall, instead of two [1]
[1]: https://blog.axiorema.com/engineering/hidden-cost-getfileinformationbyhandle/
commit ac591507f3ff7383b8a56351aa2fda33dbd80ee5
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Wed Dec 10 20:43:08 2025 +0100
ci: add macos-15-intel to matrix (#4968)
And fix a stupid typo that made GHA skip running the tests :facepalm:
commit 504887a339343c6688ef660eee4215fd31a926fa
Author: Kartik Puri <84309847+BOXER78@users.noreply.github.com>
Date: Wed Dec 10 11:53:39 2025 +0530
doc: add example usage for uv_sleep (#4955)
commit 4eefcbeb5c3c0da8cc0d5008708688eb575203e5
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Tue Dec 9 17:36:57 2025 +0100
ci: update macos runner images (#4967)
Add macos-15 runners. Remove the deprecated macos-13 runners.
Fixes: https://github.com/libuv/libuv/issues/4965
Refs: https://github.com/actions/runner-images/issues/10924
commit 3c1e7013b303969425e9cb6576206107f7de2971
Author: Bart Louwers <bart.louwers@gmail.com>
Date: Tue Dec 9 01:02:08 2025 +0100
Update OS X reference to macOS in README (#4964)
commit fd89e63f2f3c62434bb5fb096a00d9df3a3cbd67
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Sun Dec 7 22:40:22 2025 +0100
linux: fix uv_fs_ftruncate io_uring implementation (#4963 2/2)
The `offset` field should be assigned to ithe `io_uring_sqe.off` field.
commit e522b27da39246de46722dba1762b2650bd6d387
Author: Santiago Gimeno <santiago.gimeno@gmail.com>
Date: Sun Dec 7 22:40:05 2025 +0100
test: add macros to run fs tests with io_uring (#4963 1/2)
Added `TEST_FS_DECLARE`, `TEST_FS_ENTRY` and `TEST_FS_IMPL` so we can
run test-fs.c tests both using the threadpool and io_uring
implementations.
commit 9640bc6510084cc681c23deb7ec6f4993fa1ccad
Author: Ambuj Vashistha <ambujva123@gmail.com>
Date: Sun Dec 7 02:34:49 2025 +0530
unix,win: fix leak in uv_os_environ error path (#4960)
commit d7dda9edfec189f9087d13f970525188db06464d
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Tue Dec 2 16:37:17 2025 +0100
win: handle sshfs-win quirk in uv_fs_readdir() (#4953)
The initial FindFirstFile can fail with ERROR_FILE_NOT_FOUND, meaning
no matches (read: empty directory), which leaves dir_handle set to
INVALID_HANDLE_VALUE. Not an actual error, it just means no results.
I can't get FindFirstFile to work like that on regular file systems
but it's been reported that it does under sshfs-win and the MSDN
documentation clearly states it's possible. Handle it.
Fixes: https://github.com/libuv/libuv/issues/4952
commit bf44c3fdcc45f190e6c1f1478ba3beb9ba45bfef
Author: Ayush Kumar <ayushkumarkvs160@gmail.com>
Date: Tue Dec 2 13:12:44 2025 +0530
unix: support nanosecond resolution in uv__fs_to_timespec (#4951)
Remove the microsecond truncation in uv__fs_to_timespec() function to enable
full nanosecond resolution support. The utimensat() system call already
supports nanosecond precision, so the artificial truncation to microseconds
is no longer necessary.
This allows file modification and access times to be set with full nanosecond
precision instead of being limited to microsecond resolution.
Fixes the TODO comment about removing the microsecond resolution limit.
commit 8fc70344df789d95c18f3c5282f11dcd85205545
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Sat Nov 29 20:21:40 2025 +0100
win: fix race in uv_fs_event_start() (#4948)
Fetch file metadata by handle instead of by path, otherwise there is a
race window between fetching and acting on said metadata where another
process can replace the file with another one.
There is still a potential race when upgrading the short path to a long
path but that that one is intrinsic. It's not something libuv can solve
except by refraining from calling GetLongPathName.
Fixes: https://github.com/libuv/libuv/issues/4568
commit 8e024629fe76c7e4d009fd01ccf8b329c99433d3
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon Nov 24 06:17:37 2025 +0000
build(deps): bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
commit f6e19be74388ff9dfa8583da226d605a7eb4e022
Author: Andy Pan <i@andypan.me>
Date: Sat Sep 6 10:15:18 2025 +0800
win: rename minimal_windows10_version1709() for libuv's convention
---------
Signed-off-by: Andy Pan <i@andypan.me>
commit 01250432eba011c367189bb74e6b162268b8f5d4
Author: Gang Zhuo <gang.zhuo@gmail.com>
Date: Wed Nov 19 03:45:29 2025 +0800
doc: fix documentation for uv_utf16_to_wtf8() function (#4935)
When `wtf8_ptr` is NULL, the length will be stored in `wtf8_len_ptr` (not in `wtf8_ptr`).
Fixes: https://github.com/libuv/libuv/issues/4934
commit b33162dd0b6767fbc3c833ecbe3c2f2607ba0dca
Author: Ben Noordhuis <info@bnoordhuis.nl>
Date: Thu Nov 6 22:34:44 2025 +0100
unix: fix use of uninitialized variable (#4924)
The `flags` argument to `uv__udp_recvmsg_errqueue` was not initialized
in all code paths. Shuffle code around to make the control flow more
obvious (at the cost of a less legible diff.)
Also fixes an unused label warning when building on systems that aren't
Linux.
Introduced last month in commit 80a5e3ba0, "linux: add MSG_ERRQUEUE
ipv4/ipv6 udp support".
commit 12d1ed1380c59c5ec27503cf149833de6f0e6bb0
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon Oct 27 06:43:10 2025 +0000
build(deps): bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
commit 300fc32263f5f5393058ee1d607be0ec12b58173
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon Oct 27 07:56:06 2025 -0400
build(deps): bump actions/download-artifact from 5 to 6 (#4914)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v5...v6)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
commit a944c422cca5522073e03710ca7fd08f53218358
Author: Christian Guinard <28689358+christiangnrd@users.noreply.github.com>
Date: Wed Oct 15 03:35:42 2025 -0300
darwin: better heuristic for available memory (#4908)
Fixes: https://github.com/libuv/libuv/issues/3897
c…
juanarbol
pushed a commit
to juanarbol/node
that referenced
this pull request
Jul 16, 2026
Original commit message:
unix: treat futimens() as best-effort in copyfile
futimens() may fail with EPERM on CIFS/SMB shares that do not
support setting timestamps. Since preserving timestamps during
copyfile is best-effort, ignore the return value unconditionally.
Refs: libuv/libuv#4396
Fixes: nodejs#56248
PR-URL: nodejs#62881
Refs: libuv/libuv#5053
Refs: libuv/libuv#4396
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
juanarbol
pushed a commit
to nodejs/node
that referenced
this pull request
Jul 17, 2026
Original commit message:
unix: treat futimens() as best-effort in copyfile
futimens() may fail with EPERM on CIFS/SMB shares that do not
support setting timestamps. Since preserving timestamps during
copyfile is best-effort, ignore the return value unconditionally.
Refs: libuv/libuv#4396
Fixes: #56248
PR-URL: #62881
Refs: libuv/libuv#5053
Refs: libuv/libuv#4396
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
juanarbol
pushed a commit
to nodejs/node
that referenced
this pull request
Jul 19, 2026
Original commit message:
unix: treat futimens() as best-effort in copyfile
futimens() may fail with EPERM on CIFS/SMB shares that do not
support setting timestamps. Since preserving timestamps during
copyfile is best-effort, ignore the return value unconditionally.
Refs: libuv/libuv#4396
Fixes: #56248
PR-URL: #62881
Refs: libuv/libuv#5053
Refs: libuv/libuv#4396
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
marco-ippolito
pushed a commit
to nodejs/node
that referenced
this pull request
Jul 29, 2026
Original commit message:
unix: treat futimens() as best-effort in copyfile
futimens() may fail with EPERM on CIFS/SMB shares that do not
support setting timestamps. Since preserving timestamps during
copyfile is best-effort, ignore the return value unconditionally.
Refs: libuv/libuv#4396
Fixes: #56248
PR-URL: #62881
Refs: libuv/libuv#5053
Refs: libuv/libuv#4396
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This commit changes the timestamps in the file, the ownership and the group.
Fixes: #3125
Am I missing any metadata here?
juan@ubuntu:/tmp$ ls -l | grep cop -rwxrwxrwx 1 juan testing 811 Apr 26 22:12 copied -rwxrwxrwx 1 juan testing 811 Apr 26 22:12 copied2 -rwxrwxrwx 1 juan testing 811 Apr 26 21:47 copyFile.c