Utgivelse av Neovim 0.6.0, en modernisert versjon av Vim-editoren

Neovim 0.6.0 har blitt utgitt, en gaffel fra Vim-editoren fokusert på å øke utvidbarhet og fleksibilitet. Prosjektet har omarbeidet Vim-kodebasen i mer enn syv år, som et resultat av at det gjøres endringer som forenkler kodevedlikehold, gir et middel til å dele arbeid mellom flere vedlikeholdere, skille grensesnittet fra basisdelen (grensesnittet kan endret uten å berøre det indre) og implementere en ny utvidbar arkitektur basert på plugins. Den opprinnelige utviklingen av prosjektet er distribuert under Apache 2.0-lisensen, og den grunnleggende delen er distribuert under Vim-lisensen. Ferdige sammenstillinger er forberedt for Linux (appimage), Windows og macOS.

Et av problemene med Vim som førte til opprettelsen av Neovim var dens oppsvulmede, monolitiske kodebase, bestående av mer enn 300 tusen linjer med C (C89)-kode. Bare noen få mennesker forstår alle nyansene i Vim-kodebasen, og alle endringer kontrolleres av én vedlikeholder, noe som gjør det vanskelig å vedlikeholde og forbedre editoren. I stedet for koden innebygd i Vim-kjernen for å støtte GUI, foreslår Neovim å bruke et universelt lag som lar deg lage grensesnitt ved hjelp av ulike verktøysett.

Plugins for Neovim lanseres som separate prosesser, for interaksjon som MessagePack-formatet brukes med. Interaksjon med plugins utføres asynkront, uten å blokkere de grunnleggende komponentene til editoren. For å få tilgang til plugin-en kan en TCP-kontakt brukes, dvs. plugin-en kan kjøres på et eksternt system. Samtidig forblir Neovim bakoverkompatibel med Vim, fortsetter å støtte Vimscript (Lua tilbys som et alternativ) og støtter tilkoblinger for de fleste standard Vim-plugins. Neovims avanserte funksjoner kan brukes i plugins bygget ved hjelp av Neovim-spesifikke APIer.

For øyeblikket er rundt 130 spesifikke plugins allerede utarbeidet, bindinger er tilgjengelige for å lage plugins og implementere grensesnitt ved bruk av ulike programmeringsspråk (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) og rammeverk (Qt, ncurses, Node .js, Electron, GTK). Flere alternativer for brukergrensesnitt er under utvikling. GUI-tillegg er mye som plugins, men i motsetning til plugins, starter de kall til Neovim-funksjoner, mens plugins kalles fra Neovim.

Noen av endringene i den nye versjonen:

  • Støtte for lokale variabler er lagt til vim-skript, hvis omfang kun er begrenset av gjeldende skript.
  • Betydelig forbedret Lua-språkstøtte for plugin-utvikling og konfigurasjonsadministrasjon. I vim-skript har muligheten til å kalle Lua-funksjoner som metoder blitt lagt til ved å spesifisere v:lua-prefikset (for eksempel "arg1->v:lua.somemod.func(arg2)").
  • Mulighetene til den innebygde LSP-klienten (Language Server Protocol) er utvidet, som kan brukes til å overføre analyselogikken og kodefullføringen til eksterne servere. Bruken av LSP lar deg bruke mer enn 150 ferdige behandlere for ulike programmeringsspråk forberedt for Visual Studio Code-editoren.
  • Forbedrede verktøy for å diagnostisere problemer i kode. Lagt til muligheten til å vise teksten til diagnostiske meldinger og flytende vinduer med kode knyttet til slike meldinger. Behandling av diagnostiske meldinger overført av LSP-serveren tilbys.
  • Lagt til støtte for virtuelle strenger, som for eksempel kan brukes til å vise blokker med tjenesteinformasjon.
  • Ulike ytelsesoptimaliseringer er gjort, for eksempel er en hash-tabell aktivert for uthevede gruppenavn.
  • Støtte for Windows 7 og 32-biters versjoner av Windows er avviklet.

Kilde: opennet.ru

Legg til en kommentar