Udgivelsen af Neovim 0.7.0, en moderniseret version af editoren Vim

Neovim 0.7.0 er blevet udgivet, en afdækningsgren af teksteditoren Vim, der fokuserer på at forbedre udvidelsesmulighederne og fleksibiliteten. I over syv år har projektet omarbejdet Vim's kodebase, hvilket resulterer i ændringer, der forenkler vedligeholdelsen af koden, giver værktøjer til arbejdsdeling blandt flere vedligeholdere, adskiller grænsefladen fra kernekomponenten (grænsefladen kan ændres uden at røre ved de indre dele) og implementerer en ny udvidelsesarkitektur baseret på plugins. De oprindelige arbejder fra projektet distribueres under Apache 2.0-licensen, mens kernekomponenten er under Vim-licensen. Klargjorte builds er tilgængelige for Linux (appimage), Windows og macOS.

Blandt de problemer med Vim, der førte til oprettelsen af Neovim, er den opsvulmede monolitiske kodebase, som består af mere end 300.000 linjer kode på C-sprog (C89). Kun et fåtal af personer forstår alle nuancerne i Vim's kodebase, og alle ændringer styres af en enkelt vedligeholder, hvilket gør det svært at vedligeholde og arbejde på forbedringer af redaktøren. I stedet for at bruge den indbyggede forkode i Vim til at understøtte GUI, foreslår Neovim at bruge et universelt lag, der muliggør oprettelse af grænseflader ved hjælp af forskellige værktøjssæt.

Plugins til Neovim kører som separate processer, som interagerer ved hjælp af MessagePack-formatet. Interaktion med plugins sker asynkront, uden at blokere de grundlæggende komponenter i editoren. For at tilgå et plugin kan en TCP-socket anvendes, hvilket betyder, at et plugin kan køre på et eksternt system. Samtidig forbliver Neovim bagudkompatibel med Vim, fortsætter med at støtte Vimscript (Lua tilbydes som alternativ) og understøtter tilslutningen af de fleste standard Vim-plugins. De udvidede muligheder for Neovim kan bruges i plugins bygget ved hjælp af den Neovim-specifikke API.

I øjeblikket er der allerede blevet forberedt omkring 130 specifikke plugins, bindings er tilgængelige for oprettelse af plugins og implementeringer af grænseflader ved hjælp af forskellige programmeringssprog (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) og rammer (Qt, ncurses, Node.js, Electron, GTK). Der udvikles flere varianter af brugergrænsefladen. GUI-udvidelser ligner i høj grad plugins, men i modsætning til plugins initierer de opkald af Neovim-funktioner, mens plugins kaldes fra Neovim.

Den nye version tilbyder grundlæggende support for fjernarbejde, som gør det muligt at køre Neovim på serveren og forbinde til det fra et klient-system ved hjælp af en separat ui_client. Blandt andre ændringer: supporten for Python 2 er blevet fjernet, brugen af Lua-funktioner i keymap er tilladt, nye kommandoer er tilføjet til API'en, mulighederne for brug af Lua til udvikling af plugins og styring af konfigurationen er blevet betydeligt udvidet, værktøjerne til fejldiagnostik i koden er blevet forbedret, der er tilføjet support for en global statuslinje, og der er blevet lavet præstationsoptimeringer. Funktionaliteten i den indbyggede LSP-klient (Language Server Protocol) er blevet udvidet, og som kan bruges til at flytte logik for analyse og automatisk fuldførelse af kode til eksterne servere.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster