libuv is a multi-platform
C library that provides support for
asynchronous I/O
In computer science, asynchronous I/O (also non-sequential I/O) is a form of input/output processing that permits other processing to continue before the transmission has finished. A name used for asynchronous I/O in the Windows API is overlap ...
based on
event loop In computer science, the event loop is a programming construct or design pattern that waits for and dispatches events or messages in a program. The event loop works by making a request to some internal or external "event provider" (that generally ...
s. It supports
epoll(4)
,
kqueue(2)
, Windows
IOCP
Input/output completion port (IOCP) is an API for performing multiple simultaneous asynchronous input/output operations in Windows NT versions 3.5 and later, AIX and on Solaris 10 and later. An input/output completion port object is created and as ...
, and
Solaris event ports. It is primarily designed for use in
Node.js but it is also used by other software projects.
It was originally an abstraction around
libev or Microsoft
IOCP
Input/output completion port (IOCP) is an API for performing multiple simultaneous asynchronous input/output operations in Windows NT versions 3.5 and later, AIX and on Solaris 10 and later. An input/output completion port object is created and as ...
, as
libev doesn't support IOCP on Windows. In node-v0.9.0's version of libuv, the dependency on libev was removed.
Features
From:
* Full-featured event loop backed by epoll, kqueue, IOCP, event ports
* Asynchronous
TCP
TCP may refer to:
Science and technology
* Transformer coupled plasma
* Tool Center Point, see Robot end effector
Computing
* Transmission Control Protocol, a fundamental Internet standard
* Telephony control protocol, a Bluetooth communication s ...
and
UDP sockets
* Asynchronous
DNS
The Domain Name System (DNS) is a hierarchical and distributed naming system for computers, services, and other resources in the Internet or other Internet Protocol (IP) networks. It associates various information with domain names assigned to ...
resolution
* Asynchronous file and
file system
In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one lar ...
operations
* File system events
*
ANSI escape code
ANSI escape sequences are a standard for in-band signaling to control cursor location, color, font styling, and other options on video text terminals and terminal emulators. Certain sequences of bytes, most starting with an ASCII escape ch ...
controlled
TTY
TTY may refer to:
Communications and technology
* Teleprinter or teletypewriter (TTY), an electromechanical typewriter paired with a communication channel
** Sometimes used more generally for any type of computer terminal
** Sometimes used for a v ...
*
IPC
IPC may refer to:
Computing
* Infrastructure protection centre or information security operations center
* Instructions per cycle or instructions per clock, an aspect of central-processing performance
* Inter-process communication, the sharin ...
with socket sharing, using
Unix domain socket
A Unix domain socket aka UDS or IPC socket ( inter-process communication socket) is a data communications endpoint for exchanging data between processes executing on the same host operating system. It is also referred to by its address family AF_U ...
s or
named pipe
In computing, a named pipe (also known as a FIFO for its behavior) is an extension to the traditional pipe concept on Unix and Unix-like systems, and is one of the methods of inter-process communication (IPC). The concept is also found in OS/ ...
s (Windows)
*
Child process
A child process in computing is a process created by another process (the parent process). This technique pertains to multitasking operating systems, and is sometimes called a subprocess or traditionally a subtask.
There are two major procedure ...
es
*
Thread
Thread may refer to:
Objects
* Thread (yarn), a kind of thin yarn used for sewing
** Thread (unit of measurement), a cotton yarn measure
* Screw thread, a helical ridge on a cylindrical fastener
Arts and entertainment
* ''Thread'' (film), 2016 ...
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 naming, but as people kept asking about it, so they made something up. They came up with
Unicorn
The unicorn is a legendary creature that has been described since Classical antiquity, antiquity as a beast with a single large, pointed, spiraling horn (anatomy), horn projecting from its forehead.
In European literature and art, the unicor ...
Velociraptor
''Velociraptor'' (; ) is a genus of small dromaeosaurid dinosaur that lived in Asia during the Late Cretaceous epoch, about 75 million to 71 million years ago. Two species are currently recognized, although others have been assigned in the p ...
, which became the logo of the library.
See also
*
libevent
*
libev
*
Reactor pattern
The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs. The service handler then demultiplexes the incoming requests and dispatches them synchrono ...
References
External links
*
* {{GitHub, libuv/libuv
An Introduction to libuvlibuv API documentation
C (programming language) libraries
Events (computing)
Free computer libraries