De release van Neovim 0.7.0, een gemoderniseerde versie van de editor Vim

De release van Neovim 0.7.0 is gepubliceerd, een fork van de editor Vim die zich richt op het verbeteren van de uitbreidbaarheid en flexibiliteit. Sinds meer dan zeven jaar wordt er gewerkt aan de herstructurering van de codebase van Vim, wat wijzigingen met zich meebrengt die het onderhoud van de code vergemakkelijken, middelen bieden voor het delen van de taken tussen meerdere maintainers, de interface scheiden van de kern (zodat de interface kan worden gewijzigd zonder de interne werking aan te tasten) en een nieuwe uitbreidbare architectuur implementeren op basis van plugins. De originele bijdragen aan het project worden verspreid onder de Apache 2.0-licentie, terwijl de basis onder de Vim-licentie valt. Klaar omgevingen zijn voorbereid voor Linux (appimage), Windows en macOS.

De problemen van Vim die leidden tot de ontwikkeling van Neovim omvatten een verwaterde monolithische codebase van meer dan 300.000 regels code in de programmeertaal C (C89). Slechts een paar mensen zijn bekend met alle nuances van de codebase van Vim, en alle wijzigingen worden gecontroleerd door ƩƩn maintainer, wat het onderhoud en de verdere ontwikkeling van de editor bemoeilijkt. In plaats van de in de kern van Vim ingebouwde code voor GUI-ondersteuning, wordt in Neovim een universele laag voorgesteld die het mogelijk maakt om interfaces te creƫren met verschillende toolkits.

Plugins voor Neovim worden uitgevoerd als afzonderlijke processen, waarbij het MessagePack-formaat wordt gebruikt voor interactie. De interactie met plugins vindt asynchroon plaats, zonder de basiscomponenten van de editor te blokkeren. Voor toegang tot een plugin kan een TCP-socket worden gebruikt, wat betekent dat de plugin op een extern systeem kan worden uitgevoerd. Toch blijft Neovim achterwaarts compatibel met Vim, ondersteunt het Vimscript (bij voorkeur Lua) als alternatief en ondersteunt het de meeste standaard Vim-plugins. De uitgebreide mogelijkheden van Neovim kunnen worden benut in plugins die zijn opgebouwd met behulp van een specifieke API voor Neovim.

Er zijn momenteel ongeveer 130 specifieke plugins ontwikkeld, zijn er bindings beschikbaar voor het maken van plugins en implementaties van interfaces met behulp van verschillende programmeertalen (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) en frameworks (Qt, ncurses, Node.js, Electron, GTK). Verschillende versies van de gebruikersinterface worden ontwikkeld. GUI-extensies lijken veel op plugins, maar in tegenstelling tot plugins initiƫren ze aanroep van Neovim-functies, terwijl plugins vanuit Neovim worden aangeroepen.

De nieuwe versie biedt initiƫle ondersteuning voor remote werken, waardoor Neovim op de server kan worden uitgevoerd en vanaf een client-systeem kan worden verbonden met een aparte ui_client. Onder andere wijzigingen: ondersteuning voor Python 2 is stopgezet, gebruik van Lua-functies in keymaps is toegestaan, nieuwe commando's zijn toegevoegd aan de API, de mogelijkheden voor het gebruik van de programmeertaal Lua voor het ontwikkelen van plugins en configuratiebeheer zijn aanzienlijk uitgebreid, diagnostische hulpmiddelen voor codeproblemen zijn verbeterd, ondersteuning voor een globale statusregel is toegevoegd, en prestatieoptimalisaties zijn doorgevoerd. De mogelijkheden van de ingebouwde LSP-client (Language Server Protocol) zijn uitgebreid, die kan worden gebruikt om de logica voor code-analyse en autocompletion naar externe systemen te verplaatsen. servers.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster