• Stars
    star
    189
  • Rank 203,612 (Top 5 %)
  • Language
    Lua
  • License
    MIT License
  • Created about 10 years ago
  • Updated about 10 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

LuaJIT FFI binding for libuv

luajit-libuv build status

This project provides a LuaJIT FFI binding to libuv, the async I/O library powering Node.js. It uses Lua coroutines to provide non-blocking I/O with synchronous syntax.

For example, you can build a web server that performs I/O (like reading a file or talking to a database) while generating each response, and it will process multiple requests simultaneously.

local http = require 'uv.http'
local fs = require 'uv.fs'

http.listen('127.0.0.1', 8080, function(request)
  return { status = 200, body = fs.readfile('README.md') }
end)

Or you can perform multiple HTTP requests simultaneously.

local http = require 'uv.http'
local parallel = require 'uv.parallel'

local requests = {
  { url = 'http://www.google.com/' },
  { url = 'http://www.bing.com/' },
  { url = 'http://www.amazon.com/' },
}

local responses = parallel.map(requests, http.request)

Status

Not production ready. Under active development. The API is unstable.

Requirements

  • LuaJIT. Regular Lua won't run it. That said, you probably want LuaJIT anyway.

  • Standard build tools.

  • libuv and http-parser are bundled and do not need to be installed separately.

Installation

git clone https://github.com/pguillory/luajit-libuv.git
cd luajit-libuv
make
make install

API Reference

Functions are divided into submodules. Each submodule can either be required directly or accessed indirectly through the uv module:

local fs = require 'uv.fs'

local uv = require 'uv'
local fs = uv.fs

Contributing

Your contributions are welcome! Please verify that make test succeeds and submit your changes as a pull request.

See Also

Other people have done things like this.