Lançamento do Neovim 0.7.0, uma versão modernizada do editor Vim

Foi lançado o Neovim 0.7.0, um fork do editor Vim, focado em aumentar a extensibilidade e flexibilidade. O projeto está em reestruturação da base de código do Vim há mais de sete anos, resultando em modificações que simplificam a manutenção do código, proporcionando meios de divisão de trabalho entre vários mantenedores, separando a interface da parte básica (a interface pode ser alterada sem mexer nas partes internas) e implementando uma nova arquitetura extensível baseada em plugins. As inovações do projeto estão sob licença Apache 2.0, enquanto a parte básica é licenciada sob a licença Vim. Compilações prontas estão disponíveis para Linux (appimage), Windows e macOS.

Entre os problemas do Vim que motivaram a criação do Neovim, destaca-se a base de código monolítica e inchada, composta por mais de 300 mil linhas de código em C (C89). Poucas pessoas compreendem todos os detalhes da base de código do Vim, e todas as alterações são controladas por um único mantenedor, o que dificulta a manutenção e o trabalho no aprimoramento do editor. Ao invés do código para suporte a GUI integrado ao núcleo do Vim, o Neovim propõe o uso de uma camada universal, permitindo a criação de interfaces utilizando diferentes kits de ferramentas.

Os plugins do Neovim são executados como processos separados, com os quais a interação é feita através do formato MessagePack. A comunicação com os plugins ocorre de forma assíncrona, sem bloquear os componentes básicos do editor. Um socket TCP pode ser usado para se conectar ao plugin, ou seja, o plugin pode ser executado em um sistema externo. Assim, o Neovim permanece compatível com versões anteriores do Vim, continua a suportar Vimscript (com Lua como alternativa) e suporta a conexão da maioria dos plugins padrão do Vim. As funcionalidades avançadas do Neovim podem ser utilizadas em plugins desenvolvidos com a API específica do Neovim.

Atualmente, já foram preparados cerca de 130 plugins específicos, com bindings disponíveis para a criação de plugins e implementações de interfaces usando várias linguagens de programação (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) e frameworks (Qt, ncurses, Node.js, Electron, GTK). Estão sendo desenvolvidas várias opções de interfaces de usuário. As extensões GUI se assemelham a plugins, mas, ao contrário dos plugins, elas iniciam a chamada de funções do Neovim, enquanto os plugins são chamados a partir do Neovim.

Na nova versão, foi proposta uma suporte inicial para trabalho remoto, permitindo executar o Neovim em servidor e conectar-se a ele a partir de um sistema cliente, utilizando um ui_client separado. Entre outras mudanças: o suporte ao Python 2 foi descontinuado, o uso de funções Lua em keymaps foi permitido, novos comandos foram adicionados à API, as capacidades de uso da linguagem Lua para desenvolvimento de plugins e gerenciamento de configurações foram significativamente ampliadas, foram melhoradas as ferramentas de diagnóstico de problemas no código, foi adicionada a suporte a uma barra de status global, e otimizadas as decisões de desempenho. As capacidades do cliente LSP integrado (Language Server Protocol) foram expandidas, que pode ser usado para transferir a lógica de análise e autocompletar código para externos. servidores.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster