fix(meta.uv): update file to latest and suppress deprecation warnings

This commit is contained in:
2025-10-05 00:43:23 +02:00
parent 8b17ef2b6b
commit c73ea44856
+328 -123
View File
@@ -1,4 +1,5 @@
---@alias vim.uv uv ---@alias vim.uv uv
---@diagnostic disable: deprecated
-- source: https://github.com/Bilal2453/luvit-meta -- source: https://github.com/Bilal2453/luvit-meta
--[[ --[[
@@ -287,7 +288,7 @@
--- metamethod --- metamethod
---- `buffer`: a `string` or a sequential `table` of `string`s ---- `buffer`: a `string` or a sequential `table` of `string`s
---- `threadargs`: variable arguments (`...`) of type `nil`, `boolean`, `number`, ---- `threadargs`: variable arguments (`...`) of type `nil`, `boolean`, `number`,
--- `string`, or `userdata` --- `string`, or `userdata`, numbers of argument limited to 9.
--- ---
---@namespace ---@namespace
---@class uv ---@class uv
@@ -296,7 +297,9 @@ local uv = {}
---@alias uv.aliases.buffer string|string[] ---@alias uv.aliases.buffer string|string[]
---@alias uv.aliases.threadargs userdata|string|number|boolean|nil ---@alias uv.aliases.threadargs userdata|string|number|boolean|nil # numbers of argument limited to 9.
--- ---
---@section Contents ---@section Contents
@@ -336,6 +339,8 @@ local uv = {}
-- TODO: above section should probably not be hardcoded -- TODO: above section should probably not be hardcoded
--- ---
---In libuv, errors are negative numbered constants; however, while those errors are exposed through `uv.errno`, ---In libuv, errors are negative numbered constants; however, while those errors are exposed through `uv.errno`,
---the functions used to handle them are not exposed to luv users. Instead, if an ---the functions used to handle them are not exposed to luv users. Instead, if an
@@ -368,6 +373,8 @@ local uv = {}
---@type uv.errno ---@type uv.errno
uv.errno = {} uv.errno = {}
--- ---
---@section Version Checking ---@section Version Checking
--- ---
@@ -389,6 +396,8 @@ function uv.version() end
---@nodiscard ---@nodiscard
function uv.version_string() end function uv.version_string() end
--- ---
---The event loop is the central part of libuv's functionality. It takes care of ---The event loop is the central part of libuv's functionality. It takes care of
-- polling for I/O and scheduling callbacks to be run based on different sources of events. -- polling for I/O and scheduling callbacks to be run based on different sources of events.
@@ -564,6 +573,8 @@ function uv.update_time() end
---@param callback fun(handle: uv.aliases.handle_instances) ---@param callback fun(handle: uv.aliases.handle_instances)
function uv.walk(callback) end function uv.walk(callback) end
--- ---
---`uv_req_t` is the base type for all libuv request types. ---`uv_req_t` is the base type for all libuv request types.
--- ---
@@ -572,30 +583,30 @@ function uv.walk(callback) end
local uv_req_t = {} local uv_req_t = {}
---@alias uv.aliases.req_struct_name ---@alias uv.aliases.req_struct_name
---|'unknown' 0 ---|'unknown' # 0
---|'req' 1 ---|'req' # 1
---|'connect' 2 ---|'connect' # 2
---|'write' 3 ---|'write' # 3
---|'shutdown' 4 ---|'shutdown' # 4
---|'udp_send' 5 ---|'udp_send' # 5
---|'fs' 6 ---|'fs' # 6
---|'work' 7 ---|'work' # 7
---|'getaddrinfo' 8 ---|'getaddrinfo' # 8
---|'getnameinfo' 9 ---|'getnameinfo' # 9
---|'random' 10 ---|'random' # 10
---@alias uv.aliases.req_struct_type ---@alias uv.aliases.req_struct_type
---|0 unknown ---|0 # unknown
---|1 req ---|1 # req
---|2 connect ---|2 # connect
---|3 write ---|3 # write
---|4 shutdown ---|4 # shutdown
---|5 udp_send ---|5 # udp_send
---|6 fs ---|6 # fs
---|7 work ---|7 # work
---|8 getaddrinfo ---|8 # getaddrinfo
---|9 getnameinfo ---|9 # getnameinfo
---|10 random ---|10 # random
--- ---
---Cancel a pending request. Fails if the request is executing or has finished ---Cancel a pending request. Fails if the request is executing or has finished
@@ -617,6 +628,8 @@ uv_req_t.cancel = uv.cancel
function uv.req_get_type(req) end function uv.req_get_type(req) end
uv_req_t.get_type = uv.req_get_type uv_req_t.get_type = uv.req_get_type
--- ---
---`uv_handle_t` is the base type for all libuv handle types. All API functions ---`uv_handle_t` is the base type for all libuv handle types. All API functions
---defined here work with any handle type. ---defined here work with any handle type.
@@ -636,44 +649,44 @@ local uv_handle_t = {}
---|uv_fs_poll_t ---|uv_fs_poll_t
---@alias uv.aliases.handle_struct_name ---@alias uv.aliases.handle_struct_name
---|'unknown' 0 ---|'unknown' # 0
---|'"async"' 1 ---|'"async"' # 1
---|'check' 2 ---|'check' # 2
---|'fs_event' 3 ---|'fs_event' # 3
---|'fs_poll' 4 ---|'fs_poll' # 4
---|'handle' 5 ---|'handle' # 5
---|'idle' 6 ---|'idle' # 6
---|'pipe' 7 ---|'pipe' # 7
---|'poll' 8 ---|'poll' # 8
---|'prepare' 9 ---|'prepare' # 9
---|'process' 10 ---|'process' # 10
---|'stream' 11 ---|'stream' # 11
---|'tcp' 12 ---|'tcp' # 12
---|'timer' 13 ---|'timer' # 13
---|'tty' 14 ---|'tty' # 14
---|'udp' 15 ---|'udp' # 15
---|'signal' 16 ---|'signal' # 16
---|'file' 17 ---|'file' # 17
---@alias uv.aliases.handle_struct_type ---@alias uv.aliases.handle_struct_type
---|0 unknown ---|0 # unknown
---|1 async ---|1 # async
---|2 check ---|2 # check
---|3 fs_event ---|3 # fs_event
---|4 fs_poll ---|4 # fs_poll
---|5 handle ---|5 # handle
---|6 idle ---|6 # idle
---|7 pipe ---|7 # pipe
---|8 poll ---|8 # poll
---|9 prepare ---|9 # prepare
---|10 process ---|10 # process
---|11 stream ---|11 # stream
---|12 tcp ---|12 # tcp
---|13 timer ---|13 # timer
---|14 tty ---|14 # tty
---|15 udp ---|15 # udp
---|16 signal ---|16 # signal
---|17 file ---|17 # file
--- ---
---Returns `true` if the handle is active, `false` if it's inactive. What "active” ---Returns `true` if the handle is active, `false` if it's inactive. What "active”
@@ -819,6 +832,8 @@ uv_handle_t.fileno = uv.fileno
function uv.handle_get_type(handle) end function uv.handle_get_type(handle) end
uv_handle_t.get_type = uv.handle_get_type uv_handle_t.get_type = uv.handle_get_type
--- ---
---@section Reference counting ---@section Reference counting
--- ---
@@ -834,6 +849,8 @@ uv_handle_t.get_type = uv.handle_get_type
---more detailed explanation on what being active involves. ---more detailed explanation on what being active involves.
--- ---
--- ---
---Timer handles are used to schedule callbacks to be called in the future. ---Timer handles are used to schedule callbacks to be called in the future.
--- ---
@@ -944,6 +961,8 @@ uv_timer_t.get_repeat = uv.timer_get_repeat
function uv.timer_get_due_in(timer) end function uv.timer_get_due_in(timer) end
uv_timer_t.get_due_in = uv.timer_get_due_in uv_timer_t.get_due_in = uv.timer_get_due_in
--- ---
---Prepare handles will run the given callback once per loop iteration, right ---Prepare handles will run the given callback once per loop iteration, right
---before polling for I/O. ---before polling for I/O.
@@ -987,6 +1006,7 @@ uv_prepare_t.start = uv.prepare_start
function uv.prepare_stop(prepare) end function uv.prepare_stop(prepare) end
uv_prepare_t.stop = uv.prepare_stop uv_prepare_t.stop = uv.prepare_stop
--- ---
---Check handles will run the given callback once per loop iteration, right after ---Check handles will run the given callback once per loop iteration, right after
---polling for I/O. ---polling for I/O.
@@ -1029,6 +1049,8 @@ uv_check_t.start = uv.check_start
function uv.check_stop(check) end function uv.check_stop(check) end
uv_check_t.stop = uv.check_stop uv_check_t.stop = uv.check_stop
--- ---
---Idle handles will run the given callback once per loop iteration, right before ---Idle handles will run the given callback once per loop iteration, right before
---the `uv_prepare_t` handles. ---the `uv_prepare_t` handles.
@@ -1078,6 +1100,8 @@ uv_idle_t.start = uv.idle_start
function uv.idle_stop(idle) end function uv.idle_stop(idle) end
uv_idle_t.stop = uv.idle_stop uv_idle_t.stop = uv.idle_stop
--- ---
---Async handles allow the user to "wakeup" the event loop and get a callback ---Async handles allow the user to "wakeup" the event loop and get a callback
---called from another thread. ---called from another thread.
@@ -1131,6 +1155,8 @@ function uv.new_async(callback) end
function uv.async_send(async, ...) end function uv.async_send(async, ...) end
uv_async_t.send = uv.async_send uv_async_t.send = uv.async_send
--- ---
---Poll handles are used to watch file descriptors for readability and writability, ---Poll handles are used to watch file descriptors for readability and writability,
---similar to the purpose of [poll(2)](http://linux.die.net/man/2/poll). ---similar to the purpose of [poll(2)](http://linux.die.net/man/2/poll).
@@ -1227,6 +1253,8 @@ uv_poll_t.start = uv.poll_start
function uv.poll_stop(poll) end function uv.poll_stop(poll) end
uv_poll_t.stop = uv.poll_stop uv_poll_t.stop = uv.poll_stop
--- ---
---Signal handles implement Unix style signal handling on a per-event loop bases. ---Signal handles implement Unix style signal handling on a per-event loop bases.
--- ---
@@ -1278,41 +1306,41 @@ uv_poll_t.stop = uv.poll_stop
local uv_signal_t = {} local uv_signal_t = {}
---@alias uv.aliases.signals ---@alias uv.aliases.signals
---| "sigabrt" Abort signal from abort(3) ---| "sigabrt" # Abort signal from abort(3)
---| "sigalrm" Timer signal from alarm(2) ---| "sigalrm" # Timer signal from alarm(2)
---| "sigbus" Bus error (bad memory access) ---| "sigbus" # Bus error (bad memory access)
---| "sigchld" Child stopped or terminated ---| "sigchld" # Child stopped or terminated
---| "sigcont" Continue if stopped ---| "sigcont" # Continue if stopped
---| "sigfpe" Floating-point exception ---| "sigfpe" # Floating-point exception
---| "sighup" Hangup detected on controlling terminal or death of controlling process ---| "sighup" # Hangup detected on controlling terminal or death of controlling process
---| "sigill" Illegal Instruction ---| "sigill" # Illegal Instruction
---| "sigint" Interrupt from keyboard ---| "sigint" # Interrupt from keyboard
---| "sigio" I/O now possible (4.2BSD) ---| "sigio" # I/O now possible (4.2BSD)
---| "sigiot" IOT trap. A synonym for sigabrt ---| "sigiot" # IOT trap. A synonym for sigabrt
---| "sigkill" Kill signal ---| "sigkill" # Kill signal
---| "sigpipe" Broken pipe: write to pipe with no readers; see pipe(7) ---| "sigpipe" # Broken pipe: write to pipe with no readers; see pipe(7)
---| "sigpoll" Pollable event (Sys V); synonym for sigIO ---| "sigpoll" # Pollable event (Sys V); synonym for sigIO
---| "sigprof" Profiling timer expired ---| "sigprof" # Profiling timer expired
---| "sigpwr" Power failure (System V) ---| "sigpwr" # Power failure (System V)
---| "sigquit" Quit from keyboard ---| "sigquit" # Quit from keyboard
---| "sigsegv" Invalid memory reference ---| "sigsegv" # Invalid memory reference
---| "sigstkflt" Stack fault on coprocessor ---| "sigstkflt" # Stack fault on coprocessor
---| "sigstop" Stop process ---| "sigstop" # Stop process
---| "sigtstp" Stop typed at terminal ---| "sigtstp" # Stop typed at terminal
---| "sigsys" Bad system call (SVr4); see also seccomp(2) ---| "sigsys" # Bad system call (SVr4); see also seccomp(2)
---| "sigterm" Termination signal ---| "sigterm" # Termination signal
---| "sigtrap" Trace/breakpoint trap ---| "sigtrap" # Trace/breakpoint trap
---| "sigttin" Terminal input for background process ---| "sigttin" # Terminal input for background process
---| "sigttou" Terminal output for background process ---| "sigttou" # Terminal output for background process
---| "sigurg" Urgent condition on socket (4.2BSD) ---| "sigurg" # Urgent condition on socket (4.2BSD)
---| "sigusr1" User-defined signal 1 ---| "sigusr1" # User-defined signal 1
---| "sigusr2" User-defined signal 2 ---| "sigusr2" # User-defined signal 2
---| "sigvtalrm" Virtual alarm clock (4.2BSD) ---| "sigvtalrm" # Virtual alarm clock (4.2BSD)
---| "sigxcpu" CPU time limit exceeded (4.2BSD); see setrlimit(2) ---| "sigxcpu" # CPU time limit exceeded (4.2BSD); see setrlimit(2)
---| "sigxfsz" File size limit exceeded (4.2BSD);see setrlimit(2) ---| "sigxfsz" # File size limit exceeded (4.2BSD);see setrlimit(2)
---| "sigwinch" Window resize signal (4.3BSD, Sun) ---| "sigwinch" # Window resize signal (4.3BSD, Sun)
---| "sigbreak" CTRL + BREAK has been pressed ---| "sigbreak" # CTRL + BREAK has been pressed
---| "siglost" File lock lost ---| "siglost" # File lock lost
--- ---
---Creates and initializes a new `uv_signal_t`. ---Creates and initializes a new `uv_signal_t`.
@@ -1354,6 +1382,8 @@ uv_signal_t.start_oneshot = uv.signal_start_oneshot
function uv.signal_stop(signal) end function uv.signal_stop(signal) end
uv_signal_t.stop = uv.signal_stop uv_signal_t.stop = uv.signal_stop
--- ---
---Process handles will spawn a new process and allow the user to control it and ---Process handles will spawn a new process and allow the user to control it and
---establish communication channels with it using streams. ---establish communication channels with it using streams.
@@ -1435,10 +1465,11 @@ function uv.disable_stdio_inheritance() end
--- ---
---The `options` table accepts the following fields: ---The `options` table accepts the following fields:
--- ---
--- - `options.args` - Command line arguments as a list of string. The first --- - `options.args` - Command line arguments as a list of strings. The first
---string should be the path to the program. On Windows, this uses CreateProcess --- string should *not* be the path to the program, since that is already
---which concatenates the arguments into a string. This can cause some strange --- provided via `path`. On Windows, this uses CreateProcess which concatenates
---errors. (See `options.verbatim` below for Windows.) --- the arguments into a string. This can cause some strange errors
--- (see `options.verbatim` below for Windows).
--- ---
--- - `options.stdio` - Set the file descriptors that will be made available to --- - `options.stdio` - Set the file descriptors that will be made available to
--- the child process. The convention is that the first entries are stdin, stdout, --- the child process. The convention is that the first entries are stdin, stdout,
@@ -1512,6 +1543,8 @@ function uv.kill(pid, signum) end
function uv.process_get_pid(process) end function uv.process_get_pid(process) end
uv_process_t.get_pid = uv.process_get_pid uv_process_t.get_pid = uv.process_get_pid
--- ---
---Stream handles provide an abstraction of a duplex communication channel. ---Stream handles provide an abstraction of a duplex communication channel.
---`uv_stream_t` is an abstract type, libuv provides 3 stream implementations ---`uv_stream_t` is an abstract type, libuv provides 3 stream implementations
@@ -1698,6 +1731,8 @@ uv_stream_t.set_blocking = uv.stream_set_blocking
function uv.stream_get_write_queue_size() end function uv.stream_get_write_queue_size() end
uv_stream_t.get_write_queue_size = uv.stream_get_write_queue_size uv_stream_t.get_write_queue_size = uv.stream_get_write_queue_size
--- ---
---TCP handles are used to represent both TCP streams and servers. ---TCP handles are used to represent both TCP streams and servers.
--- ---
@@ -2047,6 +2082,8 @@ uv_tcp_t.close_reset = uv.tcp_close_reset
---@return {[1]: integer, [2]: integer}|nil, string? err_name, string? err_msg # [1, 2] file descriptor ---@return {[1]: integer, [2]: integer}|nil, string? err_name, string? err_msg # [1, 2] file descriptor
function uv.socketpair(socktype, protocol, flags1, flags2) end function uv.socketpair(socktype, protocol, flags1, flags2) end
--- ---
---Pipe handles provide an abstraction over local domain sockets on Unix and named pipes on Windows. ---Pipe handles provide an abstraction over local domain sockets on Unix and named pipes on Windows.
--- ---
@@ -2077,6 +2114,8 @@ local uv_pipe_t = {}
---@alias uv.aliases.pipe_rtn {read: integer, write: integer} ---@alias uv.aliases.pipe_rtn {read: integer, write: integer}
---@alias uv.aliases.pipe_2_flags {no_truncate: boolean}
--- ---
---Creates and initializes a new `uv_pipe_t`. Returns the Lua userdata wrapping ---Creates and initializes a new `uv_pipe_t`. Returns the Lua userdata wrapping
---it. The `ipc` argument is a boolean to indicate if this pipe will be used for ---it. The `ipc` argument is a boolean to indicate if this pipe will be used for
@@ -2223,6 +2262,57 @@ uv_pipe_t.chmod = uv.pipe_chmod
---@nodiscard ---@nodiscard
function uv.pipe(read_flags, write_flags) end function uv.pipe(read_flags, write_flags) end
---
---Bind the pipe to a file path (Unix) or a name (Windows).
---
---`Flags`:
---
--- - If `type(flags)` is `number`, it must be `0` or `uv.constants.PIPE_NO_TRUNCATE`.
--- - If `type(flags)` is `table`, it must be `{}` or `{ no_trunate = true|false }`.
--- - If `type(flags)` is `nil`, it use default value `0`.
--- - Returns `EINVAL` for unsupported flags without performing the bind operation.
---
---Supports Linux abstract namespace sockets. namelen must include the leading '\0' byte but not the trailing nul byte.
---
---**Note**:
---1. Paths on Unix get truncated to sizeof(sockaddr_un.sun_path) bytes,
---typically between 92 and 108 bytes.
---2. New in version 1.46.0.
---
---@param pipe uv_pipe_t
---@param name string
---@param flags integer|uv.aliases.pipe_2_flags|nil # (default: 0)
---@return 0|nil success, string? err_name, string? err_msg
function uv.pipe_bind2(pipe, name, flags) end
uv_pipe_t.bind2 = uv.pipe_bind2
---
---Connect to the Unix domain socket or the named pipe.
---
---`Flags`:
---
--- - If `type(flags)` is `number`, it must be `0` or `uv.constants.PIPE_NO_TRUNCATE`.
--- - If `type(flags)` is `table`, it must be `{}` or `{ no_trunate = true|false }`.
--- - If `type(flags)` is `nil`, it use default value `0`.
--- - Returns `EINVAL` for unsupported flags without performing the bind operation.
---
---Supports Linux abstract namespace sockets. namelen must include the leading nul byte but not the trailing nul byte.
---
---**Note**:
---1. Paths on Unix get truncated to sizeof(sockaddr_un.sun_path) bytes,
---typically between 92 and 108 bytes.
---2. New in version 1.46.0.
---
---@param pipe uv_pipe_t
---@param name string
---@param flags integer|uv.aliases.pipe_2_flags|nil # (default: 0)
---@param callback fun(err?: string)|nil
---@return uv_connect_t|nil stream, string? err_name, string? err_msg
function uv.pipe_connect2(pipe, name, flags, callback) end
uv_pipe_t.connect2 = uv.pipe_connect2
--- ---
---TTY handles represent a stream for the console. ---TTY handles represent a stream for the console.
--- ---
@@ -2330,6 +2420,8 @@ function uv.tty_set_vterm_state(state) end
---@nodiscard ---@nodiscard
function uv.tty_get_vterm_state() end function uv.tty_get_vterm_state() end
--- ---
---UDP handles encapsulate UDP communication for both clients and servers. ---UDP handles encapsulate UDP communication for both clients and servers.
--- ---
@@ -2450,13 +2542,7 @@ uv_udp_t.getpeername = uv.udp_getpeername
---@param interface_addr string|nil ---@param interface_addr string|nil
---@param membership uv.aliases.udp_membership ---@param membership uv.aliases.udp_membership
---@return 0|nil success, string? err_name, string? err_msg ---@return 0|nil success, string? err_name, string? err_msg
function uv.udp_set_membership( function uv.udp_set_membership(udp, multicast_addr, interface_addr, membership) end
udp,
multicast_addr,
interface_addr,
membership
)
end
uv_udp_t.set_membership = uv.udp_set_membership uv_udp_t.set_membership = uv.udp_set_membership
--- ---
@@ -2470,14 +2556,7 @@ uv_udp_t.set_membership = uv.udp_set_membership
---@param source_addr string ---@param source_addr string
---@param membership uv.aliases.udp_membership ---@param membership uv.aliases.udp_membership
---@return 0|nil success, string? err_name, string? err_msg ---@return 0|nil success, string? err_name, string? err_msg
function uv.udp_set_source_membership( function uv.udp_set_source_membership(udp, multicast_addr, interface_addr, source_addr, membership) end
udp,
multicast_addr,
interface_addr,
source_addr,
membership
)
end
uv_udp_t.set_source_membership = uv.udp_set_source_membership uv_udp_t.set_source_membership = uv.udp_set_source_membership
--- ---
@@ -2587,6 +2666,8 @@ uv_udp_t.recv_stop = uv.udp_recv_stop
function uv.udp_connect(udp, host, port) end function uv.udp_connect(udp, host, port) end
uv_udp_t.connect = uv.udp_connect uv_udp_t.connect = uv.udp_connect
--- ---
---FS Event handles allow the user to monitor a given path for changes, for ---FS Event handles allow the user to monitor a given path for changes, for
---example, if the file was renamed or there was a generic change in it. This ---example, if the file was renamed or there was a generic change in it. This
@@ -2604,12 +2685,12 @@ local uv_fs_event_t = {}
---Creates and initializes a new `uv_fs_event_t`. ---Creates and initializes a new `uv_fs_event_t`.
---Returns the Lua userdata wrapping it. ---Returns the Lua userdata wrapping it.
--- ---
---@return uv_fs_event_t ---@return uv_fs_event_t|nil, string? err_name, string? err_msg
---@nodiscard ---@nodiscard
function uv.new_fs_event() end function uv.new_fs_event() end
-- TODO: make sure that the above method can indeed return nil + error. -- TODO: make sure that the above method can indeed return nil + error.
-- confirmed to never return error see libuv/unix/linux-inotify (kqueue/sunos etc) -- can fail in case the feature is not supported, see unix/no-fsevents.c
--- ---
---Start the handle with the given callback, which will watch the specified path ---Start the handle with the given callback, which will watch the specified path
@@ -2638,6 +2719,8 @@ uv_fs_event_t.stop = uv.fs_event_stop
function uv.fs_event_getpath() end function uv.fs_event_getpath() end
uv_fs_event_t.getpath = uv.fs_event_getpath uv_fs_event_t.getpath = uv.fs_event_getpath
--- ---
---FS Poll handles allow the user to monitor a given path for changes. Unlike ---FS Poll handles allow the user to monitor a given path for changes. Unlike
---`uv_fs_event_t`, fs poll handles use `stat` to detect when a file has changed so ---`uv_fs_event_t`, fs poll handles use `stat` to detect when a file has changed so
@@ -2651,11 +2734,11 @@ local uv_fs_poll_t = {}
---Creates and initializes a new `uv_fs_poll_t`. ---Creates and initializes a new `uv_fs_poll_t`.
---Returns the Lua userdata wrapping it. ---Returns the Lua userdata wrapping it.
--- ---
---@return uv_fs_poll_t|nil, string? err_name, string? err_msg ---@return uv_fs_poll_t
---@nodiscard ---@nodiscard
function uv.new_fs_poll() end function uv.new_fs_poll() end
-- TODO: make sure that the above methof can indeed return nil + error. -- TODO: make sure that the above method can indeed return nil + error.
-- confirmed to never return error see libuv/fs-poll#uv_fs_poll_init -- confirmed to never return error see libuv/fs-poll#uv_fs_poll_init
--- ---
@@ -2687,6 +2770,8 @@ uv_fs_poll_t.stop = uv.fs_poll_stop
function uv.fs_poll_getpath() end function uv.fs_poll_getpath() end
uv_fs_poll_t.getpath = uv.fs_poll_getpath uv_fs_poll_t.getpath = uv.fs_poll_getpath
--- ---
---@section File system operations ---@section File system operations
--- ---
@@ -2867,7 +2952,7 @@ local luv_dir_t = {}
---A bitwise OR mask. ---A bitwise OR mask.
---|integer ---|integer
---@alias uv.aliases.fs_readdir_entries {type: uv.aliases.fs_types, name: string} ---@alias uv.aliases.fs_readdir_entries {type: uv.aliases.fs_types, name: string}[]
---@alias uv.aliases.fs_symlink_flags {dir: boolean, junction: boolean} ---@alias uv.aliases.fs_symlink_flags {dir: boolean, junction: boolean}
@@ -3547,7 +3632,7 @@ function uv.fs_opendir(path, entries, callback) end
function uv.fs_opendir(path, entries) end function uv.fs_opendir(path, entries) end
--- ---
---Iterates over the directory stream `uv_dir_t` returned by a successful ---Iterates over the directory stream `luv_dir_t` returned by a successful
---`uv.fs_opendir()` call. A table of data tables is returned where the number ---`uv.fs_opendir()` call. A table of data tables is returned where the number
---of entries `n` is equal to or less than the `entries` parameter used in ---of entries `n` is equal to or less than the `entries` parameter used in
---the associated `uv.fs_opendir()` call. ---the associated `uv.fs_opendir()` call.
@@ -3586,6 +3671,8 @@ function uv.fs_statfs(path, callback) end
---@nodiscard ---@nodiscard
function uv.fs_statfs(path) end function uv.fs_statfs(path) end
--- ---
---Libuv provides a threadpool which can be used to run user code and get notified ---Libuv provides a threadpool which can be used to run user code and get notified
---in the loop thread. This threadpool is internally used to run all file system ---in the loop thread. This threadpool is internally used to run all file system
@@ -3638,6 +3725,8 @@ function uv.new_work(work_callback, after_work_callback) end
function uv.queue_work(work_ctx, ...) end function uv.queue_work(work_ctx, ...) end
luv_work_ctx_t.queue = uv.queue_work luv_work_ctx_t.queue = uv.queue_work
--- ---
---@section DNS utility functions ---@section DNS utility functions
--- ---
@@ -3679,6 +3768,8 @@ function uv.getnameinfo(address, callback) end
---@return string|nil host, string service_or_errname, string? err_msg ---@return string|nil host, string service_or_errname, string? err_msg
function uv.getnameinfo(address) end function uv.getnameinfo(address) end
--- ---
---Libuv provides cross-platform implementations for multiple threading an ---Libuv provides cross-platform implementations for multiple threading an
--- synchronization primitives. The API largely follows the pthreads API. --- synchronization primitives. The API largely follows the pthreads API.
@@ -3687,6 +3778,8 @@ function uv.getnameinfo(address) end
---@section Threading and synchronization utilities ---@section Threading and synchronization utilities
local luv_thread_t = {} local luv_thread_t = {}
---@alias uv.aliases.thread_affinity {[integer]: boolean}
--- ---
---Creates and initializes a `luv_thread_t` (not `uv_thread_t`). Returns the Lua ---Creates and initializes a `luv_thread_t` (not `uv_thread_t`). Returns the Lua
---userdata wrapping it and asynchronously executes `entry`, which can be ---userdata wrapping it and asynchronously executes `entry`, which can be
@@ -3694,20 +3787,22 @@ local luv_thread_t = {}
---are passed to the `entry` function and an optional `options` table may be ---are passed to the `entry` function and an optional `options` table may be
---provided. Currently accepted `option` fields are `stack_size`. ---provided. Currently accepted `option` fields are `stack_size`.
--- ---
---**Note** unsafe, please make sure the thread end of life before Lua state close.
---
---@generic T: uv.aliases.threadargs ---@generic T: uv.aliases.threadargs
---@param options? {stack_size?: integer} ---@param options? {stack_size?: integer}
---@param entry fun(...: T)|string ---@param entry fun(...: T)|string
---@vararg T # varargs passed to `entry` ---@vararg T # varargs passed to `entry`
---@return luv_thread_t ---@return luv_thread_t?, string? err_name, string? err_msg
function uv.new_thread(options, entry, ...) end function uv.new_thread(options, entry, ...) end
---@generic T: uv.aliases.threadargs ---@generic T: uv.aliases.threadargs
---@param entry fun(...: T)|string ---@param entry fun(...: T)|string
---@vararg T # varargs passed to `entry` ---@vararg T # varargs passed to `entry`
---@return luv_thread_t ---@return luv_thread_t?, string? err_name, string? err_msg
function uv.new_thread(entry, ...) end function uv.new_thread(entry, ...) end
-- TODO: make sure that the above method can indeed return nil + error. -- TODO: make sure that the above method can indeed return nil + error.
-- confirmed to not return error see luv/thread.c#luv_new_thread -- new_thread may fail if pthread fails.
--- ---
---Returns a boolean indicating whether two threads are the same. This function is ---Returns a boolean indicating whether two threads are the same. This function is
@@ -3719,10 +3814,68 @@ function uv.new_thread(entry, ...) end
function uv.thread_equal(thread, other_thread) end function uv.thread_equal(thread, other_thread) end
luv_thread_t.equal = uv.thread_equal luv_thread_t.equal = uv.thread_equal
---
---Sets the specified thread's affinity setting.
---
---`affinity` must be a table where each of the keys are a CPU number and the
---values are booleans that represent whether the `thread` should be eligible to
---run on that CPU. If the length of the `affinity` table is not greater than or
---equal to `uv.cpumask_size()`, any CPU numbers missing from the table will have
---their affinity set to `false`. If setting the affinity of more than
---`uv.cpumask_size()` CPUs is desired, `affinity` must be an array-like table
---with no gaps, since `#affinity` will be used as the `cpumask_size` if it is
---greater than `uv.cpumask_size()`.
---
---If `get_old_affinity` is `true`, the previous affinity settings for the `thread`
---will be returned. Otherwise, `true` is returned after a successful call.
---
---**Note:** Thread affinity setting is not atomic on Windows. Unsupported on macOS.
---
---@param thread luv_thread_t
---@param affinity uv.aliases.thread_affinity
---@param get_old_affinity? boolean
---@return boolean|uv.aliases.thread_affinity|nil, string? err_name, string? err_msg
function uv.thread_setaffinity(thread, affinity, get_old_affinity) end
luv_thread_t.setaffinity = uv.thread_setaffinity
-- TODO: the above probably needs to use overloads for the different returns.
-- TODO: the overload with the table return needs a @nodiscard.
---
---Gets the specified thread's affinity setting.
---
---If `mask_size` is provided, it must be greater than or equal to
---`uv.cpumask_size()`. If the `mask_size` parameter is omitted, then the return
---of `uv.cpumask_size()` will be used. Returns an array-like table where each of
---the keys correspond to a CPU number and the values are booleans that represent
---whether the `thread` is eligible to run on that CPU.
---
---**Note:** Thread affinity getting is not atomic on Windows. Unsupported on macOS.
---
---@param thread luv_thread_t
---@param mask_size? integer
---@return table?, string? err_name, string? err_msg
---@nodiscard
function uv.thread_getaffinity(thread, mask_size) end
luv_thread_t.getaffinity = uv.thread_getaffinity
---
---Gets the CPU number on which the calling thread is running.
---
---**Note:** The first CPU will be returned as the number 1, not 0. This allows for
---the number to correspond with the table keys used in `uv.thread_getaffinity` and
---`uv.thread_setaffinity`.
---
---@return integer?, string? err_name, string? err_msg
---@nodiscard
function uv.thread_getcpu() end
luv_thread_t.getcpu = uv.thread_getcpu
--- ---
---Returns the handle for the thread in which this is called. ---Returns the handle for the thread in which this is called.
--- ---
---@return luv_thread_t ---@return luv_thread_t
---@nodiscard
function uv.thread_self() end function uv.thread_self() end
--- ---
@@ -3739,6 +3892,8 @@ luv_thread_t.join = uv.thread_join
---@param msec integer ---@param msec integer
function uv.sleep(msec) end function uv.sleep(msec) end
--- ---
---@section Miscellaneous utilities ---@section Miscellaneous utilities
---@source misc.c ---@source misc.c
@@ -3754,6 +3909,8 @@ function uv.sleep(msec) end
---@alias uv.aliases.interface_addresses {[string]: {ip: string, family: uv.aliases.network_family, netmask: string, internal: boolean, mac: string}} ---@alias uv.aliases.interface_addresses {[string]: {ip: string, family: uv.aliases.network_family, netmask: string, internal: boolean, mac: string}}
---@alias uv.aliases.clock_gettime_rtn {sec: integer, nsec: integer}
--- ---
---Returns the executable path. ---Returns the executable path.
--- ---
@@ -3813,6 +3970,16 @@ function uv.get_free_memory() end
---@nodiscard ---@nodiscard
function uv.get_constrained_memory() end function uv.get_constrained_memory() end
---
---Gets the amount of free memory that is still available to the process (in
---bytes). This differs from `uv.get_free_memory()` in that it takes into account
---any limits imposed by the OS. If there is no such constraint, or the constraint
---is unknown, the amount returned will be identical to `uv.get_free_memory()`.
---
---@return number
---@nodiscard
function uv.get_available_memory() end
--- ---
---Returns the resident set size (RSS) for the current process. ---Returns the resident set size (RSS) for the current process.
--- ---
@@ -3848,6 +4015,14 @@ function uv.available_parallelism() end
---@nodiscard ---@nodiscard
function uv.cpu_info() end function uv.cpu_info() end
---
---Returns the maximum size of the mask used for process/thread affinities, or
---`ENOTSUP` if affinities are not supported on the current platform.
---
---@return integer|nil, string? err_name, string? err_msg
---@nodiscard
function uv.cpumask_size() end
--- ---
---**Deprecated:** Please use `uv.os_getpid()` instead. ---**Deprecated:** Please use `uv.os_getpid()` instead.
--- ---
@@ -3900,6 +4075,21 @@ function uv.setgid(id) end
---@nodiscard ---@nodiscard
function uv.hrtime() end function uv.hrtime() end
---
---Obtain the current system time from a high-resolution real-time or monotonic
---clock source. `clock_id` can be the string `"monotonic"` or `"realtime"`.
---
---The real-time clock counts from the UNIX epoch (1970-01-01) and is subject
---to time adjustments; it can jump back in time.
---
---The monotonic clock counts from an arbitrary point in the past and never
---jumps back in time.
---
---@param clock_id string
---@return uv.aliases.clock_gettime_rtn?, string? err_name, string? err_msg
---@nodiscard
function uv.clock_gettime(clock_id) end
--- ---
---Returns the current system uptime in seconds. ---Returns the current system uptime in seconds.
--- ---
@@ -4124,11 +4314,15 @@ function uv.random(len, flags) end
---@nodiscard ---@nodiscard
function uv.translate_sys_error(errcode) end function uv.translate_sys_error(errcode) end
--- ---
---@section Metrics operations ---@section Metrics operations
---@source metrics.c ---@source metrics.c
--- ---
---@alias uv.aliases.metric_info_rtn {loop_count: integer, events: integer, events_waiting: integer}
--- ---
---Retrieve the amount of time the event loop has been idle in the kernels event ---Retrieve the amount of time the event loop has been idle in the kernels event
---provider (e.g. `epoll_wait`). The call is thread safe. ---provider (e.g. `epoll_wait`). The call is thread safe.
@@ -4143,6 +4337,17 @@ function uv.translate_sys_error(errcode) end
---@nodiscard ---@nodiscard
function uv.metrics_idle_time() end function uv.metrics_idle_time() end
---
---Get the metrics table from current set of event loop metrics. It is recommended
---to retrieve these metrics in a `prepare` callback (see `uv.new_prepare`,
---`uv.prepare_start`) in order to make sure there are no inconsistencies with the
---metrics counters.
---
---@return uv.aliases.metric_info_rtn
---@nodiscard
function uv.metrics_info() end
-- [[ constants ]] -- [[ constants ]]
-- TODO: make this its own section -- TODO: make this its own section