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

Neovim 0.7.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.

De nije ferzje biedt inisjele stipe foar wurk op ôfstân, wêrtroch jo Neovim op 'e tsjinner kinne útfiere en dêrmei ferbine fan it kliïntsysteem mei in aparte ui_client. Oare feroarings omfetsje: stipe foar Python 2 is stopset, it brûken fan Lua-funksjes yn keymap is tastien, nije kommando's binne tafoege oan de API, de mooglikheid om de Lua-taal te brûken foar it ûntwikkeljen fan plugins en konfiguraasjebehear is signifikant útwreide, ark foar diagnoaze fan problemen yn koade binne ferbettere, stipe foar de globale statusbalke is tafoege, prestaasjesoptimalisaasjes binne útfierd. De mooglikheden fan 'e ynboude LSP-kliïnt (Language Server Protocol) binne útwreide, dy't brûkt wurde kinne om de analyselogika en koadefoltôging oer te bringen nei eksterne servers.

Boarne: opennet.ru

Add a comment