🍺 BREW Explorer

← all formulae

luv

brew install luv v1.52.1-0 Apache-2.0

Lua bindings for libuv providing async I/O and event-loop capabilities to Lua and LuaJIT scripts.

Why you might care

Enables Lua scripts to perform non-blocking file, network, and timer operations via libuv's cross-platform event loop. Essential for async Lua frameworks like Luvit and projects needing high-performance I/O without callbacks hell. Direct libuv access gives you fine-grained control over handles and streams.

Categories

Alternatives

LuaSocket Copas async
6.8k
30-day installs · #474
35.3k
90-day · #350
145.1k
365-day · #339
935
★ GitHub stars · updated 2mo ago

Runtime dependencies

Build dependencies

GitHub topics

hacktoberfest libuv lua lua-bindings luajit luvit

Links

Blurb generated by claude-haiku-4-5 on today.

Raw metadata
{
  "aliases": [],
  "alternatives": [
    "LuaSocket",
    "Copas",
    "async"
  ],
  "build_dependencies": [
    "cmake",
    "lua",
    "luajit"
  ],
  "categories": [
    "binding",
    "library"
  ],
  "caveats": null,
  "conflicts_with": [],
  "dependencies": [
    "libuv"
  ],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "Bare libuv bindings for lua",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:40:53+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "luv",
  "github_default_branch": "master",
  "github_last_commit_at": "2026-04-18T22:36:34Z",
  "github_readme_excerpt": "luv\n===\n\n[![Linux Build Status](https://github.com/luvit/luv/actions/workflows/ci.yml/badge.svg)](https://github.com/luvit/luv/actions/workflows/ci.yml)\n[![Windows Build status](https://ci.appveyor.com/api/projects/status/uo1qhdcc0vcqsiok/branch/master?svg=true)](https://ci.appveyor.com/project/racker-buildbot/luv/branch/master)\n\n[libuv](https://github.com/libuv/libuv) bindings for\n[luajit](http://luajit.org/) and [lua](http://www.lua.org/)\n[5.1](http://www.lua.org/manual/5.1/manual.html)/\n[5.2](http://www.lua.org/manual/5.2/manual.html)/\n[5.3](http://www.lua.org/manual/5.3/manual.html)/\n[5.4](http://www.lua.org/manual/5.4/manual.html).\n\nThis library makes libuv available to lua scripts.  It was made for the [luvit](http://luvit.io/) project but should usable from nearly any lua project.\n\nThe library can be used by multiple threads at once.  Each thread is assumed to load the library from a different `lua_State`.  Luv will create a unique `uv_loop_t` for each state.  You can\u0027t share uv handles between states/loops.\n\n- [Luv docs](docs/docs.md)\n- [Libuv docs](http://docs.libuv.org/)\n\n```lua\nlocal uv = require(\u0027luv\u0027)\n\n-- Create a handle to a uv_timer_t\nlocal timer = uv.new_timer()\n\n-- This will wait 1000ms and then continue inside the callback\ntimer:start(1000, 0, function ()\n  -- timer here is the value we passed in before from new_timer.\n\n  print(\"Awake!\")\n\n  -- You must always close your uv handles or you\u0027ll leak memory\n  -- We can\u0027t depend on the GC since it doesn\u0027t know enough about libuv.\n  timer:close()\nend)\n\nprint(\"Sleeping\")\n\n-- uv.run will block and wait for all events to run.\n-- When there are no longer any active handles, it will return\nuv.run()\n```\n\n\nHere is an example of an TCP echo server\n```lua\nlocal uv = require(\u0027luv\u0027)\n\nlocal function create_server(host, port, on_connection)\n\n  local server = uv.new_tcp()\n  server:bind(host, port)\n\n  server:listen(128, function(err)\n    -- Make sure there was no problem setting up listen\n    assert(not err, err)\n\n    -",
  "github_repo": "luvit/luv",
  "github_stars": 935,
  "github_topics": [
    "hacktoberfest",
    "libuv",
    "lua",
    "lua-bindings",
    "luajit",
    "luvit"
  ],
  "homepage": "https://github.com/luvit/luv",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": 6752,
  "installs_365d": 145127,
  "installs_90d": 35316,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "Apache-2.0",
  "llm_generated_at": "2026-06-20T23:45:06+00:00",
  "llm_model": "claude-haiku-4-5",
  "name": "luv",
  "oldnames": [],
  "one_liner": "Lua bindings for libuv providing async I/O and event-loop capabilities to Lua and LuaJIT scripts.",
  "optional_dependencies": [],
  "rank_30d": 474,
  "rank_365d": 339,
  "rank_90d": 350,
  "raw_hash": "f163e602b7705f43",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/l/luv.rb",
  "tap": "homebrew/core",
  "test_dependencies": [
    "lua",
    "luajit"
  ],
  "uses_from_macos": [],
  "version_head": "HEAD",
  "version_stable": "1.52.1-0",
  "versioned_formulae": [],
  "why_use_this": "Enables Lua scripts to perform non-blocking file, network, and timer operations via libuv\u0027s cross-platform event loop. Essential for async Lua frameworks like Luvit and projects needing high-performance I/O without callbacks hell. Direct libuv access gives you fine-grained control over handles and streams."
}