Bol vydaný release Neovim 0.7.0, vetva editora Vim, zameraná na zlepšenie rozšíriteľnosti a flexibility. V rámci projektu sa už viac ako sedem rokov realizuje prepracovanie kódovej základne Vim, čo vedie k zmene, ktorá zjednodušuje údržbu kódu a poskytuje prostriedky na rozdelenie práce medzi niekoľkých správcov, oddeluje rozhranie od základnej časti (rozhranie je možné meniť bez zásahu do vnútorností) a implementuje novú rozšíriteľnú architektúru založenú na pluginoch. Pôvodné výsledky projektu sú distribuované pod licenciou Apache 2.0, pričom základná časť je pod licenciou Vim. Hotové zostavy sú pripravené pre Linux (appimage), Windows a macOS.
Medzi problémy Vim, ktoré viedli k vytvoreniu Neovim, patrí obrovská monolitná kódová základňa s viac ako 300 000 riadkami kódu v jazyku C (C89). So všetkými nuansami kódovej základne Vim sa zaoberajú len niektorí jednotlivci, pričom všetky zmeny kontroluje jeden správca, čo sťažuje údržbu a prácu na vylepšení editora. Namiesto kódu na podporu GUI zabudovaného do jadra Vim sa v Neovim navrhuje používať univerzálnu vrstvu, ktorá umožňuje vytvárať rozhrania s rôznymi nástrojmi.
Pluginy pre Neovim sa spúšťajú ako samostatné procesy, s ktorými sa komunikuje pomocou formátu MessagePack. Interakcia s pluginmi prebieha v asynchrónnom režime, bez zablokovania základných komponentov editora. Na prístup k pluginu môže byť použitý TCP socket, čo znamená, že plugin môže bežať na vonkajšom systéme. Pri tom Neovim zostáva spätne kompatibilný s Vim, naďalej podporuje Vimscript (ako alternatíva je ponúkaný Lua) a podporuje pripojenia väčšiny štandardných pluginov Vim. Rozšírené možnosti Neovim môžu byť využité v pluginoch postavených na špecifickom API pre Neovim.
V súčasnosti je pripravených približne 130 špecifických pluginov, k dispozícii sú väzby na vytváranie pluginov a realizáciu rozhraní pomocou rôznych programovacích jazykov (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) a frameworkov (Qt, ncurses, Node.js, Electron, GTK). Vyvíjajú sa rôzne varianty používateľského rozhrania. GUI nadstavby sú v mnohých ohľadoch podobné pluginom, avšak na rozdiel od pluginov iniciujú volania funkcií Neovim, zatiaľ čo pluginy sú volané z Neovim.
V novej verzii je navrhnutá počiatočná podpora vzdialenej práce, ktorá umožňuje spustiť Neovim na serveri a pripojiť sa k nemu z klientského systému, používajúc samostatný ui_client. Medzi ďalšie zmeny patrí: zastavenie podpory Python 2, povolenie použitia Lua funkcií v keymap, pridanie nových príkazov do API, významné rozšírenie možností využitia jazyka Lua na vývoj pluginov a správu konfigurácie, zlepšenie diagnostických prostriedkov na riešenie problémov v kóde, pridanie podpory pre globálny stavový riadok, optimalizácia výkonu. Rozšírili sa schopnosti zabudovaného LSP klienta (Language Server Protocol), ktorý možno použiť na presun logiky analýzy a automatického doplňovania kódu na externé servery.
Zdroj: opennet.ru
