Rilascio di Neovim 0.6.0, versione migliorata dell'editor Vim

È stato pubblicato il rilascio di Neovim 0.6.0, un fork dell'editor Vim focalizzato sull'aumento dell'estensibilità e della flessibilità. Nell'ambito del progetto, da oltre sette anni è in corso una ristrutturazione della base di codice di Vim, attraverso la quale vengono apportate modifiche che semplificano la manutenzione del codice, forniscono strumenti per la divisione del lavoro tra più manutentori, separano l'interfaccia dalla parte di base (l'interfaccia può essere cambiata senza toccare i componenti interni) e implementano una nuova architettura estensibile basata su plugin. I lavori originali del progetto sono distribuiti sotto la licenza Apache 2.0, mentre la parte di base è sotto la licenza Vim. Sono pronti pacchetti per Linux (appimage), Windows e macOS.

Tra i problemi di Vim che hanno portato alla creazione di Neovim, si segnala una base di codice monolitica e gonfiata, composta da oltre 300.000 righe di codice in C (C89). Solo poche persone conoscono tutti i dettagli della base di codice di Vim, e tutte le modifiche sono controllate da un unico maintainer, il che rende difficile il supporto e il miglioramento dell'editor. Invece del codice integrato nel core di Vim per il supporto GUI, Neovim propone di utilizzare un'interfaccia universale che consente di creare interfacce con vari toolkit.

I plugin per Neovim vengono eseguiti come processi separati, interagendo tramite il formato MessagePack. L'interazione con i plugin avviene in modo asincrono, senza bloccare i componenti fondamentali dell'editor. Per accedere a un plugin può essere utilizzato un socket TCP, ovvero il plugin può essere eseguito su un sistema esterno. Neovim rimane comunque compatibile con Vim, continua a sostenere Vimscript (con Lua come alternativa) e supporta le connessioni per la maggior parte dei plugin standard di Vim. Le funzionalità avanzate di Neovim possono essere utilizzate nei plugin costruiti con API specifiche per Neovim.

Attualmente sono disponibili circa 130 plugin specifici, con binding per la creazione di plugin e implementazioni di interfacce utilizzando vari linguaggi di programmazione (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) e framework (Qt, ncurses, Node.js, Electron, GTK). Stanno evolvendo diverse opzioni di interfaccia utente. Le estensioni GUI sono simili ai plugin, ma a differenza dei plugin, esse iniziano la chiamata delle funzioni di Neovim, mentre i plugin sono chiamati da Neovim.

Alcuni dei cambiamenti nella nuova versione:

  • Nei vim-script è stata aggiunta la supporto per le variabili locali, la cui portata è limitata solo allo script corrente.
  • È stata notevolmente migliorata la supporto per il linguaggio Lua per lo sviluppo di plugin e gestione della configurazione. Nei vim-script è stata aggiunta la possibilità di chiamare funzioni Lua come metodi specificando il prefisso v:lua (ad esempio, «arg1->v:lua.somemod.func(arg2)»).
  • Sono state ampliate le funzionalità del client LSP integrato (Language Server Protocol), che può essere utilizzato per esternalizzare la logica di analisi e di completamento automatico del codice. serverL'uso di LSP consente di sfruttare oltre 150 gestori pronti per diversi linguaggi di programmazione, preparati per l'editor di codice Visual Studio Code.
  • Sono stati migliorati gli strumenti di diagnosi dei problemi nel codice. È stata aggiunta la possibilità di visualizzare messaggi diagnostici e finestre pop-up con codice correlato a tali messaggi. È stata garantita la gestione dei messaggi diagnostici inviati dal server LSP.
  • È stato aggiunto il supporto per le righe virtuali, che possono essere utilizzate, ad esempio, per visualizzare blocchi di informazioni di servizio.
  • Sono state implementate varie ottimizzazioni delle prestazioni, ad esempio, è stata utilizzata una tabella hash per i nomi delle categorie evidenziati.
  • È stata interrotta la supporto per Windows 7 e le versioni a 32 bit di Windows.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster