Veröffentlichung von Neovim 0.6.0, einer aktualisierten Version des Editors Vim

Die Veröffentlichung von Neovim 0.6.0, einer Abspaltung des Editors Vim, ist erfolgt. Neovim konzentriert sich auf die Verbesserung der Erweiterbarkeit und Flexibilität. Seit über sieben Jahren wird die Codebasis von Vim im Rahmen dieses Projekts überarbeitet. Diese Änderungen erleichtern die Pflege des Codes, bieten Möglichkeiten zur Aufteilung der Arbeit zwischen mehreren Maintainers, trennen die Benutzeroberfläche vom Kern (die Benutzeroberfläche kann geändert werden, ohne die internen Strukturen zu berühren) und implementieren eine neue erweiterbare Architektur auf Basis von Plugins. Die ursprünglichen Arbeiten des Projekts werden unter der Lizenz Apache 2.0 verteilt, während der Kern unter der Vim-Lizenz steht. Fertige Builds sind für Linux (AppImage), Windows und macOS verfügbar.

Zu den Problemen von Vim, die zur Entwicklung von Neovim führten, zählt die aufgeblähte monolithische Codebasis, die aus über 300.000 Zeilen C-Code (C89) besteht. Nur wenige Personen sind mit den Feinheiten der Vim-Codebasis vertraut, und alle Änderungen werden von einem einzigen Maintainer kontrolliert, was die Wartung und die Weiterentwicklung des Editors erschwert. Anstelle des in den Vim-Kern integrierten Codes zur Unterstützung von GUIs wird in Neovim eine universelle Schnittstelle vorgeschlagen, die es ermöglicht, Benutzeroberflächen mit verschiedenen Toolkits zu erstellen.

Plugins für Neovim laufen als separate Prozesse, wobei das MessagePack-Format für die Interaktion verwendet wird. Die Kommunikation mit den Plugins erfolgt asynchron, ohne die grundlegenden Komponenten des Editors zu blockieren. Ein TCP-Socket kann verwendet werden, um auf ein Plugin zuzugreifen, d.h. das Plugin kann auf einem externen System ausgeführt werden. Neovim bleibt dabei abwärtskompatibel zu Vim, unterstützt weiterhin Vimscript (als Alternative wird Lua angeboten) und ermöglicht die Verwendung der meisten standardmäßigen Vim-Plugins. Die erweiterten Funktionen von Neovim können in Plugins genutzt werden, die mit der spezifischen API von Neovim erstellt wurden.

Derzeit sind bereits etwa 130 spezifische Plugins vorbereitet, es stehen Bindings zur Verfügung, um Plugins und Schnittstellenimplementierungen unter Verwendung verschiedener Programmiersprachen (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) und Frameworks (Qt, ncurses, Node.js, Electron, GTK) zu erstellen. Es werden mehrere Varianten von Benutzeroberflächen entwickelt. GUI-Erweiterungen ähneln in vielerlei Hinsicht Plugins, jedoch initiieren sie im Gegensatz zu Plugins den Aufruf von Neovim-Funktionen, während Plugins aus Neovim heraus aufgerufen werden.

Einige der Änderungen in der neuen Version:

  • In Vim-Skripte wurde die Unterstützung für lokale Variablen hinzugefügt, deren Gültigkeitsbereich auf das aktuelle Skript beschränkt ist.
  • Die Unterstützung der Programmiersprache Lua für die Entwicklung von Plugins und die Verwaltung von Konfigurationen wurde erheblich verbessert. In Vim-Skripten wurde die Möglichkeit hinzugefügt, Lua-Funktionen als Methoden über das Präfix v:lua aufzurufen (zum Beispiel „arg1->v:lua.somemod.func(arg2)“).
  • Die Möglichkeiten des integrierten LSP-Clients (Language Server Protocol) wurden erweitert. Dieser kann verwendet werden, um die Logik für Analyse und Codevervollständigung extern auszulagern. ServerDurch den Einsatz von LSP können mehr als 150 fertige Handler für verschiedene Programmiersprachen genutzt werden, die für den Code-Editor Visual Studio Code vorbereitet wurden.
  • Die Diagnosewerkzeuge für Probleme im Code wurden verbessert. Es wurde die Möglichkeit hinzugefügt, den Text diagnostischer Meldungen und Popup-Fenster mit dem zugehörigen Code anzuzeigen. Zudem wird die Verarbeitung diagnostischer Nachrichten unterstützt, die vom LSP-Server übermittelt werden.
  • Unterstützung für virtuelle Zeilen wurde hinzugefügt, die beispielsweise zur Anzeige von Informationselementen genutzt werden können.
  • Es wurden verschiedene Leistungsoptimierungen vorgenommen, beispielsweise wird eine Hashtabelle für hervorgehobene Gruppennamen verwendet.
  • Die Unterstützung für Windows 7 und 32-Bit-Versionen von Windows wurde eingestellt.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster