Changes since version 0.11.13: * darwin: create fsevents thread on demand (Ben Noordhuis) * fsevents: FSEvents is most likely not thread-safe (Fedor Indutny) * fsevents: use shared FSEventStream (Fedor Indutny) * windows: make uv_fs_chmod() report errors correctly (Bert Belder) * windows: make uv_shutdown() for write-only pipes work (Bert Belder) * windows/fs: wrap multi-statement macros in do..while block (Bert Belder) * windows/fs: make uv_fs_open() report EINVAL correctly (Bert Belder) * windows/fs: handle _open_osfhandle() failure correctly (Bert Belder) * windows/fs: wrap multi-statement macros in do..while block (Bert Belder) * windows/fs: make uv_fs_open() report EINVAL correctly (Bert Belder) * windows/fs: handle _open_osfhandle() failure correctly (Bert Belder) * build: clarify instructions for Windows (Brian Kaisner) * build: remove GCC_WARN_ABOUT_MISSING_NEWLINE (Ben Noordhuis) * darwin: fix 10.6 build error in fsevents.c (Ben Noordhuis) * windows: run close callbacks after polling for i/o (Saúl Ibarra Corretgé) * include: clarify uv_tcp_bind() behavior (Ben Noordhuis) * include: clean up includes in uv.h (Ben Noordhuis) * include: remove UV_IO_PRIVATE_FIELDS macro (Ben Noordhuis) * include: fix typo in comment in uv.h (Ben Noordhuis) * include: update uv_is_active() documentation (Ben Noordhuis) * include: make uv_process_options_t.cwd const (Ben Noordhuis) * unix: wrap long lines at 80 columns (Ben Noordhuis) * unix, windows: make uv_is_*() always return 0 or 1 (Ben Noordhuis) * bench: measure total/init/dispatch/cleanup times (Ben Noordhuis) * build: use -pthread on sunos (Timothy J. Fontaine) * windows: remove duplicate check in stream.c (Ben Noordhuis) * unix: sanity-check fds before closing (Ben Noordhuis) * unix: remove uv__pipe_accept() (Ben Noordhuis) * unix: fix uv_spawn() NULL pointer deref on ENOMEM (Ben Noordhuis) * unix: don't close inherited fds on uv_spawn() fail (Ben Noordhuis) * unix: revert recent FSEvent changes (Ben Noordhuis) * fsevents: fix clever rescheduling (Fedor Indutny) * linux: ignore fractional time in uv_uptime() (Ben Noordhuis) * unix: fix SIGCHLD waitpid() race in process.c (Ben Noordhuis) * unix, windows: add uv_fs_event_start/stop functions (Saúl Ibarra Corretgé) * unix: fix non-synchronized access in signal.c (Ben Noordhuis) * unix: add atomic-ops.h (Ben Noordhuis) * unix: add spinlock.h (Ben Noordhuis) * unix: clean up uv_tty_set_mode() a little (Ben Noordhuis) * unix: make uv_tty_reset_mode() async signal-safe (Ben Noordhuis) * include: add E2BIG status code mapping (Ben Noordhuis) * windows: fix duplicate case build error (Ben Noordhuis) * windows: remove unneeded check (Saúl Ibarra Corretgé) * include: document pipe path truncation behavior (Ben Noordhuis) * fsevents: increase stack size for OSX 10.9 (Fedor Indutny) * windows: _snprintf expected wrong parameter type in string (Maks Naumov) * windows: "else" keyword is missing (Maks Naumov) * windows: incorrect check for SOCKET_ERROR (Maks Naumov) * windows: add stdlib.h to satisfy reference to abort (Sean Farrell) * build: fix check target for mingw (Sean Farrell) * unix: move uv_shutdown() assertion (Keno Fischer) * darwin: avoid calling GetCurrentProcess (Fedor Indutny) |
||
|---|---|---|
| include | ||
| m4 | ||
| src | ||
| test | ||
| .gitignore | ||
| .mailmap | ||
| android-configure | ||
| AUTHORS | ||
| autogen.sh | ||
| ChangeLog | ||
| checksparse.sh | ||
| common.gypi | ||
| configure.ac | ||
| gyp_uv | ||
| LICENSE | ||
| Makefile.am | ||
| Makefile.mingw | ||
| README.md | ||
| uv.gyp | ||
| vcbuild.bat | ||
libuv
libuv is a multi-platform support library with a focus on asynchronous I/O. It was primarily developed for use by Node.js, but it's also used by Mozilla's Rust language, Luvit, Julia, pyuv, and others.
Feature highlights
-
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
Community
Documentation
- include/uv.h — API documentation in the form of detailed header comments.
- An Introduction to libuv — An overview of libuv with tutorials.
- LXJS 2012 talk - High-level introductory talk about libuv.
- Tests and benchmarks - API specification and usage examples.
Build Instructions
For GCC there are two methods building: via autotools or via GYP. GYP is a meta-build system which can generate MSVS, Makefile, and XCode backends. It is best used for integration into other projects.
To build with autotools:
$ sh autogen.sh
$ ./configure
$ make
$ make check
$ make install
Windows
First, Python 2.6 or 2.7 must be installed as it is required by GYP.
Also, the directory for the preferred Python executable must be specified
by the PYTHON or Path environment variables.
To build with Visual Studio, launch a git shell (e.g. Cmd or PowerShell) and run vcbuild.bat which will checkout the GYP code into build/gyp and generate uv.sln as well as related project files.
To have GYP generate build script for another system, checkout GYP into the project tree manually:
$ mkdir -p build
$ git clone https://git.chromium.org/external/gyp.git build/gyp
Unix
Run:
$ ./gyp_uv -f make
$ make -C out
OS X
Run:
$ ./gyp_uv -f xcode
$ xcodebuild -project uv.xcodeproj -configuration Release -target All
Android
Run:
$ source ./android-configure NDK_PATH gyp
$ make -C out
Note for UNIX users: compile your project with -D_LARGEFILE_SOURCE and
-D_FILE_OFFSET_BITS=64. GYP builds take care of that automatically.
Supported Platforms
Microsoft Windows operating systems since Windows XP SP2. It can be built with either Visual Studio or MinGW. Consider using Visual Studio Express 2010 or later if you do not have a full Visual Studio license.
Linux using the GCC toolchain.
OS X using the GCC or XCode toolchain.
Solaris 121 and later using GCC toolchain.