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

S'ha llançat Neovim 0.6.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.

Alguns dels canvis de la nova versió:

  • S'ha afegit suport per a variables locals als scripts vim, l'abast dels quals només està limitat per l'script actual.
  • S'ha millorat significativament el suport del llenguatge Lua per al desenvolupament de connectors i la gestió de la configuració. En els scripts vim, s'ha afegit la possibilitat de cridar funcions Lua com a mètodes especificant el prefix v:lua (per exemple, "arg1->v:lua.somemod.func(arg2)").
  • 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. L'ús de LSP us permet utilitzar més de 150 controladors preparats per a diversos llenguatges de programació preparats per a l'editor de codi de Visual Studio.
  • Eines millorades per diagnosticar problemes en codi. S'ha afegit la possibilitat de mostrar el text dels missatges de diagnòstic i les finestres flotants amb el codi associat a aquests missatges. Es proporciona el processament dels missatges de diagnòstic transmesos pel servidor LSP.
  • S'ha afegit suport per a cadenes virtuals, que es poden utilitzar, per exemple, per mostrar blocs amb informació de servei.
  • S'han fet diverses optimitzacions de rendiment, per exemple, s'ha habilitat una taula hash per als noms de grups ressaltats.
  • El suport per a Windows 7 i versions de 32 bits de Windows s'ha interromput.

Font: opennet.ru

Afegeix comentari