Release of Neovim 0.7.0, a modernized version of the Vim editor

The release of Neovim 0.7.0, a fork of the Vim editor focused on increasing extensibility and flexibility, has been published. The project has been reworking the Vim codebase for more than seven years, as a result of which changes are made that simplify code maintenance, provide a means of dividing labor between several maintainers, separate the interface from the base part (the interface can be changed without touching the internals), and implement a new extensible architecture on plugin based. The original developments of the project are distributed under the Apache 2.0 license, and the base part is licensed under the Vim license. Ready builds are prepared for Linux (appimage), Windows and macOS.

One of the Vim problems that prompted the creation of Neovim is a bloated, monolithic codebase of over 300 lines of C code (C89). Only a few people understand all the nuances of the Vim codebase, and all changes are controlled by one maintainer, which makes it difficult to maintain and work on improving the editor. Instead of the code built into the Vim core to support the GUI, Neovim proposes to use a universal layer that allows you to create interfaces using various toolkits.

Plugins for Neovim are launched as separate processes, for interaction with which the MessagePack format is used. Interaction with plug-ins is performed in asynchronous mode, without blocking the basic components of the editor. A TCP socket can be used to access the plugin, i.e. the plugin can run on an external system. At the same time, Neovim remains backwards compatible with Vim, continues to support Vimscript (Lua is offered as an alternative) and supports the connection of most regular Vim plugins. The advanced features of Neovim can be used in plugins built using the Neovim-specific API.

Currently, about 130 specific plugins have already been prepared, bindings are available for creating plugins and implementing interfaces using various programming languages ​​(C ++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) and frameworks (Qt, ncurses, Node .js, Electron, GTK). Several user interface options are being developed. GUI add-ons are similar to plugins in many ways, but unlike plugins, they initiate calls to Neovim functions, while plugins are called from within Neovim.

The new version offers initial support for remote work, allowing you to run Neovim on the server and connect to it from the client system using a separate ui_client. Other changes include: support for Python 2 has been discontinued, the use of Lua functions in keymap has been allowed, new commands have been added to the API, the ability to use the Lua language for developing plugins and configuration management has been significantly expanded, tools for diagnosing problems in code have been improved, support for the global status bar has been added, performance optimizations have been carried out. The capabilities of the built-in LSP client (Language Server Protocol) have been expanded, which can be used to transfer the analysis logic and code completion to external servers.

Source: opennet.ru

Add a comment