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

È stato rilasciato Neovim 0.7.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.

La nuova versione offre il supporto iniziale per il lavoro remoto, consentendo di eseguire Neovim sul server e connettersi ad esso dal sistema client utilizzando un ui_client separato. Altre modifiche includono: il supporto per Python 2 è stato interrotto, è stato consentito l'uso delle funzioni Lua nella keymap, sono stati aggiunti nuovi comandi all'API, la possibilità di utilizzare il linguaggio Lua per lo sviluppo di plugin e la gestione della configurazione è stata notevolmente ampliata, sono stati migliorati gli strumenti per la diagnosi dei problemi nel codice, è stato aggiunto il supporto per la barra di stato globale, sono state effettuate ottimizzazioni delle prestazioni. 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.

Fonte: opennet.ru

Aggiungi un commento