Release fan Neovim 0.6.0, in modernisearre ferzje fan 'e Vim-bewurker

Neovim 0.6.0 is frijlitten, in gabel fan 'e Vim-bewurker rjochte op it fergrutsjen fan útwreidzjen en fleksibiliteit. It projekt hat de Vim-koadebasis foar mear as sân jier werwurke, as gefolch dêrfan wurde feroaringen makke dy't koade-ûnderhâld ferienfâldigje, in middel leverje om arbeid te dielen tusken ferskate ûnderhâlders, de ynterface skiede fan it basisdiel (de ynterface kin wêze feroare sûnder de ynterne te berikken) en implementearje in nije útwreide arsjitektuer op basearre op plugins. De orizjinele ûntwikkelingen fan it projekt wurde ferspraat ûnder de Apache 2.0-lisinsje, en it basisdiel wurdt ferspraat ûnder de Vim-lisinsje. Ready-made gearkomsten wurde taret foar Linux (appimage), Windows en macOS.

Ien fan 'e problemen mei Vim dy't de skepping fan Neovim oanmoedige wie syn opblaasde, monolityske koadebasis, besteande út mear as 300 tûzen rigels fan C (C89) koade. Allinich in pear minsken begripe alle nuânses fan 'e Vim-koadebase, en alle wizigingen wurde regele troch ien ûnderhâlder, wat it dreech makket om de bewurker te behâlden en te ferbetterjen. Ynstee fan de koade ynboud yn 'e Vim-kearn om de GUI te stypjen, stelt Neovim foar om in universele laach te brûken wêrmei jo ynterfaces kinne meitsje mei ferskate toolkits.

Plugins foar Neovim wurde lansearre as aparte prosessen, foar ynteraksje wêrmei it MessagePack-formaat wurdt brûkt. Ynteraksje mei plugins wurdt asynchronysk útfierd, sûnder de basiskomponinten fan 'e bewurker te blokkearjen. Om tagong te krijen ta de plugin kin in TCP-socket brûkt wurde, d.w.s. de plugin kin wurde útfierd op in ekstern systeem. Tagelyk bliuwt Neovim efterút kompatibel mei Vim, bliuwt Vimscript stypje (Lua wurdt oanbean as alternatyf) en stipet ferbiningen foar de measte standert Vim-plugins. De avansearre funksjes fan Neovim kinne brûkt wurde yn plugins boud mei Neovim-spesifike API's.

Op it stuit binne sawat 130 spesifike plugins al taret, bindingen binne beskikber foar it meitsjen fan plugins en ymplemintaasje fan ynterfaces mei ferskate programmeartalen (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) en kaders (Qt, ncurses, Node .js, Electron, GTK). Ferskate opsjes foar brûkersynterface wurde ûntwikkele. GUI-tafoegings binne folle as plugins, mar yn tsjinstelling ta plugins, begjinne se oproppen nei Neovim-funksjes, wylst plugins fanút Neovim wurde neamd.

Guon fan 'e feroaringen yn' e nije ferzje:

  • В vim-скрипты добавлена поддержка локальных переменных, область видимости для которых ограничена только текущим скриптом.
  • Значительно улучшена поддержка языка Lua для разработки плагинов и управления конфигурацией. В vim-скриптах добавлена возможность вызова Lua-функций как методов через указание префикса v:lua (например, «arg1->v:lua.somemod.func(arg2)»).
  • Расширены возможности встроенного LSP-клиента (Language Server Protocol), который можно использовать для выноса логики анализа и автодополнения кода на внешние серверы. Применение LSP позволяет использовать более 150 готовых обработчиков для различных языков программирования, подготовленных для редактора кода Visual Studio Code.
  • Улучшены средства диагностики проблем в коде. Добавлена возможность вывода текста диагностических сообщений и плавающих окон с кодом, связанным с подобными сообщениями. Обеспечена обработка диагностических сообщений, передаваемых LSP-сервером.
  • Добавлена поддержка виртуальных строк, которые могут использоваться, например, для вывода блоков со служебной информацией.
  • Внесены различные оптимизации производительности, например, задействована хэш таблица для подсвечиваемых имён групп.
  • Прекращена поддержка Windows 7 и 32-разрядных сборок для Windows.

Boarne: opennet.ru

Add a comment