Roadmap

Toward 0.1.0

Release 0.1.0 will be a proof of concept showing that Rust and C code can coexist.

The release will be complete when the rendering code has been fully migrated to safe Rust, with C code calling it only through an FFI layer. This release will be based on Neovim 0.13.

The goals for this release are:

  • Preserve established Vim editing behavior and existing plugin interfaces.
  • Move the rendering code into safe Rust while keeping an FFI layer so C code can call it.
  • Keep implementation logic in safe Rust and isolate unavoidable unsafe code at the language boundary.
  • Validate migrations with focused compatibility and behavior tests.
  • Document the implementation and provide clear build and installation guidance.
  • Document the migrated Rust code in the Rustvim Book, an mdBook explaining how the editor’s rendering code works.

Upstream roadmap

The inherited Neovim roadmap is presented below as upstream context. For the latest plans, see Neovim’s roadmap.

Upstream archive: This is the Neovim roadmap inherited when this website was forked. Its release numbers, plans, and completed work refer to Neovim. See the Rustvim roadmap for this project’s direction.

This is a high-level overview of the project direction. Detailed plans and priorities are tracked in milestones (tentative, may be changed or dropped at any time).

  • Version numbers (0.1, 0.2, …) track production releases. The next upcoming version has a (estimated) target date.
  • backlog holds low-priority items.
  • needs-owner holds zero-priority items (no feasible path to completion).

Next

Future (unknown release)

  • Prepare for 1.0
  • Redesign --remote
  • Redesign (simplify) remote plugin concept, eliminate :UpdateRemotePlugins
  • Unified event interface, nvim_on()
  • Multibuffer #30463
  • Lua remote plugin host
  • LSP: vim.lsp.server()
  • UI protocol: window layout events, messages
  • UI “block-level elements” so plugins can reason about regions
  • UI “affordance” indicator so users know which elements they can interact with

0.13 “Batteries Included”

  • ✅ Multicursor
  • ✅ CmdAtom: subscribe to any user action
  • ✅ Dot-repeat “just works” with any operator mapping (operatorfunc, :omap).
  • ✅ vim.async task abstraction, structured concurrency #34473
  • ✅ File-change detection (improved 'autoread') #37971
  • ✅ Image API: vim.ui.img
  • ✅ dir.lua directory browser (replaces netrw) #39723
  • ✅ Reimplement cmdwin as a normal buffer+window #40312
  • Interactive :! (:[range]terminal, :[range]write :term sudo tee %, …) #1496
  • Packspec, pkg.json
  • Remote-ssh

Completed

Here are the headline features of the previous releases; for details see the release notes.

0.12 “The year of Nvim OOTB”

  • Plugin manager (vim.pack) #34009
  • No more “Press ENTER” #27855
  • UI :connect, :restart #5035
  • Progress messages (demo)
  • LSP: 11+ new capabilities, :lsp command, default mappings, improved enable() and stop() behavior
  • API: nvim_open_tabpage(), enhanced nvim_open_win() + nvim_win_set_config()
  • Default statusline: diagnostics, progress-status
  • Prompt-buffer enhancements: multiline input/paste, undo/redo
  • Treesitter: incremental selection via in / an textobjects

0.11

0.10

  • Default colorscheme
  • LSP inlay hints
  • TermRequest, TermResponse
  • treesitter: builtin parsers for bash, markdown, python
  • vim.snippet
  • vim.iter
  • vim.lpeg, vim.re, vim.glob, vim.base64

0.9

0.8

  • LSP improvements (v3.16 spec coverage, configuration, LspAttach)
  • Lua API: vim.fs, vim.cmd{}, measure require() in --startuptime, :map/:command/:au can print Lua source location
  • treesitter API: use queries to define spellcheck regions (aka “spellsitter”)
  • vim.ui_attach()
  • UI and RPC performance
  • user-defined command preview
  • cmdheight=0
  • clickable statusline

0.7

  • Tree-sitter integration (highlighting, folds)
  • TUI: extended keys (CTRL-i vs TAB, SHIFT modifier, …!)
  • Global statusline: laststatus=3

0.6

  • Unified diagnostics API
  • Updated defaults

0.5 + 0.5.1

0.4

  • Lua “stdlib”
  • Externalized UI: multigrid
  • Externalized UI: floating windows
  • Externalized UI: messages

0.3.x

  • API: buffer update events
  • Vimscript expression parser: nvim_parse_expression()
  • Windows: MSVC support
  • 0.2.1 Built-in Lua:vim.api, :lua, nvim_execute_lua(), …
  • 0.2.1 Externalize UI components: cmdline, wildmenu
  • 0.2.1 Windows :terminal
  • 0.2.1 Pre-packaged “universal” binary for Linux

0.2.x

  • Windows support
  • Externalized UI: popumenu
  • Externalized UI: tabline
  • Pre-packaged builds for Windows and macOS

0.1.x

  • First public release
  • Publish a stable product that can be used as a benchmark for progress

What is Rustvim?

Rustvim is a Vim-based text editor whose implementation is being incrementally migrated to Rust, with an emphasis on compatibility and maintainability.

Participate

Follow development in the Rustvim repository and report bugs or request features.