Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 56b3d76

Browse files
committedSep 26, 2021
news: 0.5.1
1 parent 930ba06 commit 56b3d76

File tree

1 file changed

+154
-0
lines changed

1 file changed

+154
-0
lines changed
 

‎_posts/2021-09-26-newsletter.md

+154
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
---
2+
layout: newsletter
3+
title: "Neovim News #12 - The Work Continues"
4+
category: newsletter
5+
permalink: /news/2021/09
6+
---
7+
8+
> The Citadel stripped me of it. They found some of my... experiments... too bold.
9+
>
10+
> —Qyburn
11+
12+
Nvim 0.5.1 has been released, it includes many fixes and some breaking changes:
13+
14+
- ...
15+
- ...
16+
17+
## Velocity
18+
19+
Lua-first development is now a central practice in the Neovim project.
20+
21+
We started with everything tucked into `vim.lsp`. The community began heavily
22+
building on `vim.lsp.diagnostic`, it became clear that this "diagnostic"
23+
concept had more general value beyond only LSP.
24+
The development of `vim.diagnostic` diagnostic framework from concept, to
25+
interface design, to delivery was a matter of weeks, thanks to @gpanders.
26+
27+
The `vim.diagnostic` API is available in Nvim master (unreleased 0.6) and we are considering it for 0.5.2 stable release.
28+
29+
Thoug the Nvim RPC API is bound by a sacred
30+
[contract](https://neovim.io/doc/user/api.html#api-contract), in other ares of Nvim we are now more
31+
aggressively deprecating and reworking interfaces. We are fundamentally committed to backwards compatibility for the RPC API and will eventually adopt that commitment in the Lua interface. Meanwhile, we reserve the option of breaking things in Lua-land. Such breakage is collected and announced in the [Following HEAD](https://github.com/neovim/neovim/issues/14090) thread.
32+
33+
This liberty has allowed us to move 10x faster.
34+
35+
### Lua plugins
36+
37+
@bfredl continues to improve Lua and Vimscript "runtime path" behavior to be intuitive, useful, and fast.
38+
39+
The model of "core framework, external dust cloud" has proven out. nvim-treesitter external project is heavily experimenting and some of its ancillary efforts such as UI "widgets" are finding their way back to core.
40+
41+
nvim-lspconfig saw heavy churn for 1+ years and is now settling down. Some of its utilities such as `:LspInfo` and the "root finder" mechanism are being considered as core Nvim feature.
42+
43+
### Lua config
44+
45+
Nvim supports `init.lua` as user config since 0.5, and in 0.6. we are working on `nvim -l` to support invoking Lua "main" scripts with `nvim`.
46+
47+
## Language Server Protocol (LSP)
48+
49+
The [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) is an
50+
open, JSON-RPC protocol for communication between code editors and
51+
language servers, which provide programming language-specific features such as
52+
completion, hover/tooltips, go to definition, show/go to references, show
53+
method signatures, rename, refactoring.
54+
55+
Nvim's builtin [`vim.lsp`](https://neovim.io/doc/user/lsp.html) [LSP framework](https://www.youtube.com/watch?v=ArwDgvYEZYk)
56+
plus [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) quickstart collection has been a major success,
57+
demonstrating the viability of shipping ambitious ideas in core Nvim using Lua.
58+
Nvim core developers use it to accelerate their work in Nvim's C and Lua source code.
59+
60+
Work on [semantic highlighting](https://github.com/neovim/neovim/pull/14122) continues.
61+
62+
## Tree-sitter
63+
64+
Work on [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) parser integration continues: performance, bug-fixes.
65+
66+
Also, Neovim itself only provides a (Lua) API for generating and querying the syntax tree using the bundled tree-sitter library; see [`:h treesitter`](https://neovim.io/doc/user/treesitter.html). User-facing features like the ones mentioned above are implemented in plugins like
67+
68+
## Defaults
69+
70+
Nvim `master` branch has implemented a new [batch of improvements](https://github.com/neovim/neovim/issues/6289) to the [editor defaults](https://neovim.io/doc/user/vim_diff.html#nvim-defaults).
71+
72+
Having now established patterns for "default autocommands" and "default
73+
mappings", we will use this mechanism liberally to make quality-of-life
74+
improvements to `nvim -u NONE` without breaking scripts.
75+
76+
Notable changes are:
77+
78+
- the 'backupdir' option now [auto-creates its directory](https://github.com/neovim/neovim/pull/15433), as the 'undodir' and 'directory' (swapfile) options already do
79+
- `<C-L>` has a default mapping which clears `/` search highlighting
80+
- 'inccommand' (live preview of the `:substitute` command) is enabled by default
81+
- `Y` has a [default mapping](https://github.com/neovim/neovim/pull/13268) so that it behaves like `D` and `C` 🙀
82+
83+
## Feedback loop
84+
85+
Your feedback helps us. We considered removing the 'backspace' option and decided to keep it based on comments explaining the use cases for some of its non-default behavior. We also asked about `:hardcopy` and found that it's relatively unknown but still sees usage; we will not remove its implementation until we have a complete answer for inscribing your pixels to paper.
86+
87+
88+
89+
## Engineering
90+
91+
`vim.mpack` now exposes a Lua-first messagepack encoder/decoder without
92+
marshalling through Vimscript. This also sets the stage for eliminating
93+
a dependency on libmsgpack in favor of libmpack.
94+
95+
`vim.json` exposes a Lua-first JSON encoder/decoder without marshalling through
96+
Vimscript. This performance gain is helpful in the LSP client, where JSON
97+
de/serialization dominates the cost of many client activities.
98+
99+
Nvim core team has fully migrated to GitHub Actions for CI, and we are leaning
100+
heavily on this to automate even more of our workflow.
101+
102+
Nvim C source code is now fully reformatted to match our [style
103+
guide](https://neovim.io/doc/user/dev_style.html#dev-style), so that our
104+
development workflow favors auto-formatting instead of tedious human-driven
105+
compliance with the style guide. This is especially important for reducing
106+
friction of merging patches from upstream Vim.
107+
108+
Upstream improvements in libuv and Windows 10 allow us to eliminate our [libuv
109+
fork](https://github.com/neovim/libuv). Note that going forward we consider
110+
**Windows 8 or older is unsupported,** particularly for TUI/TTY bug reports.
111+
112+
### Vim patches
113+
114+
Of the over XXX commits in this release, about XXX were patches and runtime updates ported from Vim.
115+
116+
Nvim `master` branch is up-to-date with Vim runtime files.
117+
118+
119+
## Community
120+
121+
In keeping with the motto of this newsletter, one of the most noticeable positive changes was the growth of the community and of new ways of interacting with it.
122+
123+
### Discourse
124+
125+
Previously, support requests and discussions were spread across Reddit, Gitter, and GitHub Discussions and were either ephemeral or hard to search for. We have now consolidated around a new [Neovim Discourse](https://neovim.discourse.group), which is a free and open source forum platform with mailing list and RSS features, in addition to a nice web interface. The Neovim Discourse is an official core project and moderated by core team members.
126+
127+
### Matrix
128+
129+
The official chatroom for Neovim is on [matrix](https://app.element.io/#/room/#neovim:matrix.org).
130+
131+
### Vimconf.live
132+
133+
Community members and Neovim core developers will speak at [Vimconf.live](https://www.vimconf.live).
134+
135+
### Twitch
136+
137+
Neovim core developers @vigoux and [@tjdevries](https://www.twitch.tv/teej_dv) continue to stream on [Twitch](https://twitch.tv).
138+
139+
### Neovim development
140+
141+
Active Neovim developmers continues to grow. In the last three months, there were XXX unique commit authors.
142+
143+
## Sponsorship
144+
145+
You can now sponsor Neovim via [Github Sponsors](https://github.com/sponsors/neovim) or [OpenCollective](https://opencollective.com/neovim).
146+
147+
[BountySource](https://diziet.dreamwidth.org/5938.html) is no longer recommended.
148+
149+
## What's next?
150+
151+
[roadmap](https://neovim.io/roadmap/)
152+
153+
## Thanks
154+

0 commit comments

Comments
 (0)
Please sign in to comment.