Libuv
{{Short description|Software library for asynchronous I/O}}
{{Use dmy dates|date=August 2017}}
{{lowercase|title=libevent}}
{{Infobox software
| name = libuv
| logo = libuv.svg
| screenshot =
| caption =
| collapsible =
| author =
| developer =
| released =
| latest release version = {{wikidata|property|reference|edit|P348}}
| latest release date = {{release date and age |{{wikidata|qualifier|P348|P577}}}}
| latest preview version =
| latest preview date =
| programming language = C
| operating system = Cross-platform
| platform = Linux, Android, Windows and OS X/Darwin,{{cite web |url=https://github.com/libuv/libuv |title=The libuv project page and source code| website=GitHub |accessdate=30 June 2016}} FreeBSD, OpenBSD
| size =
| language =
| genre = I/O abstraction library
| license = MIT
}}
libuv is a multi-platform C library that provides support for asynchronous I/O based on event loops. It supports epoll(4)
, kqueue(2)
, Windows IOCP, Solaris event ports and Linux io_uring. It is primarily designed for use in Node.js but it is also used by other software projects.{{cite web |title=Projects that use libuv |url=https://github.com/libuv/libuv/blob/v1.x/LINKS.md |website=libuv GitHub project page| accessdate=13 January 2025}} It was originally an abstraction around libev or Microsoft IOCP, as libev does not support IOCP on Windows. In node-v0.9.0's version of libuv, the dependency on libev was removed.[https://nikhilm.github.io/uvbook/introduction.html#background An introduction to libuv]
Features
- Full-featured event loop backed by epoll, kqueue, IOCP, event ports
- Asynchronous TCP and UDP sockets
- Asynchronous DNS resolution
- Asynchronous file and file system operations
- File system events
- ANSI escape code controlled TTY
- IPC with socket sharing, using Unix domain sockets or named pipes (Windows)
- Child processes
- Thread pool
- Signal handling
- High resolution clock
- Threading and synchronization primitives
Origin of the name
According to libuv developer Ben Noordhuis, the name libuv originally had no specific meaning, but as people kept asking about it, so they made something up. They came up with Unicorn Velociraptor, which became the logo of the library.{{Cite web |title=What does UV stand for in libuv? |url=https://groups.google.com/g/libuv/c/jGpqKLXAVBE |access-date=2022-06-07 |website=groups.google.com}}
See also
{{Portal|Free and open-source software}}
References
{{Reflist}}
External links
- {{official website}}
- {{GitHub|libuv/libuv}}
- [https://nikhilm.github.io/uvbook/ An Introduction to libuv]
- [http://docs.libuv.org/ libuv API documentation]
- [http://docs.libuv.org/en/latest/design.html libuv design overview]