A Neovim 0.7.0 kiadása, a Vim szerkesztő modernizált változata

Megjelent a Neovim 0.7.0, a Vim szerkesztő egy része, amely a bővíthetőség és rugalmasság növelésére összpontosít. A projektben több mint hét éve dolgozzák át a Vim kódbázist, melynek eredményeként olyan változtatások valósulnak meg, amelyek leegyszerűsítik a kód karbantartását, lehetőséget adnak a több karbantartó közötti munkamegosztásra, elválasztják a felületet az alap résztől (a felület a belső elemek érintése nélkül változott), és egy új bővíthető architektúrát valósítson meg a bővítmények alapján. A projekt eredeti fejlesztései Apache 2.0 licenc alatt, az alap rész pedig Vim licenc alatt kerül terjesztésre. A kész összeállítások Linuxra (appimage), Windowsra és macOS-re készülnek.

A Vim egyik problémája, amely a Neovim létrehozását késztette, a felduzzasztott, monolitikus kódbázis volt, amely több mint 300 ezer sornyi C (C89) kódból állt. Csak kevesen értik a Vim kódbázis minden árnyalatát, és minden változtatást egyetlen karbantartó irányít, ami megnehezíti a szerkesztő karbantartását és fejlesztését. A grafikus felhasználói felületet támogató Vim magba épített kód helyett a Neovim egy univerzális réteg használatát javasolja, amely lehetővé teszi interfészek létrehozását különféle eszközkészletek segítségével.

A Neovim beépülő moduljai külön folyamatként indulnak el, az interakcióhoz, amellyel a MessagePack formátumot használják. A bővítményekkel való interakció aszinkron módon, a szerkesztő alapvető összetevőinek blokkolása nélkül történik. A plugin eléréséhez egy TCP socket használható, pl. a bővítmény külső rendszeren is futtatható. Ugyanakkor a Neovim visszafelé kompatibilis marad a Vim-mel, továbbra is támogatja a Vimscriptet (a Lua-t alternatívaként kínálják), és támogatja a legtöbb szabványos Vim-bővítmény csatlakozását. A Neovim speciális funkciói a Neovim-specifikus API-k használatával épített bővítményekben használhatók.

Jelenleg mintegy 130 specifikus plugin készült már el, kötések állnak rendelkezésre bővítmények létrehozásához és interfészek megvalósításához különféle programozási nyelvek (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) és keretrendszerek (Qt, ncurses, Node .js, Electron, GTK). Számos felhasználói felület opció fejlesztés alatt áll. A GUI-bővítmények sokban hasonlítanak a beépülő modulokhoz, de a beépülő modulokkal ellentétben a Neovim-függvények hívását kezdeményezik, míg a beépülő modulok a Neovimon belülről hívódnak.

Az új verzió kezdeti támogatást kínál a távoli munkavégzéshez, lehetővé téve a Neovim futtatását a szerveren, és egy külön ui_client segítségével a kliensrendszerről csatlakozhat hozzá. További változások: megszűnt a Python 2 támogatása, engedélyezték a Lua függvények használatát a keymap-ben, új parancsok kerültek az API-ba, jelentősen bővült a Lua nyelv használatának lehetősége a bővítmények fejlesztésére és a konfigurációkezelésre, fejlesztésre kerültek a kódbeli problémák diagnosztizálására szolgáló eszközök, hozzáadták a globális állapotsor támogatását, teljesítményoptimalizálást végeztek. Bővültek a beépített LSP kliens (Language Server Protocol) képességei, amivel az elemzési logika és a kódkiegészítés átvihető külső szerverekre.

Forrás: opennet.ru

Hozzászólás