Open-Source Wikis

/

Neovim

/

By the numbers

neovim/neovim

By the numbers

A snapshot of the Neovim codebase. Data collected on 2026-04-30 from master at commit 83ee06463b.

Size

Metric Value
Lines of C in src/nvim/ (*.c) ~337,114
Lines of C headers in src/nvim/ (*.h) ~20,741
Lines of Lua in runtime/lua/ ~94,526
C source files in src/nvim/ 189
C header files in src/nvim/ 265
Lua data files in src/nvim/ 7
Lua files in runtime/lua/ 146
Lua test files (test/functional/ + test/unit/) 579
Tagged releases visible in git tag 60+ (latest stable: v0.12.2)
xychart-beta horizontal
    title "Source size by language (KLOC)"
    x-axis ["C (src/nvim)", "Lua (runtime/lua)", "C headers (src/nvim)"]
    y-axis "KLOC" 0 --> 350
    bar [337, 95, 21]

The C tree is dominated by a small set of very large files: regexp.c (16,309 lines), options.lua (10,956 lines), eval.c (6,972 lines), normal.c (6,685 lines). These are not unusual for a Vim derivative — Vim's monoliths were inherited and have been refactored down rather than rewritten wholesale.

Activity

Metric Value
Total commits since 2014-01-31 36,405
Commits in the last 90 days 1,204
Commits in the last 365 days ~3,839
Commits since 2024-01-01 8,217
Recent monthly commit volume ~290–420 commits/month

Commit cadence over the last ten months:

Month Commits
2025-07 288
2025-08 308
2025-09 313
2025-10 311
2025-11 223
2025-12 302
2026-01 349
2026-02 362
2026-03 398
2026-04 421

Activity is steady and slightly trending up. There is no obvious slack period over the past year.

Bot-attributed commits

Pattern Commits matched
Author or message contains factory-droid, dependabot, copilot, or github-actions 41

That is well under 0.2% of the all-time commit total. Most automated activity in this repo is captured as workflow-driven PRs whose final commit is authored by a human reviewer; the figure above is a lower bound on automated involvement.

Releases

Recent tagged releases:

Tag Date
nightly 2026-04-29
v0.12.2 (stable) 2026-04-22
v0.12.1 2026-04-06
v0.12.0 2026-03-29
v0.11.7 2026-03-28
v0.11.6 2026-01-26
v0.11.5 2025-11-02
v0.11.4 2025-08-31
v0.11.3 2025-07-12
v0.11.2 2025-05-30
v0.11.1 2025-04-26
v0.11.0 2025-03-26
v0.10.0 2024-05-16

Cadence: a 0.x.0 release roughly once a year, with a steady stream of point releases in between. The nightly tag is moved by the release workflow on every default-branch push.

Complexity hotspots

The biggest C files in src/nvim/:

File Lines
src/nvim/regexp.c 16,309
src/nvim/options.lua (data) 10,956
src/nvim/eval.c 6,972
src/nvim/normal.c 6,685
src/nvim/ex_docmd.c ~6,500
src/nvim/spellfile.c ~5,800
src/nvim/window.c ~7,500
src/nvim/spell.c / spellsuggest.c ~3,500 each

These mostly correspond to the Vim-inherited core that has been the slowest to factor out. New feature work tends to land in Lua under runtime/lua/vim/ or in narrowly scoped C files like src/nvim/marktree.c and src/nvim/decoration.c.

API surface

Major API source files in src/nvim/api/:

File Lines
vim.c 2,577
win_config.c 1,530
buffer.c 1,430
extmark.c 1,374
command.c 1,341
ui.c 1,039
autocmd.c 878

Each of those files exposes ~10–60 public nvim_* functions to the RPC channel and to Lua via vim.api.*.

TODOs / FIXMEs

Total TODO, FIXME, HACK, and XXX markers across all *.c files in src/nvim/: ~402.

That works out to roughly one every ~840 lines of C. The bar for a TODO living in the tree is high; most are genuine "this is a Vim quirk" notes or "blocked on upstream" comments rather than aspirational scratch.

Test coverage in numbers

The Lua test suite is the larger of the two:

  • 579 *.lua files under test/
  • ~3,500 it(...) and describe(...) cases across the functional suite (rough order of magnitude, not exact).

Functional tests run a real nvim child process. Unit tests in test/unit/ use FFI to call C functions directly and are useful for the bits of the C tree that are hard to reach through the editor UI (the marktree, the typval encoder, the path utilities).

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

By the numbers – Neovim wiki | Factory