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

Byl vydán Neovim 0.7.0, fork editoru Vim zaměřený na zvýšení rozšiřitelnosti a flexibility. Projekt již více než sedm let přepracovává základnu kódu Vim, v důsledku čehož dochází ke změnám, které zjednodušují údržbu kódu, poskytují prostředek pro rozdělení práce mezi několik správců, oddělují rozhraní od základní části (rozhraní může být změněno bez dotyku vnitřních částí) a implementovat novou rozšiřitelnou architekturu založenou na zásuvných modulech. Původní vývoj projektu je distribuován pod licencí Apache 2.0 a základní část je distribuována pod licencí Vim. Připravené sestavy jsou připraveny pro Linux (appimage), Windows a macOS.

Jedním z problémů Vimu, který podnítil vytvoření Neovimu, byla jeho nabušená, monolitická kódová základna sestávající z více než 300 tisíc řádků kódu C (C89). Jen málo lidí rozumí všem nuancím kódové základny Vim a všechny změny řídí jeden správce, což ztěžuje údržbu a vylepšování editoru. Namísto kódu zabudovaného do jádra Vim pro podporu GUI Neovim navrhuje použití univerzální vrstvy, která umožňuje vytvářet rozhraní pomocí různých sad nástrojů.

Pluginy pro Neovim jsou spouštěny jako samostatné procesy, pro interakci s nimiž se používá formát MessagePack. Interakce s pluginy probíhá asynchronně, bez blokování základních komponent editoru. Pro přístup k pluginu lze použít TCP socket, tzn. plugin lze spustit na externím systému. Neovim zároveň zůstává zpětně kompatibilní s Vim, nadále podporuje Vimscript (Lua je nabízena jako alternativa) a podporuje připojení pro většinu standardních pluginů Vim. Pokročilé funkce Neovimu lze použít v zásuvných modulech vytvořených pomocí API specifických pro Neovim.

V současné době je již připraveno asi 130 konkrétních pluginů, k dispozici jsou vazby pro tvorbu pluginů a implementaci rozhraní pomocí různých programovacích jazyků (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) a frameworků (Qt, ncurses, Node .js, Electron, GTK). Vyvíjí se několik možností uživatelského rozhraní. Doplňky GUI jsou velmi podobné pluginům, ale na rozdíl od pluginů iniciují volání funkcí Neovimu, zatímco pluginy jsou volány z Neovimu.

Nová verze nabízí počáteční podporu pro vzdálenou práci, což vám umožní 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ří: byla ukončena podpora pro Python 2, povoleno používání funkcí Lua v keymapě, byly přidány nové příkazy do API, byla výrazně rozšířena možnost používat jazyk Lua pro vývoj pluginů a správa konfigurací, byly vylepšeny nástroje pro diagnostiku problémů v kódu, byla přidána podpora pro globální stavový řádek, byly provedeny optimalizace výkonu. Byly rozšířeny možnosti vestavěného klienta LSP (Language Server Protocol), který lze použít k přenosu analytické logiky a dokončování kódu na externí servery.

Zdroj: opennet.ru

Přidat komentář