Megjelent a Neovim 0.7.0 verzió, a Vim szerkesztő ágazatával, amely a bővíthetőség és rugalmasság növelésére összpontosít. A projekt keretében már több mint hét éve folyik a Vim kódalapjának átdolgozása, amely során a kód karbantartását megkönnyítő változtatások történnek, lehetőséget adva a munka megosztására több fenntartó között, elválasztva a felhasználói felületet az alapfunkcióktól (a felület cserélhető anélkül, hogy a belső működést érintené), és bevezetve egy új bővíthető plugin architektúrát. A projekt eredeti anyagai az Apache 2.0 licenc alatt érhetőek el, az alapfunkciók pedig a Vim license alatt állnak. Kész változatok érhetőek el Linuxra (appimage), Windowsra és macOS-ra.
A Vim problémái, amelyek a Neovim létrejöttét motiválták, közé tartozik a felfújt monolitikus kódalap, amely több mint 300 ezer sor C (C89) kódból áll. A Vim kódalapjának összes részletét csupán néhány ember ismeri, a változtatásokat pedig egyetlen fenntartó irányítja, ami megnehezíti a karbantartást és a szerkesztő fejlesztését. A Neovim a Vimen belüli GUI támogatásához szükséges kódot egy univerzális réteg használatára javasolja, amely lehetővé teszi a különböző toolkitokkal készült felületek létrehozását.
A Neovim pluginok külön folyamatokként futnak, és a kommunikációhoz MessagePack formátumot használnak. A pluginokkal való interakció aszinkron módon zajlik, anélkül hogy blokkolná a szerkesztő alapvető összetevőit. A pluginhoz TCP socket használható, tehát a plugin külső rendszeren is futhat. Ezzel együtt a Neovim visszafelé kompatibilis marad a Vimmel, továbbra is támogatja a Vimscriptet (alternatívaként a Lua-t is felajánlja), és támogatja a legtöbb hivatalos Vim plugin csatlakozását. A Neovim kiterjesztett lehetőségei a Neovim számára specifikus API-val készült pluginokban használhatóak.
Jelenleg körülbelül 130 speciális pluginnal rendelkezünk, elérhetők a plugin létrehozására és interfészek megvalósítására vonatkozó bindek különböző programozási nyelvekkel (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) és keretrendszerekkel (Qt, ncurses, Node.js, Electron, GTK). Különböző felhasználói felületváltozatok fejlesztése folyamatban van. A GUI-bővítmények nagymértékben hasonlítanak a pluginekhez, de a pluginekkel ellentétben ők a Neovim funkcióit hívják meg, míg a pluginek a Neovimből vannak meghívva.
Az új verzióban kezdeti támogatást kaptunk a távoli munkához, amely lehetővé teszi a Neovim indítását szerveren és a kliensrendszerről való csatlakozást egy külön ui_client segítségével. Más változások között: a Python 2 támogatásának megszüntetése, Lua-funkciók használatának engedélyezése a keymap-ben, új parancsok hozzáadása az API-hoz, jelentősen bővült a Lua nyelv felhasználási lehetősége a pluginek fejlesztésében és a konfiguráció kezelésében, a kódbeli problémák diagnosztikai eszközeinek javítása, globális állapotsor támogatásának bevezetése, teljesítményoptimalizálások végrehajtása. Bővült a beépített LSP-kliensek (Language Server Protocol), amelyet a kód elemzésének és automatikus kiegészítésének logikájának külső eszközökbe való kiemelésére lehet használni. szerverek.
Forrás: opennet.ru
