Rilascio di Neovim 0.6.0, una versione modernizzata dell'editor Vim

È stato rilasciato Neovim 0.6.0, un fork dell'editor Vim focalizzato sull'aumento dell'estensibilità e della flessibilità. Il progetto ha rielaborato la base del codice Vim per più di sette anni, a seguito delle quali sono state apportate modifiche che semplificano la manutenzione del codice, forniscono un mezzo per dividere il lavoro tra diversi manutentori, separano l'interfaccia dalla parte base (l'interfaccia può essere modificato senza toccare gli interni) e implementare una nuova architettura estensibile basata su plugin. Gli sviluppi originali del progetto sono distribuiti sotto la licenza Apache 2.0, e la parte base è distribuita sotto la licenza Vim. Vengono preparati gruppi già pronti per Linux (appimage), Windows e macOS.

Uno dei problemi con Vim che ha spinto alla creazione di Neovim è stata la sua base di codice gonfia e monolitica, composta da più di 300mila righe di codice C (C89). Solo poche persone comprendono tutte le sfumature del codice base di Vim e tutte le modifiche sono controllate da un unico manutentore, il che rende difficile mantenere e migliorare l'editor. Invece del codice integrato nel core Vim per supportare la GUI, Neovim propone di utilizzare un livello universale che consenta di creare interfacce utilizzando vari toolkit.

I plugin per Neovim vengono avviati come processi separati, per l'interazione con cui viene utilizzato il formato MessagePack. L'interazione con i plugin avviene in modo asincrono, senza bloccare i componenti di base dell'editor. Per accedere al plugin è possibile utilizzare un socket TCP, ad es. il plugin può essere eseguito su un sistema esterno. Allo stesso tempo, Neovim rimane retrocompatibile con Vim, continua a supportare Vimscript (Lua è offerto come alternativa) e supporta le connessioni per la maggior parte dei plugin Vim standard. Le funzionalità avanzate di Neovim possono essere utilizzate nei plugin creati utilizzando API specifiche di Neovim.

Attualmente sono già stati preparati circa 130 plugin specifici, sono disponibili collegamenti per la creazione di plugin e l'implementazione di interfacce utilizzando vari linguaggi di programmazione (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) e framework (Qt, ncurses, Node .js, Electron, GTK). Sono in fase di sviluppo diverse opzioni di interfaccia utente. I componenti aggiuntivi della GUI sono molto simili ai plugin, ma a differenza dei plugin, avviano chiamate alle funzioni di Neovim, mentre i plugin vengono chiamati dall'interno di Neovim.

Alcune delle modifiche nella nuova versione:

  • Agli script vim è stato aggiunto il supporto per le variabili locali, il cui ambito è limitato solo dallo script corrente.
  • Supporto del linguaggio Lua significativamente migliorato per lo sviluppo di plug-in e la gestione della configurazione. Negli script vim, è 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 capacità del client LSP integrato (Language Server Protocol), che può essere utilizzato per trasferire la logica di analisi e il completamento del codice a server esterni. L'uso di LSP consente di utilizzare più di 150 gestori già pronti per vari linguaggi di programmazione preparati per l'editor di Visual Studio Code.
  • Strumenti migliorati per la diagnosi dei problemi nel codice. Aggiunta la possibilità di visualizzare il testo dei messaggi diagnostici e delle finestre mobili con il codice associato a tali messaggi. Viene fornita l'elaborazione dei messaggi diagnostici trasmessi dal server LSP.
  • Aggiunto il supporto per le stringhe virtuali, che possono essere utilizzate, ad esempio, per visualizzare blocchi con informazioni di servizio.
  • Sono state apportate varie ottimizzazioni delle prestazioni, ad esempio è stata abilitata una tabella hash per i nomi dei gruppi evidenziati.
  • Il supporto per Windows 7 e le versioni a 32 bit di Windows è stato interrotto.

Fonte: opennet.ru

Aggiungi un commento