Open-Source Wikis

/

Neovim

/

Reference

/

Dependencies

neovim/neovim

Dependencies

Third-party libraries bundled into Neovim. The canonical source of truth is cmake.deps/deps.txt. Versions below are accurate as of 2026-04-30.

Bundled libraries

All of these are downloaded by CMake during the deps build (make deps) and statically linked into the nvim binary by default (USE_BUNDLED=1).

Library Purpose Pinned version
libuv Cross-platform async I/O. The event-loop substrate. v1.52.1
LuaJIT The Lua interpreter shipped in the binary. commit 18b087cd2c
Lua 5.1 Reference Lua implementation. Used as a fallback (-DPREFER_LUA=ON) and in tests. 5.1.5
luv Lua bindings to libuv. Powers vim.uv. 1.52.1-0
lpeg Parsing-Expression-Grammar library. Powers vim.lpeg, vim.re, the LuaCATS parser. 1.1.0
lua-compat-5.3 Lua 5.1 ↔ 5.3 compatibility shims. v0.13
unibilium Terminfo parser (the Neovim fork). Used by the TUI. v2.1.2
tree-sitter Incremental parser library. (pinned in deps.txt)
tree-sitter-c, -lua, -vim, -vimdoc, -markdown, -bash, -query Bundled grammars. (pinned per parser)
gettext, libiconv Internationalization (downloaded only on platforms that don't ship them).
win32yank Windows clipboard helper. v0.1.1

In-tree forks

Libraries Neovim has fully forked and no longer tracks upstream. Documented at the top of runtime/doc/dev_arch.txt.

Library Location Notes
libvterm src/nvim/vterm/ The in-process terminal emulator used by :terminal and vim.system({pty=true}).
libtermkey src/nvim/tui/termkey/ The escape-sequence keyboard decoder used by the TUI.

Vendored sources

Libraries Neovim does not own — they are synced from upstream periodically.

Library Location Purpose
cjson src/cjson/ JSON codec used by the Vimscript json_* functions.
mpack src/mpack/ msgpack codec used by msgpack-rpc and shada.
klib src/nvim/klib/ kvec.h, hash maps, intrusive containers.
xdiff src/xdiff/ LibXDiff. Powers vim.diff and :diffthis.
tee, xxd src/tee/, src/xxd/ Tiny utilities packaged with the Windows artifact.

Build-time dependencies

Required at build time but not linked into the binary:

Tool Purpose
CMake (≥ 3.16) Build system.
Ninja (recommended) Faster parallel builds.
GCC/Clang/MSVC C compiler with C99 support.
xgettext, msgfmt Build translations (optional).
python3 Some build helpers.
ccache / sccache (optional) Speeds up iterative builds.
gperf Hash table generation.

Runtime dependencies

The nvim binary itself is statically linked against the bundled deps, but the user's system must provide a few things:

  • A POSIX or Windows kernel — no other system dep is hard-required.
  • Optionally: a C compiler for tree-sitter grammar compilation (when users add new grammars).
  • Optionally: python3 + pynvim for plugins that need the Python provider.
  • Optionally: node + neovim npm package for the Node provider.
  • Optionally: git for vim.pack.

Health checks (:checkhealth) report which optional bits are missing and what they would enable.

Updating a dependency

  1. Bump the URL and SHA256 in cmake.deps/deps.txt.
  2. Run make distclean && make deps. The hash check confirms the download matches.
  3. Run make. If anything broke, fix the bindings.
  4. Test: make functionaltest.
  5. Commit with build(deps): prefix.

To bisect a dependency bug, set LIBUV_URL (or whichever) to a local path and set DEPS_IGNORE_SHA=TRUE in cmake.deps/CMakeLists.txt. Run make distclean between each rebuild.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Dependencies – Neovim wiki | Factory