K dispozici je Neovim 0.5, modernizovaná verze editoru Vim

Po téměř dvou letech vývoje byl vydán Neovim 0.5, 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.

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.

Některé změny v nové verzi:

  • Přidán vestavěný klient LSP (Language Server Protocol) v Lua, kterého lze použít k připojení k externím službám pro analýzu a dokončování kódu.
  • Přidáno API pro řízení návrhu alokačních vyrovnávacích pamětí.
  • Přidáno rozhraní API pro použití rozšířených značek ke sledování změn na úrovni bajtů.
  • Rozšířená podpora pro Lua jako jazyk pro vývoj pluginů a správu konfigurace.
  • Přidána experimentální podpora pro modul analýzy stromového hlídání.

Zdroj: opennet.ru

Přidat komentář