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

Se ha publicado la versión Neovim 0.7.0, una bifurcación del editor Vim enfocada en mejorar la extensibilidad y flexibilidad. En el marco del proyecto, se lleva a cabo una reestructuración de la base de código de Vim durante más de siete años, lo que resulta en cambios que simplifican el mantenimiento del código, ofrecen medios para repartir el trabajo entre varios mantenedores, separan la interfaz de la parte básica (la interfaz se puede cambiar sin alterar el núcleo) y implementan una nueva arquitectura extensible basada en plugins. Los desarrollos originales del proyecto se distribuyen bajo la licencia Apache 2.0, mientras que la parte básica está bajo la licencia Vim. Las versiones completas están preparadas para Linux (appimage), Windows y macOS.

Entre los problemas de Vim que llevaron a la creación de Neovim se destaca la abultada base de código monolítica, que consiste en más de 300 mil líneas de código en C (C89). Solo unas pocas personas comprenden todos los matices de la base de código de Vim, y todos los cambios son controlados por un único mantenedor, lo que dificulta el mantenimiento y el trabajo en la mejora del editor. En lugar del código integrado en el núcleo de Vim para el soporte de GUI, Neovim propone emplear una capa universal que permite crear interfaces utilizando diferentes kits de herramientas.

Los plugins de Neovim se ejecutan como procesos separados, utilizando el formato MessagePack para la comunicación. La interacción con los plugins se realiza de manera asincrónica, sin bloquear los componentes básicos del editor. Se puede utilizar un socket TCP para acceder a un plugin, lo que significa que el plugin puede ejecutarse en un sistema externo. Al mismo tiempo, Neovim sigue siendo compatible con versiones anteriores de Vim, continúa soportando Vimscript (se ofrece Lua como alternativa) y soporta la conexión de la mayoría de los plugins estándar de Vim. Las capacidades avanzadas de Neovim pueden ser utilizadas en plugins construidos con la API específica de Neovim.

Actualmente se han preparado alrededor de 130 complementos específicos, hay bindings disponibles para crear complementos e implementaciones de 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. Las extensiones GUI son muy similares a los complementos, pero, a diferencia de los complementos, inician la llamada a funciones de Neovim, mientras que los complementos son llamados desde Neovim.

La nueva versión ofrece soporte inicial para trabajo remoto, permitiendo ejecutar Neovim en servidor y conectarse a él desde un sistema cliente, utilizando un ui_client separado. Entre otros cambios: se ha descontinuado el soporte para Python 2, se permite el uso de funciones Lua en keymap, se han añadido nuevos comandos a la API, se han ampliado significativamente las capacidades de uso de Lua para el desarrollo de complementos y la gestión de configuraciones, se han mejorado las herramientas de diagnóstico de problemas en el código, se ha añadido soporte para una línea de estado global, se han realizado optimizaciones de rendimiento. Se han ampliado las capacidades del cliente LSP integrado (Protocolo de Servidor de Lenguaje), que se puede utilizar para llevar la lógica de análisis y autocompletado de código a externos. servidores.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster