Vydání Neovim 0.7.0, modernizované verze editoru Vim

Byl zveřejněn vydání Neovim 0.7.0, odvozeného od editoru Vim, zaměřeného na zlepšení rozšiřitelnosti a flexibility. V rámci projektu se již více než sedm let provádí přepracování kódové základny Vim, která přináší změny usnadňující údržbu kódu, poskytující prostředky pro rozdělení práce mezi několika správci, oddělující rozhraní od základní části (rozhraní lze měnit, aniž by bylo nutné se dotýkat vnitřností) a realizující novou rozšiřitelnou architekturu na bázi pluginů. Originální výtvory projektu jsou šířeny pod licencí Apache 2.0, zatímco základní část pod licencí Vim. Hotové sestavy jsou připraveny pro Linux (appimage), Windows a macOS.

Mezi problémy Vim, které vedly k vytvoření Neovim, se uvádí přeplněná monolitická kódová základna skládající se z více než 300 tisíc řádků kódu v jazyce C (C89). Všechny nuance kódové základny Vim rozebírá jen několik osob a všechny změny kontroluje jediný správce, což ztěžuje údržbu a práci na vylepšení editoru. Místo kódu integrovaného do jádra Vim pro podporu GUI se v Neovim navrhuje používat univerzální mezivrstvu, která umožňuje vytvářet rozhraní s využitím různých nástrojových sad.

Pluginy pro Neovim běží jako samostatné procesy, pro jejichž interakci se používá formát MessagePack. Interakce s pluginy probíhá v asynchronním režimu, bez blokování základních komponent editoru. Pro komunikaci s pluginem může být použit TCP socket, tj. plugin může běžet na externím systému. Přitom Neovim zůstává zpětně kompatibilní s Vim, nadále podporuje Vimscript (jako alternativu se nabízí Lua) a podporuje připojení většiny standardních pluginů Vim. Rozšířené možnosti Neovim mohou být využity v pluginech postavených pomocí API specifického pro Neovim.

V současné době je k dispozici asi 130 specifických pluginů, jsou dostupná propojení pro vytváření pluginů a implementace rozhraní pomocí různých programovacích jazyků (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) a rámců (Qt, ncurses, Node.js, Electron, GTK). Rozvíjí se několik variant uživatelského rozhraní. GUI rozšíření se do značné míry podobají pluginům, ale na rozdíl od pluginů iniciují volání funkcí Neovim, zatímco pluginy jsou volány z Neovim.

V nové verzi byla nabídnuta počáteční podpora pro vzdálenou práci, která umožňuje spustit Neovim na serveru a připojit se k němu z klientského systému pomocí samostatného ui_client. Mezi další změny patří: ukončení podpory Pythonu 2, povolení použití Lua funkcí v keymap, přidání nových příkazů do API, výrazné rozšíření možností použití jazyka Lua pro vývoj pluginů a správu konfigurace, zlepšení diagnostických nástrojů pro detekci problémů v kódu, přidání podpory pro globální stavový řádek a optimalizace výkonu. Byly rozšířeny možnosti vestavěného LSP klienta (Language Server Protocol), který lze použít pro přesun logiky analýzy a autokompletace kódu na externí servery.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster