Lanzamiento de Neovim 0.7.0, una versión modernizada del editor Vim

Se ha lanzado Neovim 0.7.0, una bifurcación del editor Vim enfocada en aumentar la extensibilidad y flexibilidad. El proyecto ha estado reelaborando la base del código Vim durante más de siete años, como resultado de lo cual se realizan cambios que simplifican el mantenimiento del código, proporcionan un medio para dividir el trabajo entre varios mantenedores, separan la interfaz de la parte base (la interfaz se puede cambiado sin tocar las partes internas) e implementar una nueva arquitectura extensible basada en complementos. Los desarrollos originales del proyecto se distribuyen bajo licencia Apache 2.0, y la parte básica se distribuye bajo licencia Vim. Se preparan ensamblajes listos para usar para Linux (appimage), Windows y macOS.

Uno de los problemas con Vim que impulsó la creación de Neovim fue su base de código monolítica e inflada, que consta de más de 300 mil líneas de código C (C89). Solo unas pocas personas comprenden todos los matices del código base de Vim y todos los cambios están controlados por un responsable, lo que dificulta el mantenimiento y la mejora del editor. En lugar del código integrado en el núcleo de Vim para admitir la GUI, Neovim propone utilizar una capa universal que le permite crear interfaces utilizando varios kits de herramientas.

Los complementos para Neovim se inician como procesos separados, para la interacción con los cuales se utiliza el formato MessagePack. La interacción con los complementos se realiza de forma asíncrona, sin bloquear los componentes básicos del editor. Para acceder al complemento, se puede utilizar un socket TCP, es decir. El complemento se puede ejecutar en un sistema externo. Al mismo tiempo, Neovim sigue siendo compatible con Vim, sigue siendo compatible con Vimscript (se ofrece Lua como alternativa) y admite conexiones para la mayoría de los complementos estándar de Vim. Las funciones avanzadas de Neovim se pueden utilizar en complementos creados con API específicas de Neovim.

Actualmente, ya se han preparado alrededor de 130 complementos específicos, hay enlaces disponibles para crear complementos e implementar interfaces utilizando varios lenguajes de programación (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) y frameworks (Qt, ncurses, Node .js, Electron, GTK). Se están desarrollando varias opciones de interfaz de usuario. Los complementos de GUI son muy parecidos a los complementos, pero a diferencia de los complementos, inician llamadas a funciones de Neovim, mientras que los complementos se llaman desde Neovim.

La nueva versión ofrece soporte inicial para el trabajo remoto, lo que le permite ejecutar Neovim en el servidor y conectarse a él desde el sistema cliente mediante un ui_client separado. Otros cambios incluyen: se suspendió el soporte para Python 2, se permitió el uso de funciones de Lua en el mapa de teclas, se agregaron nuevos comandos a la API, se amplió significativamente la capacidad de usar el lenguaje Lua para desarrollar complementos y administrar la configuración. Se han mejorado las herramientas para diagnosticar problemas en el código, se ha agregado soporte para la barra de estado global y se han realizado optimizaciones del rendimiento. Se han ampliado las capacidades del cliente LSP (Language Server Protocol) integrado, que se puede utilizar para transferir la lógica de análisis y la finalización del código a servidores externos.

Fuente: opennet.ru

Añadir un comentario