Llançament de Neovim 0.7.0, una versió modernitzada de l'editor Vim

S'ha llançat Neovim 0.7.0, una bifurcació de l'editor de Vim centrada en augmentar l'extensibilitat i la flexibilitat. El projecte porta més de set anys reelaborant la base del codi Vim, com a resultat dels quals es fan canvis que simplifiquen el manteniment del codi, proporcionen un mitjà per dividir la feina entre diversos mantenedors, separen la interfície de la part base (la interfície es pot canviat sense tocar els elements interns) i implementar una nova arquitectura extensible basada en connectors. Els desenvolupaments originals del projecte es distribueixen sota la llicència Apache 2.0, i la part bàsica es distribueix sota la llicència Vim. Els muntatges ja preparats estan preparats per a Linux (appimage), Windows i macOS.

Un dels problemes de Vim que va provocar la creació de Neovim va ser la seva base de codi monolítica i inflada, que consta de més de 300 mil línies de codi C (C89). Només unes poques persones entenen tots els matisos de la base de codi Vim, i tots els canvis estan controlats per un responsable, cosa que dificulta el manteniment i la millora de l'editor. En lloc del codi integrat al nucli de Vim per donar suport a la GUI, Neovim proposa utilitzar una capa universal que us permeti crear interfícies utilitzant diversos conjunts d'eines.

Els connectors per a Neovim es llancen com a processos separats, per a la interacció amb els quals s'utilitza el format MessagePack. La interacció amb els connectors es realitza de manera asíncrona, sense bloquejar els components bàsics de l'editor. Per accedir al connector, es pot utilitzar un sòcol TCP, és a dir. el connector es pot executar en un sistema extern. Al mateix temps, Neovim segueix sent compatible amb Vim, continua donant suport a Vimscript (s'ofereix Lua com a alternativa) i admet connexions per a la majoria dels connectors estàndard de Vim. Les funcions avançades de Neovim es poden utilitzar en connectors creats amb API específiques de Neovim.

Actualment, ja s'han preparat uns 130 connectors específics, hi ha disponibles enllaços per crear connectors i implementar interfícies utilitzant diversos llenguatges de programació (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) i frameworks (Qt, ncurses, Node .js, Electron, GTK). S'estan desenvolupant diverses opcions d'interfície d'usuari. Els complements de la GUI són similars als connectors de moltes maneres, però a diferència dels connectors, inicien trucades a funcions de Neovim, mentre que els connectors es criden des de Neovim.

La nova versió ofereix suport inicial per al treball remot, la qual cosa us permet executar Neovim al servidor i connectar-hi des del sistema client mitjançant un ui_client separat. Altres canvis inclouen: el suport per a Python 2 s'ha interromput, s'ha permès l'ús de funcions Lua al mapa de tecles, s'han afegit noves ordres a l'API, la capacitat d'utilitzar el llenguatge Lua per desenvolupar connectors i la gestió de la configuració s'ha ampliat significativament, s'han millorat les eines per diagnosticar problemes en codi, s'ha afegit suport per a la barra d'estat global, s'han dut a terme optimitzacions de rendiment. S'han ampliat les capacitats del client LSP (Language Server Protocol) integrat, que es pot utilitzar per transferir la lògica d'anàlisi i la finalització del codi a servidors externs.

Font: opennet.ru

Afegeix comentari