🍺 BREW Explorer

← all formulae

epoll-shim

brew install epoll-shim v0.0.20240608 MIT

Small epoll implementation using kqueue

11
30-day installs · #8440
25
90-day · #9151
89
365-day · #9489
117
★ GitHub stars · updated 1y ago

Build dependencies

Links

Raw metadata
{
  "aliases": [],
  "alternatives": [],
  "build_dependencies": [
    "cmake"
  ],
  "categories": [],
  "caveats": null,
  "conflicts_with": [],
  "dependencies": [],
  "deprecated": 0,
  "deprecation_reason": null,
  "desc": "Small epoll implementation using kqueue",
  "disable_reason": null,
  "disabled": 0,
  "enrichment_fetched_at": "2026-06-20T23:37:21+00:00",
  "first_seen": "2026-06-20T23:34:18+00:00",
  "full_name": "epoll-shim",
  "github_default_branch": "master",
  "github_last_commit_at": "2024-12-07T07:02:19Z",
  "github_readme_excerpt": "# epoll-shim\n\nThis is a small library that implements epoll on top of kqueue.\nIt has been successfully used to port libinput, libevdev, Wayland and more\nsoftware to FreeBSD: \u003chttps://www.freshports.org/devel/libepoll-shim/\u003e\n\nIt may be useful for porting other software that uses epoll as well.\n\nThere are some tests inside `test/`. They should also compile under Linux and\ncan be used to verify proper epoll behavior.\n\nSadly, this library contains some very ugly hacks and workarounds. For example:\n\n- When using `timerfd`, `signalfd` or `eventfd`, the system calls `read`,\n  `write` and `close` are redefined as macros to internal helper functions.\n  This is needed as there is some internal context that has to be free\u0027d\n  properly. This means that you shouldn\u0027t create a `timerfd`/`signalfd` in\n  one part of a program and close it in a different part where\n  `sys/timerfd.h` isn\u0027t included. The context would leak. Luckily, software\n  such as libinput behaves very nicely and puts all `timerfd` related code in\n  a single source file.\n\n  Alternatively, a target/library `epoll-shim-interpose` is also provided.\n  Instead of redefining those symbols as macros they are provided as \"proper\"\n  symbols, making use of POSIX `dlsym` chaining with `RTLD_NEXT`.\n\n  What approach is more suitable depends on the application: If the use of\n  `epoll` is very localized the macro based approach is less overhead. If the\n  use of those file descriptors is more pervasive, the interposition approach\n  is more robust. It will be a bit less performant because all calls to\n  `read`/`write`/`close` and so on will be routed through `epoll-shim`.\n\n- There is limited support for file descriptors that lack support for\n  kqueue but are supported by `poll(2)`. This includes graphics or sound\n  devices under `/dev`. Those descriptors are handled in an outer `poll(2)`\n  loop. Edge triggering using `EPOLLET` will not work.\n\n- Shimmed file descriptors cannot be shared between processes. On `fork()`\n  those fds ar",
  "github_repo": "jiixyj/epoll-shim",
  "github_stars": 117,
  "github_topics": [],
  "homepage": "https://github.com/jiixyj/epoll-shim",
  "homepage_og_description": null,
  "homepage_og_image": null,
  "homepage_title": null,
  "installs_30d": 11,
  "installs_365d": 89,
  "installs_90d": 25,
  "keg_only": 0,
  "keg_only_reason": null,
  "last_seen": "2026-06-20T23:34:18+00:00",
  "license": "MIT",
  "llm_generated_at": null,
  "llm_model": null,
  "name": "epoll-shim",
  "oldnames": [],
  "one_liner": null,
  "optional_dependencies": [],
  "rank_30d": 8440,
  "rank_365d": 9489,
  "rank_90d": 9151,
  "raw_hash": "e407f890eee78d47",
  "recommended_dependencies": [],
  "revision": 0,
  "ruby_source_path": "Formula/e/epoll-shim.rb",
  "tap": "homebrew/core",
  "test_dependencies": [],
  "uses_from_macos": [],
  "version_head": null,
  "version_stable": "0.0.20240608",
  "versioned_formulae": [],
  "why_use_this": null
}