Open
Description
This post lists the conditions for declaring Nvim v1.0
. This is not a roadmap; the project roadmap is here: https://neovim.io/roadmap/
What is the plan for 1.0?
Stick to 0.x until the following conditions:
- we have a full picture of what the RPC API and Lua APIs look like, this means conventions for:
- function signatures (all RPC functions should have
opts
param and return aDict
to ensure ability to augment them without breaking back-compat) - naming conventions,
:help dev-api
:help dev-lua
- Lua: plugins can easily get Lua annotations metadata #22287
- Lua: structured concurrency, Promises, task pipelines #19624
- Lua: iterable stdlib #18585
- Lua stdlib: guidelines for raising errors #11311
- vimscript introspection / meta structure #19918
- function signatures (all RPC functions should have
- Remove
vim.opt
/vim.opt_local
/vim.opt_global
- Redesign the "remote plugin" concept: simplify remote plugins, massively #27949
- Redesign
--remote
docs: --remote alternatives #18414 - ✅
:checkhealth
reports use of deprecated RPC and Lua APIs. :lua foo.<tab>
completion should not suggest deprecated things.
1.0
Release 1.0 when we have fully-specified conventions for RPC API and Lua stdlib.
- During 0.x, and continuing through 1.x, we will aggressively deprecate interfaces. This means:
- they will be listed in
:help deprecated
, and - where possible they will be flagged by
vim.deprecate()
.
- they will be listed in
- No APIs will be removed from the RPC API during 1.x.
- Deprecated RPC APIs emit warnings in some visible place when used.
2.0
- REMOVE all deprecated things in the 2.0 release. See also
:help api-contract
. - Create
nvim_xx
functions that alias allnvim_xx2
functions.- Deprecate the existing
nvim_xx2
names. - Example:
nvim_exec
will aliasnvim_exec2
.nvim_exec2
will still exist but will be deprecated, and clients usingnvim_exec2
can easily migrate tonvim_exec
.
- Deprecate the existing