O Neovim 0.7.0, um fork do editor Vim focado em aumentar a extensibilidade e a flexibilidade, foi lançado. O projeto vem reformulando o código-fonte do Vim há mais de sete anos, introduzindo mudanças que simplificam a manutenção do código, fornecem ferramentas para dividir o trabalho entre vários mantenedores, separam a interface do núcleo (a interface pode ser alterada sem afetar o código interno) e implementam uma nova arquitetura extensível baseada em plugins. O trabalho original do projeto é licenciado sob a licença Apache 2.0, e a parte principal é licenciada sob a licença Vim. As versões finalizadas estão disponíveis para download. Linux (appimage), Windows и macOS.
Um dos problemas do Vim que motivou a criação do Neovim foi sua base de código monolítica e inchada, composta por mais de 300 mil linhas de código C (C89). Apenas algumas pessoas entendem todas as nuances da base de código do Vim, e todas as alterações são controladas por um mantenedor, o que torna difícil manter e melhorar o editor. Em vez do código embutido no núcleo do Vim para suportar a GUI, o Neovim propõe o uso de uma camada universal que permite criar interfaces usando vários kits de ferramentas.
Plugins para Neovim são lançados como processos separados, para interação com os quais o formato MessagePack é usado. A interação com plugins é realizada de forma assíncrona, sem bloquear os componentes básicos do editor. Para acessar o plugin, um soquete TCP pode ser usado, ou seja, o plugin pode ser executado em um sistema externo. Ao mesmo tempo, o Neovim permanece compatível com versões anteriores do Vim, continua a oferecer suporte ao Vimscript (Lua é oferecido como alternativa) e oferece suporte a conexões para a maioria dos plug-ins padrão do Vim. Os recursos avançados do Neovim podem ser usados em plug-ins criados com APIs específicas do Neovim.
Atualmente já foram elaborados cerca de 130 plugins específicos, estão disponíveis bindings para criação de plugins e implementação de interfaces utilizando diversas linguagens de programação (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) e frameworks (Qt, ncurses, Node .js, Electron, GTK). Várias opções de interface de usuário estão sendo desenvolvidas. Os complementos da GUI são muito parecidos com os plug-ins, mas, diferentemente dos plug-ins, eles iniciam chamadas para funções do Neovim, enquanto os plug-ins são chamados de dentro do Neovim.
A nova versão oferece suporte inicial para trabalho remoto, permitindo que você execute o Neovim em... servidor e conectar-se a ele a partir do sistema cliente usando um ui_client separado. Outras mudanças incluem: o suporte ao Python 2 foi descontinuado, o uso de funções Lua em keymaps foi permitido, novos comandos foram adicionados à API, os recursos de uso do Lua para desenvolvimento de plugins e gerenciamento de configuração foram significativamente expandidos, as ferramentas de diagnóstico de código foram aprimoradas, o suporte à barra de status global foi adicionado e otimizações de desempenho foram implementadas. Os recursos do cliente LSP (Language Server Protocol) integrado foram expandidos, permitindo a externalização da lógica de análise de código e autocompletar. servidores.
Fonte: opennet.ru
