Neovim 0.5 hè dispunibule, una versione mudernizzata di l'editore Vim

Dopu quasi dui anni di sviluppu, Neovim 0.5 hè statu liberatu, una furchetta di l'editore Vim focu annantu à l'aumentu di l'estensibilità è a flessibilità. U prugettu hè stata reworking a basa di codice Vim per più di sette anni, cum'è un risultatu di quali cambiamenti sò fatti chì simplificà u mantenimentu di u codice, furnisce un mezzu di dividendu u travagliu trà parechji mantene, separà l'interfaccia da a parte di basa (l'interfaccia pò esse cambiatu senza toccu l'internu) è implementà una nova architettura estensibile basatu nantu à i plugins. I sviluppi originali di u prugettu sò distribuiti sottu a licenza Apache 2.0, è a parte basica hè distribuita sottu a licenza Vim.

Unu di i prublemi cù Vim chì hà pruvucatu a creazione di Neovim era a so basa di codice bloated, monoliticu, custituitu di più di 300 mila linee di codice C (C89). Solu uni pochi di persone capiscenu tutte e sfumature di u codice di Vim, è tutti i cambiamenti sò cuntrullati da un mantenente, chì rende difficiule di mantene è migliurà l'editore. Invece di u codice integratu in u core Vim per sustene a GUI, Neovim prupone l'usu di una capa universale chì permette di creà interfacce cù diversi toolkits.

I plugins per Neovim sò lanciati cum'è prucessi separati, per l'interazzione cù quale u formatu MessagePack hè utilizatu. L'interazzione cù i plugins hè realizatu in modu asincronu, senza bluccà i cumpunenti basi di l'editore. Per accede à u plugin, un socket TCP pò esse usatu, i.e. u plugin pò esse eseguitu nantu à un sistema esternu. À u listessu tempu, Neovim resta cumpatibile cù Vim, cuntinueghja à supportà Vimscript (Lua hè offru cum'è alternativa) è sustene e cunnessione per a maiò parte di i plugins Vim standard. E funzioni avanzate di Neovim ponu esse aduprate in plugins custruiti cù l'API specifichi di Neovim.

Attualmente, circa 130 plugins specifichi sò digià stati preparati, i vincoli sò dispunibuli per creà plugins è implementà interfacce cù diversi linguaggi di prugrammazione (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) è frameworks (Qt, ncurses, Node .js, Electron, GTK). Diversi opzioni di interfaccia d'utilizatore sò sviluppati. Add-ons GUI sò assai simili à i plugins, ma à u cuntrariu di i plugins, inizianu chjamati à e funzioni di Neovim, mentre chì i plugins sò chjamati da Neovim.

Alcune di i cambiamenti in a nova versione:

  • Aggiuntu un cliente LSP integratu (Language Server Protocol) in Lua, chì pò esse usatu per cunnette à servizii esterni per l'analisi è u cumpletu di codice.
  • Aggiunta una API per cuntrullà u disignu di i buffer di allocazione.
  • Aghjunghjia una API per utilizà tag estesi per seguità i cambiamenti à u livellu di byte.
  • Supportu allargatu per Lua cum'è lingua per u sviluppu di plugins è a gestione di cunfigurazione.
  • Aghjunghje un supportu sperimentale per u mutore di analisi di tree-sitter.

Source: opennet.ru

Add a comment